|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [MirageOS-devel] Cohttp, and the SSL saga update
On 14 Apr 2014, at 00:14, Thomas Gazagnaire <thomas@xxxxxxxxxxxxxx> wrote:
>> Thomas, you also mentioned you ran across a potential HTTP chunked POST
>> issue in Irminsule -- any more details on that?
>
> Haven't got the time to dig into it (so that might be unrelated ...) but
> that's easy to repro with cohttp.0.10 and 0.11:
>
> $ opam install irminsule
> $ git init && touch c && git add c && git commit -a -m toto
> $ git irmin -d -g
>
I assume this is `irmin init -d -g` here?
> open a browser, points to localhost:8080/watch
>
> 1st issue: we should see [ but this never appears in chrome and appears
> sometime in safari
>
> and back in the terminal:
>
> $ for i in `seq 1 10`; do echo foo >> c && git commit -a -m bar; sleep 1; done
>
> 2st: still nothing appears on chrome, sometime safari shows something
>
> It might be an issue with the response headers set by the irminsule server
> though.
I ran this with
$ COHTTP_DEBUG=1 irmin init -d -g
and noticed this in the output:
30256 <<< GET /watch HTTP/1.1
30256 <<< Host: localhost:8080
30256 <<< Connection: keep-alive
30256 <<< Cache-Control: max-age=0
30256 <<< Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
30256 <<< User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
30256 <<< Accept-Encoding: gzip,deflate,sdch
30256 <<< Accept-Language: en-US,en;q=0.8
30256 <<<
30256 >>> HTTP/1.1 200 OK
30256 >>> content-type: application/json
30256 >>> transfer-encoding: chunked
30256 >>>
30256 >>> 1
30256 >>> [
30256 >>>
30256 >>> 3b
30256 >>> {"result":[[],"e5e8dc7a85dfd473e7ff6b939b0ac2ea52cc7941"]},
30256 >>>
30256 >>> 3b
30256 >>> {"result":[[],"37b278fa95d852e5530b5f07e08a0bec7c0daa74"]},
30256 >>>
30256 >>> 3b
30256 >>> {"result":[[],"a6964ce27d0e93d8ffc3cb91b419136312af5c41"]},
30256 >>>
The JSON you're transmitting in each chunk is incremental. Shouldn't every
response chunk be standalone parseable?
Also, I'm not sure that this sort of long-lived connection will work outside an
Javascript request, since the client will be buffering and waiting for a
0-length chunk for the end of the connection. Chrome is probably just waiting
rather than doing an incremental rendering. If you stick some Javascript on
/watch and try a long poll it will probably work better.
TL;DR: Cohttp has no bugs! It's perfect!
-anil
_______________________________________________
MirageOS-devel mailing list
MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |