Project

General

Profile

Bug #1858

mod_upload_progress does not handle connection reset

Added by stepancheg over 8 years ago. Updated about 1 year ago.

Status:
Obsolete
Priority:
Normal
Assignee:
-
Category:
mod_uploadprogress
Target version:
Start date:
2008-12-24
Due date:
% Done:

0%

Estimated time:
Missing in 1.5.x:
Yes

Description

mod_upload_progress does not handle connection reset (for example, when client closes browser window). After connection reset mod_upload_progress GET progress-url could output random progress on reset connection. This happens because after connection reset

connection_map_entry->con

could point do different connection.

Attaching two patches, to reproduce problem and to fix.

To reproduce problem:

1. apply repr.diff
2. start lighttpd with config testing/l.conf
3. run testing/get.py script
4. open http://server:10103/up.html in browser, and submit large file
5. interrupt uploading by closing browser window

Lighttpd will exit(1), because GET /process finds current connection in connection map, that must not occur.

repr.diff (13 KB) repr.diff How to reproduce stepancheg, 2008-12-24 17:44
fix.diff (1.76 KB) fix.diff How to fix stepancheg, 2008-12-24 17:44

Associated revisions

Revision 3d98e0b6 (diff)
Added by gstrauss about 1 year ago

[mod_uploadprogress] fix mem leak (#1858)

fix memory leak
reduce code redundancy
convert code to use newer buffer.h APIs
proper cleanup if upload cancelled or client disconnected
change "starting" message to "not in progress" if upload not in progress

History

#1 Updated by stepancheg over 8 years ago

Seems like we've forgotten about timeouts in fix.diff.

#2 Updated by icy over 8 years ago

  • Status changed from New to Assigned
  • Assignee set to stbuehler

Very nice bug report. Thank you stepancheng!
Did you use the latest revision while developing the patches? Always helpful to know the rev. :)

#3 Updated by stepancheg over 8 years ago

icy wrote:

Did you use the latest revision while developing the patches? Always helpful to know the rev. :)

We use trunk, yes. Tested on r2367.

#4 Updated by stepancheg over 8 years ago

stepancheg wrote:

Seems like we've forgotten about timeouts in fix.diff.

I lied. We did NOT forget about timeouts, sorry.

#5 Updated by stepancheg over 8 years ago

In fix.diff we've set hooks on both connection_close and conneciton_reset, because connection_reset hook is not called on connection interruption while uploading. We believe, it is a bug.

#6 Updated by icy over 8 years ago

  • Target version set to 1.5.0

#7 Updated by stbuehler over 2 years ago

  • Assignee deleted (stbuehler)

#8 Updated by gstrauss about 1 year ago

  • Missing in 1.5.x set to Yes

#9 Updated by gstrauss about 1 year ago

  • Status changed from Assigned to Obsolete

Also available in: Atom