gecko-dev/netwerk/protocol/http
Dragana Damjanovic 1d40d354bd Bug 1577643 - Implement a security info class for the quic transport. r=keeler
Differential Revision: https://phabricator.services.mozilla.com/D44073

--HG--
extra : moz-landing-system : lando
2019-09-25 20:23:56 +00:00
..
ASpdySession.cpp Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
ASpdySession.h Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
AltDataOutputStreamChild.cpp Bug 1562642 - Add missing MPL2 headers r=mhoye 2019-07-05 17:05:57 +00:00
AltDataOutputStreamChild.h Bug 1487113 - AltDataOutputStreamChild must be nsIAsyncOutputStream, r=valentin 2019-02-27 20:50:48 +00:00
AltDataOutputStreamParent.cpp Bug 1487113 - AltDataOutputStreamChild must be nsIAsyncOutputStream, r=valentin 2019-02-27 20:50:48 +00:00
AltDataOutputStreamParent.h Bug 1487113 - AltDataOutputStreamChild must be nsIAsyncOutputStream, r=valentin 2019-02-27 20:50:48 +00:00
AlternateServices.cpp Bug 1577574 - Only assert that string is propely lowercased in AlternateServices::SchemeIsHTTPS r=kershaw 2019-09-24 17:54:54 +00:00
AlternateServices.h Bug 1569224 - Part 2: Add a unit test for examining the alt-svc cache isolation for third-party trackers; r=michal 2019-08-08 22:04:25 +00:00
BackgroundChannelRegistrar.cpp Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
BackgroundChannelRegistrar.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
CacheControlParser.cpp Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
CacheControlParser.h Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
ClassifierDummyChannel.cpp Bug 1572240 - Part 3: Introduce nsIHttpChannelInternal.contentBlockingAllowListPrincipal; r=michal 2019-08-19 19:38:50 +00:00
ClassifierDummyChannel.h Bug 1572240 - Part 3: Introduce nsIHttpChannelInternal.contentBlockingAllowListPrincipal; r=michal 2019-08-19 19:38:50 +00:00
ClassifierDummyChannelChild.cpp Bug 1572240 - Part 3: Introduce nsIHttpChannelInternal.contentBlockingAllowListPrincipal; r=michal 2019-08-19 19:38:50 +00:00
ClassifierDummyChannelChild.h Bug 1535525 - Rename TrackingDummyChannel to ClassifierDummyChannel, r=Ehsan 2019-03-15 18:55:10 +00:00
ClassifierDummyChannelParent.cpp Bug 1572240 - Part 3: Introduce nsIHttpChannelInternal.contentBlockingAllowListPrincipal; r=michal 2019-08-19 19:38:50 +00:00
ClassifierDummyChannelParent.h Bug 1572240 - Part 3: Introduce nsIHttpChannelInternal.contentBlockingAllowListPrincipal; r=michal 2019-08-19 19:38:50 +00:00
ConnectionDiagnostics.cpp Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
DelayHttpChannelQueue.cpp Bug 1511393 - Use c-basic-offset: 2 in Emacs mode line for C/C++ code. r=nbp 2018-12-01 04:52:05 +09:00
DelayHttpChannelQueue.h Bug 1511393 - Use c-basic-offset: 2 in Emacs mode line for C/C++ code. r=nbp 2018-12-01 04:52:05 +09:00
Http2Compression.cpp Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
Http2Compression.h Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
Http2HuffmanIncoming.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
Http2HuffmanOutgoing.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
Http2Push.cpp Bug 1547266 - Make sure Http2PushedStream is used only on socket thread, r=dragana 2019-06-18 23:36:54 +00:00
Http2Push.h Bug 1547266 - Make sure Http2PushedStream is used only on socket thread, r=dragana 2019-06-18 23:36:54 +00:00
Http2Session.cpp Bug 1562276 - Proper transaction restart on HTTP_1_1_REQUIRED and h2 proxy, r=dragana. 2019-08-24 13:21:37 +00:00
Http2Session.h Bug 1554411 - Make sure to deregister each HTTP/2 tunnel with the same key as used for its registration, r=dragana 2019-08-05 20:48:22 +00:00
Http2Stream.cpp Bug 1554411 - Make sure to deregister each HTTP/2 tunnel with the same key as used for its registration, r=dragana 2019-08-05 20:48:22 +00:00
Http2Stream.h Bug 1554411 - Make sure to deregister each HTTP/2 tunnel with the same key as used for its registration, r=dragana 2019-08-05 20:48:22 +00:00
HttpAuthUtils.cpp Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
HttpAuthUtils.h Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
HttpBackgroundChannelChild.cpp Bug 1570369 - Part 14: Use IPDL refcounted for PHttpBackgroundChannel, r=mayhemer 2019-08-16 10:50:08 +00:00
HttpBackgroundChannelChild.h Bug 1570369 - Part 14: Use IPDL refcounted for PHttpBackgroundChannel, r=mayhemer 2019-08-16 10:50:08 +00:00
HttpBackgroundChannelParent.cpp Bug 1545033 - P2. Add SetMatchedTrackingInfo in nsIClassifiedChannel. r=baku 2019-04-26 13:03:50 +00:00
HttpBackgroundChannelParent.h Bug 1570369 - Part 14: Use IPDL refcounted for PHttpBackgroundChannel, r=mayhemer 2019-08-16 10:50:08 +00:00
HttpBaseChannel.cpp Bug 1574000 - Obtain COOP only over a secure context r=nika,bzbarsky 2019-09-25 00:39:17 +00:00
HttpBaseChannel.h Bug 1575744 - P2. Add nsIProcessSwitchRequestor interface. r=mayhemer,nika 2019-09-20 04:09:46 +00:00
HttpChannelChild.cpp Bug 1575744 - P7. Promisify SendCrossProcessRedirect to avoid needing PHttpChannel to get a response. r=mayhemer 2019-09-21 11:14:49 +00:00
HttpChannelChild.h Backed out 8 changesets (bug 1575744) for HttpChannelParent related assertion failures 2019-09-20 06:58:44 +03:00
HttpChannelParent.cpp Bug 1583018 - Handle potential error should somehow the redirect got cancelled before we finished spawning the new process. r=mayhemer 2019-09-25 14:05:13 +00:00
HttpChannelParent.h Bug 1575744 - P7. Promisify SendCrossProcessRedirect to avoid needing PHttpChannel to get a response. r=mayhemer 2019-09-21 11:14:49 +00:00
HttpInfo.cpp Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
HttpInfo.h Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
HttpLog.h Bug 1511393 - Use c-basic-offset: 2 in Emacs mode line for C/C++ code. r=nbp 2018-12-01 04:52:05 +09:00
HttpTrafficAnalyzer.cpp Bug 1563139 - Remove StaticPrefs.h. r=glandium 2019-07-26 01:10:23 +00:00
HttpTrafficAnalyzer.h Bug 1552431 - handle first/third party correctly; r=dragana 2019-05-21 14:41:58 +00:00
HttpTrafficAnalyzer.inc Bug 1550756 - make system principal fall into new traffic category; r=dragana 2019-05-16 13:24:18 +00:00
InterceptedChannel.cpp Bug 1546913 - Remove GetLoadInfo callsites r=ckerschb 2019-04-25 12:16:35 +00:00
InterceptedChannel.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
InterceptedHttpChannel.cpp Bug 1580363 - propagate "apply conversion" flag when synthesized response creates a redirect channel r=asuth 2019-09-10 23:55:21 +00:00
InterceptedHttpChannel.h Bug 1520868 - Replacing AsyncOpen2 with AsyncOpen always r=valentin 2019-02-12 16:08:25 +00:00
NullHttpChannel.cpp Bug 1575744 - P2. Add nsIProcessSwitchRequestor interface. r=mayhemer,nika 2019-09-20 04:09:46 +00:00
NullHttpChannel.h Bug 1556489 - P11. Add nIIdentChannel interface. r=mayhemer 2019-09-03 10:19:34 +10:00
NullHttpTransaction.cpp Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
NullHttpTransaction.h Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
PAltDataOutputStream.ipdl Bug 1487113 - AltDataOutputStreamChild must be nsIAsyncOutputStream, r=valentin 2019-02-27 20:50:48 +00:00
PClassifierDummyChannel.ipdl Bug 1535525 - Rename TrackingDummyChannel to ClassifierDummyChannel, r=Ehsan 2019-03-15 18:55:10 +00:00
PHttpBackgroundChannel.ipdl Bug 1570369 - Part 14: Use IPDL refcounted for PHttpBackgroundChannel, r=mayhemer 2019-08-16 10:50:08 +00:00
PHttpChannel.ipdl Bug 1575744 - P7. Promisify SendCrossProcessRedirect to avoid needing PHttpChannel to get a response. r=mayhemer 2019-09-21 11:14:49 +00:00
PHttpChannelParams.h Bug 1487113 - nsICacheInfoChannel.preferAlternativeDataType() should expose alt-data as optional if required, r=valentin 2019-02-20 10:05:42 +00:00
PSpdyPush.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
ParentChannelListener.cpp Bug 1556487 - Replace HttpChannelParentListener with a more generic class, r=mayhemer 2019-07-11 16:06:06 +00:00
ParentChannelListener.h Bug 1556487 - Replace HttpChannelParentListener with a more generic class, r=mayhemer 2019-07-11 16:06:06 +00:00
QuicSocketControl.cpp Bug 1577643 - Implement a security info class for the quic transport. r=keeler 2019-09-25 20:23:56 +00:00
QuicSocketControl.h Bug 1577643 - Implement a security info class for the quic transport. r=keeler 2019-09-25 20:23:56 +00:00
README
TimingStruct.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
TunnelUtils.cpp Bug 1578186 - Add fuzzing support for HTTP2 proxy. r=mayhemer 2019-09-05 19:26:12 +00:00
TunnelUtils.h Bug 1562276 - Proper transaction restart on HTTP_1_1_REQUIRED and h2 proxy, r=dragana. 2019-08-24 13:21:37 +00:00
WellKnownOpportunisticUtils.jsm Bug 1561435 - Format netwerk/, a=automatic-formatting 2019-07-05 10:55:23 +02:00
components.conf Bug 1513574 - Remove UAOverridesBootstrapper r=michal 2019-09-16 15:21:18 +00:00
http2_huffman_table.txt
make_incoming_tables.py
make_outgoing_tables.py
moz.build Bug 1577643 - Implement a security info class for the quic transport. r=keeler 2019-09-25 20:23:56 +00:00
nsAHttpConnection.h Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
nsAHttpTransaction.h Bug 1562276 - Proper transaction restart on HTTP_1_1_REQUIRED and h2 proxy, r=dragana. 2019-08-24 13:21:37 +00:00
nsCORSListenerProxy.cpp Bug 1570212 - Remove content.cors.no_private_data pref. r=dragana 2019-08-09 00:58:43 +00:00
nsCORSListenerProxy.h Bug 1570212 - Remove content.cors.no_private_data pref. r=dragana 2019-08-09 00:58:43 +00:00
nsHttp.cpp Bug 1569526 - Remove return values from `Add*VarCache()`. r=KrisWright 2019-07-30 06:19:46 +00:00
nsHttp.h Bug 1562233 - Add logging of CONNECT requests with headers, add possibility to disable authorization headers sanitization by a preference (default is sanitization enabled), r=valentin 2019-06-28 17:50:43 +00:00
nsHttpActivityDistributor.cpp Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
nsHttpActivityDistributor.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
nsHttpAtomList.h Bug 1543068 - P1 Substitute Cross-Origin header with COEP r=nika 2019-08-08 18:38:03 +00:00
nsHttpAuthCache.cpp Bug 1548804 - Remove origin suffix isolation for proxy credentials when setting authentication cache entry, r=valentin 2019-05-14 13:40:30 +00:00
nsHttpAuthCache.h Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
nsHttpAuthManager.cpp Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
nsHttpAuthManager.h Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
nsHttpBasicAuth.cpp Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
nsHttpBasicAuth.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
nsHttpChannel.cpp Bug 1575744 - P8. Remove no longer necessary interface. r=mayhemer 2019-09-20 04:09:48 +00:00
nsHttpChannel.h Bug 1575744 - P8. Remove no longer necessary interface. r=mayhemer 2019-09-20 04:09:48 +00:00
nsHttpChannelAuthProvider.cpp Bug 1563139 - Remove StaticPrefs.h. r=glandium 2019-07-26 01:10:23 +00:00
nsHttpChannelAuthProvider.h Bug 1548804 - Remove origin suffix isolation for proxy credentials when setting authentication cache entry, r=valentin 2019-05-14 13:40:30 +00:00
nsHttpChunkedDecoder.cpp Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
nsHttpChunkedDecoder.h Bug 1531344 - Be strict about incorrect chunked encoding. r=mayhemer 2019-05-08 19:29:16 +00:00
nsHttpConnection.cpp Bug 1556037 - Re-enable test_http2-proxy.js test r=mayhemer 2019-09-10 21:21:53 +00:00
nsHttpConnection.h Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
nsHttpConnectionInfo.cpp Bug 1571356 - Add TRANSPARENT_PROXY_RESOLVES_HOST flag to connection info's hash key r=mayhemer 2019-08-22 15:13:36 +00:00
nsHttpConnectionInfo.h Bug 1562837 - Ensure that the fields stored in the nsHttpConnectionInfo hash key are properly preserved when rebuilding it upon a change to the isolation flag; r=michal 2019-07-09 14:28:44 +00:00
nsHttpConnectionMgr.cpp Bug 1577571 - Add OnUpgradeFailed to nsIHttpUpgradeListener. r=michal 2019-09-05 12:10:27 +00:00
nsHttpConnectionMgr.h Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
nsHttpDigestAuth.cpp Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
nsHttpDigestAuth.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
nsHttpHandler.cpp Bug 1575744 - P8. Remove no longer necessary interface. r=mayhemer 2019-09-20 04:09:48 +00:00
nsHttpHandler.h Bug 1575744 - P2. Add nsIProcessSwitchRequestor interface. r=mayhemer,nika 2019-09-20 04:09:46 +00:00
nsHttpHeaderArray.cpp Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
nsHttpHeaderArray.h Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
nsHttpNTLMAuth.cpp Bug 1558735 part 1. Stop using [array] in nsIX509Cert.getRawDER. r=keeler,mayhemer 2019-06-14 18:17:20 +00:00
nsHttpNTLMAuth.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
nsHttpRequestHead.cpp Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
nsHttpRequestHead.h Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
nsHttpResponseHead.cpp Bug 1555927 - Cache 204 response r=mayhemer 2019-07-18 12:19:10 +00:00
nsHttpResponseHead.h Bug 1559707 - Not using heuristic expiration time for non-cacheable requests r=mayhemer 2019-07-09 17:11:42 +00:00
nsHttpTransaction.cpp Bug 1575217, r=michal,dragana 2019-09-02 18:06:09 +00:00
nsHttpTransaction.h Bug 1562276 - Proper transaction restart on HTTP_1_1_REQUIRED and h2 proxy, r=dragana. 2019-08-24 13:21:37 +00:00
nsIBackgroundChannelRegistrar.idl
nsIChildProcessChannelListener.idl Bug 1467223 - Part 3: Support uncached resources by using a redirectTo-like API for process swaps in necko, r=valentin,mayhemer 2019-01-23 21:19:39 +00:00
nsICorsPreflightCallback.h Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format 2018-11-30 11:46:48 +01:00
nsIHttpActivityObserver.idl Bug 1545843 - Mark some HTTP XPIDL classes as builtinclass. r=mayhemer 2019-04-23 16:05:29 +00:00
nsIHttpAuthManager.idl Bug 1545843 - Mark some HTTP XPIDL classes as builtinclass. r=mayhemer 2019-04-23 16:05:29 +00:00
nsIHttpAuthenticableChannel.idl Bug 1545843 - Mark some HTTP XPIDL classes as builtinclass. r=mayhemer 2019-04-23 16:05:29 +00:00
nsIHttpAuthenticator.idl Bug 1545843 - Mark some HTTP XPIDL classes as builtinclass. r=mayhemer 2019-04-23 16:05:29 +00:00
nsIHttpChannel.idl Bug 1575744 - P2. Add nsIProcessSwitchRequestor interface. r=mayhemer,nika 2019-09-20 04:09:46 +00:00
nsIHttpChannelAuthProvider.idl Bug 1545843 - Mark some HTTP XPIDL classes as builtinclass. r=mayhemer 2019-04-23 16:05:29 +00:00
nsIHttpChannelChild.idl Bug 1545843 - Mark some HTTP XPIDL classes as builtinclass. r=mayhemer 2019-04-23 16:05:29 +00:00
nsIHttpChannelInternal.idl Bug 1574000 - Obtain COOP only over a secure context r=nika,bzbarsky 2019-09-25 00:39:17 +00:00
nsIHttpHeaderVisitor.idl
nsIHttpProtocolHandler.idl Bug 1575744 - P2. Add nsIProcessSwitchRequestor interface. r=mayhemer,nika 2019-09-20 04:09:46 +00:00
nsIRaceCacheWithNetwork.idl
nsIWellKnownOpportunisticUtils.idl Bug 1502555 - Match oppsec .wk format to rfc. r=dragana 2019-06-26 11:44:36 +00:00
nsServerTiming.cpp Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00
nsServerTiming.h Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan 2019-05-01 08:47:10 +00:00

README

                                                        Darin Fisher
                                                        darin@netscape.com
                                                        8/8/2001

                            HTTP DESIGN NOTES


CLASS BREAKDOWN

  nsHttpHandler
    - implements nsIProtocolHandler
    - manages preferences
    - owns the authentication cache
    - holds references to frequently used services

  nsHttpChannel
    - implements nsIHttpChannel
    - talks to the cache
    - initiates http transactions
    - processes http response codes
    - intercepts progress notifications

  nsHttpConnection
    - implements nsIStreamListener & nsIStreamProvider
    - talks to the socket transport service
    - feeds data to its transaction object
    - routes progress notifications

  nsHttpConnectionInfo
    - identifies a connection

  nsHttpTransaction
    - implements nsIRequest
    - encapsulates a http request and response
    - parses incoming data

  nsHttpChunkedDecoder
    - owned by a transaction
    - removes chunked decoding

  nsHttpRequestHead
    - owns a nsHttpHeaderArray
    - knows how to fill a request buffer

  nsHttpResponseHead
    - owns a nsHttpHeaderArray
    - knows how to parse response lines
    - performs common header manipulations/calculations

  nsHttpHeaderArray
    - stores http "<header>:<value>" pairs

  nsHttpAuthCache
    - stores authentication credentials for http auth domains

  nsHttpBasicAuth
    - implements nsIHttpAuthenticator
    - generates BASIC auth credentials from user:pass


ATOMS

  nsHttp:: (header namespace)

  eg. nsHttp::Content_Length


TRANSACTION MODEL

  InitiateTransaction -> ActivateConnection -> AsyncWrite, AsyncRead

  The channel creates transactions, and passes them to the handler via
  InitiateTransaction along with a nsHttpConnectionInfo object
  identifying the requested connection.  The handler either dispatches
  the transaction immediately or queues it up to be dispatched later,
  depending on whether or not the limit on the number of connections
  to the requested server has been reached.  Once the transaction can
  be run, the handler looks for an idle connection or creates a new
  connection, and then (re)activates the connection, assigning it the
  new transaction.

  Once activated the connection ensures that it has a socket transport,
  and then calls AsyncWrite and AsyncRead on the socket transport.  This
  begins the process of talking to the server.  To minimize buffering,
  socket transport thread-proxying is completely disabled (using the flags
  DONT_PROXY_LISTENER | DONT_PROXY_PROVIDER | DONT_PROXY_OBSERVER with
  both AsyncWrite and AsyncRead).  This means that the nsHttpConnection's
  OnStartRequest, OnDataAvailable, OnDataWritable, and OnStopRequest
  methods will execute on the socket transport thread.

  The transaction defines (non-virtual) OnDataReadable, OnDataWritable, and
  OnStopTransaction methods, which the connection calls in response to
  its OnDataAvailable, OnDataWritable, and OnStopRequest methods, respectively.
  The transaction owns a nsStreamListenerProxy created by the channel, which
  it uses to transfer data from the socket thread over to the client's thread.
  To mimize buffering, the transaction implements nsIInputStream, and passes
  itself to the stream listener proxy's OnDataAvailable.  In this way, we
  have effectively wedged the response parsing between the socket and the
  thread proxy's buffer.  When read, the transaction turns around and reads
  from the socket using the buffer passed to it.  The transaction scans the
  buffer for headers, removes them as they are detected, and copies the headers
  into its nsHttpResponseHead object.  The rest of the data remains in the
  buffer, and is proxied over to the client's thread to be handled first by the
  http channel and eventually by the client.

  There are several other major design factors, including:

    - transaction cancelation
    - progress notification
    - SSL tunneling
    - chunked decoding
    - thread safety
    - premature EOF detection and transaction restarting
    - pipelining (not yet implemented)


CACHING

<EOF>