Interesting. I wonder if it could have something to do with the '-'
character in the url. Does this happen every time? Does the problem go
away if you remove the '-' character? If so, this is a bug in the
parser—it should not be generating an error.
Looking over the code for HttpServerTransactionDelegate, there's
definitely a bug in the implementation of OnError—it should check to
see that the subject is not null before attempting to pass the error
to it.
Thanks!
Okay. And this is with the KayakExamples project unmodified, correct?
Awesome, thank you for the bug report. I'll look into this.
The idea there was to avoid loading the NuGet packages directory into
the repo. Looks like I'll need to hard-code that into the .csproj.
To workaround:
A) Use MSBuild at the command line to build the 'build.proj' project
file in the root of the repo. This will properly set NugetExeLocation,
and create a packages dir using the nuget binary in the tools folder,
and download all the necessary packages.
- or -
B) replace the references to NugetExeLocation (in Kayak.csproj and
Kayak.Tests.csproj) with "$(MSBuildProjectDirectory)\..\tools\nuget"
(this is what I'll probably do to fix it, feel free to send a pull)
Sorry, MSBuild newbie here :S
Correction: you will have to do B. Just building the build.proj on the
command line (A) won't solve the problem from within VS. I'll
definitely fix tonight after work.
Was the bug occurring with the NuGet package?
Ah, yes! This does make a lot of sense. The bug was in HttpMachine, it
didn't accept numbers in the URLs. Recently fixed here:
https://github.com/bvanderveen/httpmachine/pull/3
Thanks!!
Hmm, are you experiencing a different error? This
HandOffSocketIfPossible bit is part of how the HTTP code handles
pipelined requests. Each IOutputSegment represents an outgoing HTTP
message. When the IOutputSegment is done writing itself to the socket,
it hands the socket to the next segment and releases the socket (by
setting it to null). The last output segment simply closes the
connection and disposes the socket.
Hm, it's tough to say what might be going on. Are you still getting
the "The given key was not present in the dictionary" error or is it a
different error? How does this relate to the socket being set to null?