I'm going to resolve this issue as fixed.
Over the years, the error handling features of the NHTTP transport has been significantly improved and subjected to extensive testing. These improvements have been adopted by the new PTT transport as well. The
HTTPCORE-208 referenced in the above description has been resolved as invalid. It seems the HC community has reached a consensus that IOSession related errors should be handled at the respective protocol handlers. And the NHTTP/PTT protocol handlers have been improved over the years to handle session specific errors appropriately. So I think this is no longer a problem. In fact, I haven't seen any infinite loops or unexpected crashes in the NHTTP/PTT transports over the last couple of years.
I also tested the scenario outlined in the above mailing list discussion (Synapse running into an infinite loop when the request URL is malformed). But this is gracefully handled in the PTT transport. Synapse didn't throw any errors, and the client received a 400 Bad Request message:
- Connected to localhost (::1) port 8280 (#0)
> GET /foo bar/baz HTTP/1.1
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5
> Host: localhost:8280
> Accept: /
< HTTP/1.1 400 Bad request
< Connection: Close
< Date: Thu, 08 Aug 2013 23:07:14 GMT
< Server: Synapse-PassThrough-HTTP
< Content-Length: 0
- Closing connection #0
I believe this is pretty much the optimal behavior.