Project

General

Profile

Actions

Bug #896

closed

partial transfer is racey (testcase provided)

Added by ferringb over 18 years ago. Updated about 1 year ago.

Status:
Fixed
Priority:
Normal
Category:
core
Target version:
-
ASK QUESTIONS IN Forums:
No

Description

First... can't trigger this remotely, so requires getting having the file locally; not sure of the underlying reason.

second; need to grab the file http://dev.gentooexperimental.org/~pkgcore/bzr/.bzr/repository/signatures.knit
third, need netcat, and script that is attached; heavier the load, more likely the failure.

This occurs for at least 1.4.13, 1.4.11; haven't tested below, but suspect it's a long standing failure due to other 206 errors.


Files

testcase.sh (3.36 KB) testcase.sh testcase.sh ferringb, 2006-10-25 06:49
Actions #1

Updated by ferringb over 18 years ago

Finally... would provide an strace'ing, except that seems to be perturb it enough for it to succeed.

Actions #2

Updated by gstrauss about 9 years ago

  • Description updated (diff)
  • Status changed from New to Need Feedback

Presumably, http://dev.gentooexperimental.org/~pkgcore/bzr/.bzr/repository/signatures.knit has changed size since your post 9 years ago.

What version of lighttpd are (were) you using?
What is your lighttpd.conf?
How was your lighttpd built? (--with-mmap=yes?) (how is the file being sent?)

What is the error you are seeing? The test script you provided greps for Content-Range, so presumably it has something to do with that.
Is it possible that signatures.knit changed during your test?

Given that you're describing a race condition, your lighttpd version, lighttpd.conf and how lighttpd was built are important to figuring this out.

Of course, first thing to check is: is this still an issue with lighttpd 1.4.39? :)

Actions #3

Updated by gstrauss almost 9 years ago

  • Status changed from Need Feedback to Missing Feedback

If this is still an issue, please reopen ticket and add some updated info. Thanks.

Actions #4

Updated by gstrauss about 1 year ago

  • Status changed from Missing Feedback to Fixed
  • ASK QUESTIONS IN Forums set to No

For a long time now, lighttpd reuses a single open file descriptor to the file for multiple ranges in HTTP range requests.

Very old versions of lighttpd might have added separate FILE_CHUNKs for each range to the response write_queue, and re-opened the file to serve each range, which has a race condition if the file is replaced during the response processing.

Actions

Also available in: Atom