Tcl Source Code

Ticket Change Details
Login
Overview

Artifact ID: 8179f124fb728b3dbbc67c7dfbf8af876730787e
Ticket: c11a51c482ba5720793d44340f76934c59718780
Configuration race condition in accept types
User & Date: dkf 2014-07-06 17:13:33
Changes

  1. assignee changed to: "nobody"
  2. closer changed to: "nobody"
  3. cmimetype changed to: "text/html"
  4. comment changed to:
    If you're using the http package to do REST with content type negotiation, you need to configure the package's <tt>Accept:</tt> types mechanism from time to time. This is a bit of a broken API, in that there's no option to override from options passed to <tt>http::geturl</tt>. This is not the feature change I'm requesting.
    <p>
    <i>However,</i> if you're also using asynchronous connecting then you've got an additional problem in that the configuration of the <tt>-accept</tt> option is only read when the connection is made; two connections that require different <tt>Accept:</tt> headers will have a race condition between the two, and so which is used will be pretty much random. <b>This Is Wrong.</b> This is the bug I'm reporting.
    <p>
    Suggested fix, <i>without fixing the original API botch,</i> is to take a copy of <tt>$http(-accept)</tt> into the <tt>state</tt> array during <tt>http::geturl</tt> so that the value used in <tt>http::Connected</tt> is predictable.
    <p>
    See also: <a href="http://www.kroc.tk/forum/index.php?t=msg&th=1041&goto=5213&#msg_5213">this thread</a> with the comment that prompted me to look into the potential feature request, and discover the race:
    <blockquote><tt><i>Ok well the final solution was that using -headers in the http::geturl doesn't seem to work when setting an "Accept" header - which kind of sucks…</i></tt></blockquote>
    
  5. foundin changed to: "http 2.8.8"
  6. is_private changed to: "0"
  7. login: "dkf"
  8. priority changed to: "5 Medium"
  9. resolution changed to: "None"
  10. severity changed to: "Minor"
  11. status changed to: "Open"
  12. submitter changed to: "dkf"
  13. subsystem changed to: "29. http Package"
  14. title changed to: "Configuration race condition in accept types"
  15. type changed to: "Bug"