Ivan Zhakov <i...@visualsvn.com> writes:

> Problem with this approach that some servers may support HTTP/1.1
> partially. I.e. declare them as HTTP/1.1 but do not support chunked
> Transfer-Encoding.
>
> I wanted to avoid downgrade to HTTP/1.0 on later requests because it
> could introduce requests ordering issue. For example:
> C: HTTP/1.0 OPTIONS /
> S: HTTP/1.1 Response
>
> C: HTTP/1.1 PROPFIND
> C: HTTP/1.1 GET
> S: HTTP/1.1 411 Length required
> S: HTTP/1.0 200 OK
>
> Then client send PROPFIND request again:
> C: HTTP/1.0 PROPFIND
> S: HTTP/1.1 200 OK
>
> But requests was completed and different order than our update editor
> expected and most likely crash :(

Suppose serf were to keep track of the number of outstanding requests
(it may already do that I haven't checked).  Then if the number of
outstanding requests is zero when the 411 is received the downgrade to
HTTP/1.0 will be OK.  Lots of client operations start with multiple
requests in serial before switching to pipelined requests, so in all
those cases the downgrade will work.

-- 
Philip Martin | Subversion Committer
WANdisco | Non-Stop Data
www.wandisco.com

Reply via email to