GithubHelp home page GithubHelp logo

Comments (30)

samoconnor avatar samoconnor commented on August 25, 2024 2

FWIW, I've just repeated this text against my own Phillips Hue bridge with the same result (a different random amount of data is returned each time).

from http.jl.

samoconnor avatar samoconnor commented on August 25, 2024 1

Hi @cormullion, I think its very valuable to have issue reports relating to IOT devices. Testing with the big 3 desktop/server OSs is good, but the variety of different TPC/IP and HTTP implementations that is out there on embedded devices is huge. Embedded devices tend to have different timing behaviour and different message fragmentation behaviour due to slow micros and small RAM size. It's important to handle them gracefully even if they are not all HTTP compliant.

(BTW: I have hue lights here, so I could test stuff if needed...)

from http.jl.

quinnj avatar quinnj commented on August 25, 2024 1

@samoconnor thank you thank you thank you for posting the debug output! I think I have a better idea of what's going on here. For cases where the server doesn't send an explicit Content-Length, the protocol states to read until the connection is closed. We were correctly identifying the protocol state (that we should wait until the connection was closed), but we weren't waiting. As soon as we hit that state, we returned, thus leaving bytes on the wire.

If someone could pull #103 and try it out, I'd really appreciate it. Unfortunately httpbin.org is having issues right now, so I'm having a hard time testing this change out, but I'd love to hear if it solves the issue here.

from http.jl.

quinnj avatar quinnj commented on August 25, 2024

You'll have to give a little information as to what seems to be wrong; all I see are two GET requests that both returned 200s. One thing in particular that can be helpful is to run HTTP.get(...; verbose=true) to see the exact sequence of events while making the request.

from http.jl.

cormullion avatar cormullion commented on August 25, 2024

Oh, sorry. The Requests version of get returns 1488 bytes of information, the HTTP one doesn't appear to return any. I had thought it might be a straightforward swap, but I see it obviously isn't.. No worries, I'll stay with Requests! :)

from http.jl.

quinnj avatar quinnj commented on August 25, 2024

I'm more than happy to help debug what's going on; like I mentioned, posting the results of HTTP.get(...; verbose=true) is a good first step to see what's happening in the actual request. Also, if it's possible to share a public version of the request you're trying to make, I can try to debug further why there's a difference here.

from http.jl.

cormullion avatar cormullion commented on August 25, 2024

Cool, thanks. The code (using Requests) is all here. It controls my lights — it would be cool if you could access it from where you are, but perhaps a bit worrying as well... :)

From Requests I get:

julia> response = Requests.get("http://192.168.1.3/api/lSsXQfrm7rC32SQ0/lights/")
Response(200 OK, 14 headers, 1493 bytes in body)

julia> String(response)
"{\"2\":{\"state\":{\"on\":true,\"bri\":254,\"hue\":14988,\"sat\":141,\"effect\":\"none\",\"xy\":[0.4575,0.4101],\"ct\":365,\"alert\":\"none\",\"colormode\":\"xy\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Living room south\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:f6:af:3d-0b\",\"swversion\":\"5.23.1.13452\"},\"3\":{\"state\":

...

uniqueid\":\"00:17:88:01:00:d0:e5:1f-0b\",\"swversion\":\"5.23.1.13452\"}}"

And from HTTP I get:

julia> response = HTTP.get("http://192.168.1.3/api/lSsXQfrm7rC32SQ0/lights/", verbose=true)
[HTTP - 2017-06-12T15:59:26.576]: using default client
[HTTP - 2017-06-12T15:59:26.576]: using request options: :chunksize=>1048576, :gzip=>true, :connecttimeout=>15.0, :readtimeout=>15.0, :tlsconfig=>MbedTLS.SSLConfig(), :maxredirects=>5, :allowredirects=>true, :forwardheaders=>false, :retries=>3
[HTTP - 2017-06-12T15:59:26.576]: checking if any existing connections to '192.168.1.3' are re-usable
[HTTP - 2017-06-12T15:59:26.576]: found dead connection #40 to delete
[HTTP - 2017-06-12T15:59:26.59]: created new connection #41 to '192.168.1.3'
[HTTP - 2017-06-12T15:59:26.59]: sending request over the wire
HTTP.Request:
"""
GET /api/lSsXQfrm7rC32SQ0/lights/ HTTP/1.1
Host: 192.168.1.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json
User-Agent: HTTP.jl/0.0.0

"""
[HTTP - 2017-06-12T15:59:26.59]: waiting for response; will timeout afer 15.0 seconds
[HTTP - 2017-06-12T15:59:26.665]: received bytes from the wire, processing
[HTTP - 2017-06-12T15:59:26.665]: waiting for response; will timeout afer 15.0 seconds
[HTTP - 2017-06-12T15:59:26.666]: received bytes from the wire, processing
[HTTP - 2017-06-12T15:59:26.667]: waiting for response; will timeout afer 15.0 seconds
[HTTP - 2017-06-12T15:59:26.667]: received bytes from the wire, processing
[HTTP - 2017-06-12T15:59:26.668]: closing connection (no keep-alive)
[HTTP - 2017-06-12T15:59:26.67]: received response
HTTP.Response:
"""
HTTP/1.1 200 OK
Connection: close
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Content-type: application/json
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Mon, 1 Aug 2011 09:00:00 GMT
Content-Length: 1
Pragma: no-cache
Access-Control-Max-Age: 3600
Access-Control-Allow-Headers: Content-Type

{
"""
HTTP.Response:
"""
HTTP/1.1 200 OK
Connection: close
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Content-type: application/json
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Mon, 1 Aug 2011 09:00:00 GMT
Content-Length: 1
Pragma: no-cache
Access-Control-Max-Age: 3600
Access-Control-Allow-Headers: Content-Type

{
"""

julia> String(response)
"{"

from http.jl.

staticfloat avatar staticfloat commented on August 25, 2024

@cormullion if you could get a packet trace using something like Wireshark, I think that might be helpful here so we can compare exactly what goes back and forth.

from http.jl.

cormullion avatar cormullion commented on August 25, 2024

I will give it a go...

iur

from http.jl.

cormullion avatar cormullion commented on August 25, 2024

I eventually got Wireshark working, but didn't really know what to look for. Will keep at it.

It seems to me that HTTP.get is doing something that gives different length results each time; the equivalent Requests.get looks like it does the same thing each time for the same request:

for i in 1:10
    @show HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String |> length
    sleep(2)
end
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 0
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 132
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 534
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 56
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 132
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 0
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 0
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 0
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 11
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 132

for i in 1:10
    @show readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length
    sleep(2)
end
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756

from http.jl.

staticfloat avatar staticfloat commented on August 25, 2024

Is it possible for you to expose this web service to the outside world so that we can hit it as well?

from http.jl.

staticfloat avatar staticfloat commented on August 25, 2024

Regarding Wireshark, if you can just record on your machine while you run those commands in Julia, then save a .pcap file containing all the packet data and post that here, that would be helpful so we can see what is going wrong.

from http.jl.

cormullion avatar cormullion commented on August 25, 2024

Here's a pcap file made in Wireshark of the following two Julia commands:

julia> readstring(Requests.get("http://192.168.1.3/api/PHtB7h1lkkDScH9Ln4JJpeke3V3lIqZMV9Ry5PkQ/"))

julia> HTTP.get("http://192.168.1.3/api/PHtB7h1lkkDScH9Ln4JJpeke3V3lIqZMV9Ry5PkQ/")

The first one appears to work, the second one only returns some of the information.

from http.jl.

staticfloat avatar staticfloat commented on August 25, 2024

@quinnj I don't know if you're very familiar with Wireshark, but there's a few interesting nuggets here.

First off, the HTTP request being made by both libraries looks to me to be essentially identical. Sure, there are different User-Agents, and HTTP.jl actually says it can accept application/json whereas Requests.jl does not say it can, but I don't think these are the interesting parts. The interesting part to me is that HTTP.jl does not receive a full response! The TCP stream is cutoff mid-transmission because the server stops sending back. The server stops sending because HTTP.jl sends a TCP RST packet, out of the blue:

screen shot 2017-08-13 at 3 31 59 pm

I don't know why this would happen, but it definitely looks to me like something is calling close() on a socket prematurely. For completeness, here are the TCP streams I got out of Wireshark for the two responses.

from http.jl.

samoconnor avatar samoconnor commented on August 25, 2024

bump
@cormullion Was this issue resolved?
I'm considering moving AWSCore.jl to HTTP.jl, but @staticfloat 's suggestion that close() is being called prematurely is a worry.
I would rather stick with Requests.jl if there are reliability regressions.

from http.jl.

cormullion avatar cormullion commented on August 25, 2024

I haven't tried it again, but I didn't know whether it was just a Philips Hue interface quirk or a strange entanglement with Http.jl. Will look again next week.

from http.jl.

quinnj avatar quinnj commented on August 25, 2024

@staticfloat, a big thanks for looking into this. Definitely weird that the premature close seems to be happening. Could you check again w/ latest master? I just merged in an overhaul of the client-side code that aims to be quite a bit more careful w/ error-handling and connection management.

Also, would you be willing to share how you were able to reproduce? I'd like to be able to take a look myself locally.

from http.jl.

cormullion avatar cormullion commented on August 25, 2024

@quinnj I can try running my original code against the latest (using Pkg.checkout(...master)?) but it won't be before next week when I get back.

Update

On HTTP master and Julia v0.6, this time the same HTTP.get request stall/hangs, so I Ctrl-C out after 10 minutes. Output:

julia> HTTP.get("http://192.168.1.3/api/PHtB7h1lkkDScH9Ln4JJpeke3V3lIqZMV9Ry5PkQ/", verbose=true)
[HTTP - 2017-08-27T09:11:25.778]: using request options: :chunksize=>1048576, :gzip=>true, :connecttimeout=>15.0, :readtimeout=>15.0, :tlsconfig=>nothing, :maxredirects=>5, :allowredirects=>true, :forwardheaders=>false, :retries=>3, :managecookies=>true, :statusraise=>true
[HTTP - 2017-08-27T09:11:25.911]: making GET request for host: '192.168.1.3' and resource: '/api/PHtB7h1lkkDScH9Ln4JJpeke3V3lIqZMV9Ry5PkQ/'
[HTTP - 2017-08-27T09:11:25.916]: checking if any existing connections to '192.168.1.3' are re-usable
[HTTP - 2017-08-27T09:11:25.927]: found dead connection #1 to delete
[HTTP - 2017-08-27T09:11:25.949]: created new connection #2 to '192.168.1.3'
[HTTP - 2017-08-27T09:11:25.95]: sending request over the wire
HTTP.Request:

GET /api/PHtB7h1lkkDScH9Ln4JJpeke3V3lIqZMV9Ry5PkQ/ HTTP/1.1
Host: 192.168.1.3:80
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json
User-Agent: HTTP.jl/0.0.0


[HTTP - 2017-08-27T09:11:25.973]: received bytes from the wire, processing
[HTTP - 2017-08-27T09:11:25.974]: received bytes from the wire, processing
[HTTP - 2017-08-27T09:11:25.975]: received bytes from the wire, processing
[HTTP - 2017-08-27T09:11:25.976]: closing connection (no keep-alive)
[HTTP - 2017-08-27T09:11:25.976]: received response
HTTP.Response:
"""
HTTP/1.1 200 OK
Connection: close
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
Expires: Mon, 1 Aug 2011 09:00:00 GMT
Access-Control-Allow-Headers: Content-Type
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Access-Control-Allow-Credentials: true
Content-Type: application/json
Access-Control-Allow-Origin: *
Pragma: no-cache
Access-Control-Max-Age: 3600


^CError showing value of type HTTP.Response:
ERROR: InterruptException:
process_events at ./libuv.jl:82 [inlined]
wait() at ./event.jl:216
wait(::Condition) at ./event.jl:27
read(::HTTP.FIFOBuffers.FIFOBuffer, ::Int64) at /Users/me/.julia/v0.6/HTTP/src/fifobuffer.jl:144
macro expansion at /Users/me/.julia/v0.6/HTTP/src/types.jl:309 [inlined]
(::HTTP.##17#18{Base.AbstractIOBuffer{Array{UInt8,1}},HTTP.Response})() at ./task.jl:335
Stacktrace:
 [1] sync_end() at ./task.jl:287
 [2] macro expansion at ./task.jl:303 [inlined]
 [3] body(::Base.AbstractIOBuffer{Array{UInt8,1}}, ::HTTP.Response, ::HTTP.RequestOptions) at /Users/me/.julia/v0.6/HTTP/src/types.jl:304
 [4] #show#19(::HTTP.RequestOptions, ::Function, ::IOContext{Base.Terminals.TTYTerminal}, ::HTTP.Response) at /Users/me/.julia/v0.6/HTTP/src/types.jl:347
 [5] display(::Base.REPL.REPLDisplay{Base.REPL.LineEditREPL}, ::MIME{Symbol("text/plain")}, ::HTTP.Response) at /Users/me/.julia/v0.6/OhMyREPL/src/output_prompt_overwrite.jl:8
 [6] display(::Base.REPL.REPLDisplay{Base.REPL.LineEditREPL}, ::HTTP.Response) at ./REPL.jl:125
 [7] display(::HTTP.Response) at ./multimedia.jl:194
 [8] eval(::Module, ::Any) at ./boot.jl:235
 [9] print_response(::Base.Terminals.TTYTerminal, ::Any, ::Void, ::Bool, ::Bool, ::Void) at ./REPL.jl:144
 [10] print_response(::Base.REPL.LineEditREPL, ::Any, ::Void, ::Bool, ::Bool) at ./REPL.jl:129
 [11] (::Base.REPL.#do_respond#16{Bool,Base.REPL.##26#36{Base.REPL.LineEditREPL,Base.REPL.REPLHistoryProvider},Base.REPL.LineEditREPL,Base.LineEdit.Prompt})(::Base.LineEdit.MIState, ::Base.AbstractIOBuffer{Array{UInt8,1}}, ::Bool) at ./REPL.jl:646


from http.jl.

cormullion avatar cormullion commented on August 25, 2024

Unrelated problem suggests that I'm better off with Requests at the moment. Closing for now, will revisit later this year.

from http.jl.

samoconnor avatar samoconnor commented on August 25, 2024

@quinnj Perhaps this issue should be left open (renamed to "HTTP.get request stall/hangs")?
Or is it the same as #85 ?

from http.jl.

cormullion avatar cormullion commented on August 25, 2024

@samoconnor I thought perhaps it was just the Hue light interface causing problems. If it's a more general issue, perhaps it's another datapoint.

from http.jl.

evanfields avatar evanfields commented on August 25, 2024

@cormullion Is it making the request that was hanging, or just printing the response? A few days ago I encountered hanging when printing the Response objects resulting from a HTTP.get to the Hue bridge, but I think that's fixed on latest master.

The issue with subsequent requests getting truncated, apparently due to an early close call, still persists for me.

Maybe we need to pitch in to get quinnj a Hue setup :)

from http.jl.

quinnj avatar quinnj commented on August 25, 2024

Has anyone been able to try this/seen any issues on latest HTTP master? It'd be great if we had a repro here to dig into.

from http.jl.

cormullion avatar cormullion commented on August 25, 2024

Yes I find the same problems. For example, each time I query the box I get different amounts of the status info returned.

julia> HTTP.get("http://192.168.1.3/api/$pw/") |> String
"{\"lights\":{\"2\":{\"state\":{\"on\":true,\"bri\":215,\"hue\":13548,\"sat\":200,\"effect\":\"none\",\"xy\":[0.5015,0.4153],\"ct\":443,\"alert\":\"none\",\"colormode\":\"xy\",\"reachable\":true},
\"type\":\"Extended color light\",\"name\":\"Living room
south\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:e6:9f:3d-0b\",\"swversion\":\"5.23.1.13452\"},\"3\":{\"state\":{\"on\":true,\"bri\":215,\"hue\":13548,\"sat\":200,\"effect\":\"none\",\"xy\":[0.5015,0.4153],\"ct\":443,\"alert\":\"none\",\"colormode\":\"xy\",\"reachable\":"

julia> HTTP.get("http://192.168.1.3/api/$pw/") |> String
"{\"lights\":{"

julia> HTTP.get("http://192.168.1.3/api/$pw/") |> String
"{\"lights\":{\"2\":{\"state\":{\"on\":true,\"bri\":215,\"hue\":13548,\"sat\":200,\"effect\":\"none\",\"xy\":[0.5015,0.4153],\"ct\":443,\"alert\":\"none\",\"colormode\":\"xy\",\"reachable\":true},\"type\":\"Extended
color light\",\"name\":\"Living room
south\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:e6:9f:3d-0b\",\"swversion\":\"5.23.1.13452\"},\"3\":{\"state\":{\"on\":true,\"bri\":215,\"hue\":13548,\"sat\":200,\"effect\":\"none\",\"xy\":[0.5015,0.4153],\"ct\":443,\"alert\":\"none\",\"colormode\":\"xy\",\"reachable\":true},\"type\":\"Extended
color light\",\"name\":\"Living room
North\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:d0:e5:20-0b\",\"swversion\":\"5.23.1.13452\"},\"5\":{\"state\":{\"on\":true,\"bri\":215,\"alert\":\"none\",\"reachable\":true},\"type\":\"Dimmable
light\",\"name\":\"Hall
kitchen\",\"modelid\":\"LWB004\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:e4:e1:8f-0b\",\"swversion\":\"5.38.2.19136\"},"

julia> Pkg.status("HTTP")
 - HTTP                          0.4.3+             master
 

from http.jl.

quinnj avatar quinnj commented on August 25, 2024

I just merged a fix for an issue that may be related to this one; in case anyone is willing to try to reproduce this again on current master.

from http.jl.

cormullion avatar cormullion commented on August 25, 2024

I'm not seeing any improvement on my particular problem box... :( Sorry...!

julia> for i in 1:10
           @show HTTP.get("http://192.168.1.3/api/$pw") |> String |> length
           sleep(2)
       end
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 309
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 335
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 11
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 336
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 11
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 336
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 661
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 11
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 434
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 171

julia> for i in 1:10
           @show readstring(Requests.get("http://192.168.1.3/api/$pw/")) |> length
           sleep(2)
       end
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271

julia> Pkg.status("HTTP")
 - HTTP                          0.5.0+             master

from http.jl.

samoconnor avatar samoconnor commented on August 25, 2024
julia> r = HTTP.get("http://192.168.0.103/api/XXXXXXXXXXX/lights"; verbose=true) |> String
[HTTP - 2017-10-26T22:05:54.506]: using request options:
	:chunksize=>nothing
	:gzip=>true
	:connecttimeout=>15.0
	:readtimeout=>15.0
	:tlsconfig=>nothing
	:maxredirects=>5
	:allowredirects=>true
	:forwardheaders=>false
	:retries=>3
	:managecookies=>true
	:statusraise=>true
	:insecure=>false
[HTTP - 2017-10-26T22:05:54.506]: making GET request for host: '192.168.0.103' and resource: '/api/U1SO4C6ezdhW159bihAJNSCZQz9NBotGJqF-bVPr/lights'
[HTTP - 2017-10-26T22:05:54.506]: checking if any existing connections to '192.168.0.103' are re-usable
[HTTP - 2017-10-26T22:05:54.517]: found dead connection #1 to delete
[HTTP - 2017-10-26T22:05:54.558]: created new connection #2 to '192.168.0.103'
[HTTP - 2017-10-26T22:05:54.558]: sending request over the wire

HTTP.Request:

GET /api/U1SO4C6ezdhW159bihAJNSCZQz9NBotGJqF-bVPr/lights HTTP/1.1
Host: 192.168.0.103:80
User-Agent: HTTP.jl/0.0.0


[HTTP - 2017-10-26T22:05:54.571]: received bytes from the wire, processing
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: len = 17
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_start_req_or_res
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = H
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_start_req_or_res
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:57   ]: onmessagebegin
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = T
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_or_resp_H
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = T
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_HT
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = P
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_HTT
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = /
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_HTTP
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_first_http_major
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = .
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_http_major
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_first_http_minor
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_http_minor
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = 2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_first_status_code
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_status_code
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_status_code
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_status_code
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = O
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_status_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = K
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_status
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_status
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:69   ]: onstatus
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_line_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: len = 17
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: p = 18
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: this onbody 3
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: exiting maybe unfinished...
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[HTTP - 2017-10-26T22:05:54.586]: received bytes from the wire, processing
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: len = 402
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = h
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 385
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801573
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 4984801574
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = P
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 5
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 5
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = g
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = m
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 313
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801591
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 4984801592
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = E
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = x
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = x
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = p
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = i
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = M
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 294
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801630
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 4984801631
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 3
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = i
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'l'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 's'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'e'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = M
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = x
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = g
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = 3
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = 6
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '6'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = '6'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 221
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801679
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 4984801680
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = w
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = O
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = i
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = g
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = i
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = *
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = w
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = d
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = i
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = 'r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 149
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801751
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 4984801752
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = w
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = M
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = h
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = d
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = P
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = O
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'O'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = 'O'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 113
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801820
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 4984801821
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = w
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = H
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = d
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 44
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801864
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 4984801865
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 3
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 6
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 6
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 6
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 6
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 6
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = y
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = p
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = p
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'p'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = 'p'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 16
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801896
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: len = 402
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: p = 403
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: this onbody 3
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: exiting maybe unfinished...
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[HTTP - 2017-10-26T22:05:54.653]: received bytes from the wire, processing
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: len = 856
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_headers_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: checking for upgrade...
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: upgrade = false
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:102  ]: onheaderscomplete
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_headers_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_body_identity_eof
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = {
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_body_identity_eof
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: len = 856
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: p = 857
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: this onbody 3
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:103  ]: onbody
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:103  ]: String(r.body) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:103  ]: String(bytes[i:j]) = {\"1\":{\"state\":{\"on\":true,\"bri\":220,\"hue\":61212,\"sat\":210,\"effect\":\"none\",\"xy\":[0.5254,0.2768],\"ct\":497,\"alert\":\"none\",\"colormode\":\"hs\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Stairs Up\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:bf:bd:49-0b\",\"swversion\":\"5.23.1.13452\"},\"2\":{\"state\":{\"on\":true,\"bri\":254,\"hue\":9961,\"sat\":254,\"effect\":\"none\",\"xy\":[0.5715,0.3983],\"ct\":500,\"alert\":\"none\",\"colormode\":\"hs\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Hallway\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:b6:22:32-0b\",\"swversion\":\"5.23.1.13452\"},\"3\":{\"state\":{\"on\":true,\"bri\":254,\"hue\":14910,\"sat\":144,\"effect\":\"none\",\"xy\":[0.4596,0.4105],\"ct\":369,\"alert\":\"none\",\"colormode\":\"ct\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Stairs Down\",\"modelid\":\"LCT001\",
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:103  ]: String(r.body) = {\"1\":{\"state\":{\"on\":true,\"bri\":220,\"hue\":61212,\"sat\":210,\"effect\":\"none\",\"xy\":[0.5254,0.2768],\"ct\":497,\"alert\":\"none\",\"colormode\":\"hs\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Stairs Up\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:bf:bd:49-0b\",\"swversion\":\"5.23.1.13452\"},\"2\":{\"state\":{\"on\":true,\"bri\":254,\"hue\":9961,\"sat\":254,\"effect\":\"none\",\"xy\":[0.5715,0.3983],\"ct\":500,\"alert\":\"none\",\"colormode\":\"hs\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Hallway\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:b6:22:32-0b\",\"swversion\":\"5.23.1.13452\"},\"3\":{\"state\":{\"on\":true,\"bri\":254,\"hue\":14910,\"sat\":144,\"effect\":\"none\",\"xy\":[0.4596,0.4105],\"ct\":369,\"alert\":\"none\",\"colormode\":\"ct\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Stairs Down\",\"modelid\":\"LCT001\",
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: exiting maybe unfinished...
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_body_identity_eof
[HTTP - 2017-10-26T22:05:54.675]: closing connection (no keep-alive)
[HTTP - 2017-10-26T22:05:54.675]: received response
"{\"1\":{\"state\":{\"on\":true,\"bri\":220,\"hue\":61212,\"sat\":210,\"effect\":\"none\",\"xy\":[0.5254,0.2768],\"ct\":497,\"alert\":\"none\",\"colormode\":\"hs\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Stairs Up\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:bf:bd:49-0b\",\"swversion\":\"5.23.1.13452\"},\"2\":{\"state\":{\"on\":true,\"bri\":254,\"hue\":9961,\"sat\":254,\"effect\":\"none\",\"xy\":[0.5715,0.3983],\"ct\":500,\"alert\":\"none\",\"colormode\":\"hs\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Hallway\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:b6:22:32-0b\",\"swversion\":\"5.23.1.13452\"},\"3\":{\"state\":{\"on\":true,\"bri\":254,\"hue\":14910,\"sat\":144,\"effect\":\"none\",\"xy\":[0.4596,0.4105],\"ct\":369,\"alert\":\"none\",\"colormode\":\"ct\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Stairs Down\",\"modelid\":\"LCT001\","

from http.jl.

cormullion avatar cormullion commented on August 25, 2024

exiting maybe unfinished... looks hopeful...?

from http.jl.

samoconnor avatar samoconnor commented on August 25, 2024

Looks stable now:

$ julia -e 'using HTTP; r = HTTP.get("http://192.168.0.103/api/XX/lights") |> String |> length |> println'
10206
$ julia -e 'using HTTP; r = HTTP.get("http://192.168.0.103/api/XX/lights") |> String |> length |> println'
10206
$ julia -e 'using HTTP; r = HTTP.get("http://192.168.0.103/api/XX/lights") |> String |> length |> println'
10206

But, there is a 4 x slowdown compared to Requests (I assume this is all compilation delay?)

$ time julia -e 'using HTTP; r = HTTP.get("http://192.168.0.103/api/XX/lights") |> String |> length |> println'
10206

real	0m13.763s
user	0m13.641s
sys	0m0.371s
$ time julia -e 'using HTTP; r = HTTP.get("http://192.168.0.103/api/XX/lights") |> String |> length |> println'
10206

real	0m13.903s
user	0m13.644s
sys	0m0.352s
$ time julia -e 'using Requests; r = Requests.get("http://192.168.0.103/api/XX/lights") |> String |> length |> println'
10206

real	0m3.166s
user	0m2.662s
sys	0m0.343s
$ time julia -e 'using Requests; r = Requests.get("http://192.168.0.103/api/XX/lights") |> String |> length |> println'
10206

real	0m3.672s
user	0m2.784s
sys	0m0.336s

from http.jl.

quinnj avatar quinnj commented on August 25, 2024

Excellent news! I'm going to merge that PR then.

Yes, there's still a bit of a delay in terms of package loading/precompilation, but it's now weighted more heavily to the upfront package loading instead of initial request call (which should benefit applications which would prefer to have a slower upfront load time). There are also open issues that have been slotted for resolution by 1.0, so I'm optimistic that it will all come out nice in time.

from http.jl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.