I think this generally looks cool in terms of adding in the SSL handshake with the client and the separate SSL handshake with the target server. It looks like it just does the handshake now, is that correct? It doesn't actually relay any data once the handshake is complete? I just want to make sure I'm not missing something.
I think that actually relates to the connection handling question. It should not ever be the case that an incoming request does not have a host/port pair. Of course the middle of a request will not (uploading a large file, for example), but any new request should have a host and a port in either the request URI itself or in the headers.
So if the host and port are blank on line 561 of HttpRequestHandler, there's just something wrong. We definitely don't want to just blindly return the old connection, as presumably a new incoming request indicates either we should have a new connection or a request to the same existing connection (so would be right in some cases).
Can you describe your thinking behind this a little bit? It seems like having a better test that actually relays data back and forth along the MITMed connection might make some of that interplay clearer.
Overall, though, great addition and good stuff! Would love to ultimately integrate it with some sort of config flag.
-Adam