Open Bug 715905 Opened 12 years ago Updated 2 years ago

Separate connection establishment from nsHttpConnection* code


(Core :: Networking: HTTP, enhancement, P5)





(Reporter: mayhemer, Unassigned)



(Whiteboard: [http-conn][necko-would-take])

Bug 447866's "prepatch" (attachment 581263 [details] [diff] [review]) deals with a case we first build a pipeline of pending transaction prior to discovery of Next Protocol Negotiation and transiting to SPDY on the connection.

IMO it is wrong to first build a pipeline and then throw it away and alter with a spdy session. 

My suggestion was to first establish the SSL connection and discover the NPN value prior to building any pipelines.

Patrick well argued against my suggestion since his suggested solution (to break the not-anymore-needed pipeline and spill all the transaction to a new spdy session) is needed as nsHttpConnection is used for HTTP proxying to an HTTPS server.  It means, we may discover NPN=SPDY later while already having an active nsHttpConnection with a pipeline over it (currently not implemented, it is a future todo for SPDY).

According this and what all specific code for HTTP proxy CONNECT we've got and going to have in nsHttpConnection, nsHttpPipeline and on some other places, my suggestion is to:

- negotiate SSL in nsHalfOpenSocket to discover NPN prior to having an active connection
- completely separate HTTP proxy CONNECT logic to a new class and use it also before we have an active connection object

This may also ease implementation of support for secure HTTPS proxies (bug 378637).
Blocks: 725587
Changing summary.

This bug should overly improve issues we now have:
- remove complexity of SPDY vs pipelining code, connection management, error propagation, thus make fixes of regressions simpler in all these areas
- allow simpler implementation of Happy Eyeballs, etc

There is more.  I really believe we need to do this.
Assignee: nobody → honzab.moz
Summary: Separate HTTP proxy CONNECT logic to its own class → Separate connection establishment from nsHttpConnection* code
Blocks: 749209
Whiteboard: [http-conn]
Assignee: honzab.moz → nobody
Whiteboard: [http-conn] → [http-conn][necko-would-take]
Bulk change to priority:
Priority: -- → P5

Mass-removing myself from cc; search for 12b9dfe4-ece3-40dc-8d23-60e179f64ac1 or any reasonable part thereof, to mass-delete these notifications (and sorry!)

Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.