Tcl Source Code

View Ticket
Login
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

Attachments: