Ticket UUID: | 3581754 | |||
Title: | EOF detection when a server closes a keep-alive connection | |||
Type: | Bug | Version: | obsolete: 8.5.12 | |
Submitter: | kjnash | Created on: | 2012-10-30 02:57:47 | |
Subsystem: | 29. http Package | Assigned To: | patthoyts | |
Priority: | 8 | Severity: | Minor | |
Status: | Closed | Last Modified: | 2018-04-12 14:05:45 | |
Resolution: | None | Closed By: | kjnash | |
Closed on: | 2018-04-12 14:05:45 | |||
Description: |
If http::geturl is called with -keepalive 1 and a -command that enters the event loop (e.g for an authorization dialog), and the HTTP response includes a "Content-Length" header, then a (slow) race condition ensues between the server's closing of the connection, and the user's response to the dialog. If the connection is closed first, the unpatched code fails at line 1126 with repeated eof fileevents, because the command http::Eof tries repeatedly to run the user's -command, and never returns. This can be reported as "too many nested evaluations". While it might not be good style to allow the -command script to enter the event loop, http(n) does not exclude this possibility. There's more than one way to fix the bug. Two possible patches are attached. EIther will fix the bug; both fixes can be applied. Patches against core-8-5-branch checkin 69687a01db, dated 2012-10-24 11:28:33. | |||
User Comments: |
kjnash added on 2018-04-12 14:05:45:
Thanks for the fix. I've closed the ticket. dkf added on 2012-11-06 17:41:39: Applied variation on Fix 2 (don't use [unset], but rather another flag var in the state). dkf added on 2012-11-06 17:20:37: Fix 2 should probably be applied anyway. That's the thing to apply for 8.5.13 (and I'll get that in in a few minutes). Fix 1 is more interesting (and doesn't mean that Fix2 shouldn't be used as well) but it requires review by someone who knows more about the http package's functioning in the presence of keepalives. dgp added on 2012-11-06 01:20:19: Please report whether these patches, or some other resolution of this item is needed before a Tcl 8.5.13 release. kjnash added on 2012-10-30 10:02:09: File Added - 455665: http-fix2-for--69687a01db.patch kjnash added on 2012-10-30 09:57:49: File Added - 455664: http-fix1-for--69687a01db.patch |