• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..01-Sep-2019-

ASpdySession.cppH A D01-Sep-20193.7 KiB12275

ASpdySession.hH A D01-Sep-20194.4 KiB12465

AltDataOutputStreamChild.cppH A D01-Sep-20193.5 KiB143117

AltDataOutputStreamChild.hH A D01-Sep-20191.5 KiB4625

AltDataOutputStreamParent.cppH A D01-Sep-20191.9 KiB7558

AltDataOutputStreamParent.hH A D01-Sep-20191.9 KiB5325

AlternateServices.cppH A D01-Sep-201936.7 KiB1,114943

AlternateServices.hH A D01-Sep-20196.5 KiB195137

BackgroundChannelRegistrar.cppH A D01-Sep-20192.4 KiB8556

BackgroundChannelRegistrar.hH A D01-Sep-20191.7 KiB5227

CacheControlParser.cppH A D01-Sep-20192.6 KiB11290

CacheControlParser.hH A D01-Sep-20191.1 KiB4429

ConnectionDiagnostics.cppH A D01-Sep-20198.4 KiB215171

Http2Compression.cppH A D01-Sep-201944.9 KiB1,4241,070

Http2Compression.hH A D01-Sep-20196.2 KiB201153

Http2HuffmanIncoming.hH A D01-Sep-201944.3 KiB710653

Http2HuffmanOutgoing.hH A D01-Sep-20195.1 KiB8677

Http2Push.cppH A D01-Sep-201915.2 KiB494374

Http2Push.hH A D01-Sep-20194.7 KiB15499

Http2Session.cppH A D01-Sep-2019157.8 KiB4,5393,362

Http2Session.hH A D01-Sep-201922.9 KiB595339

Http2Stream.cppH A D01-Sep-201955.4 KiB1,6211,129

Http2Stream.hH A D01-Sep-201912.1 KiB378202

HttpAuthUtils.cppH A D01-Sep-20194.6 KiB172114

HttpAuthUtils.hH A D01-Sep-2019925 3411

HttpBackgroundChannelChild.cppH A D01-Sep-201911.8 KiB383258

HttpBackgroundChannelChild.hH A D01-Sep-20193.9 KiB11450

HttpBackgroundChannelParent.cppH A D01-Sep-201912.3 KiB428324

HttpBackgroundChannelParent.hH A D01-Sep-20193.1 KiB9846

HttpBaseChannel.cppH A D01-Sep-2019129.8 KiB4,3053,167

HttpBaseChannel.hH A D01-Sep-201931.5 KiB841578

HttpChannelChild.cppH A D01-Sep-2019123.1 KiB3,7672,711

HttpChannelChild.hH A D01-Sep-201920.9 KiB513339

HttpChannelParent.cppH A D01-Sep-201975.7 KiB2,2441,659

HttpChannelParent.hH A D01-Sep-201913.2 KiB327206

HttpChannelParentListener.cppH A D01-Sep-201915.9 KiB444298

HttpChannelParentListener.hH A D01-Sep-20193.7 KiB10154

HttpInfo.cppH A D01-Sep-2019485 157

HttpInfo.hH A D01-Sep-2019570 2513

HttpLog.hH A D01-Sep-20192.2 KiB6832

InterceptedChannel.cppH A D01-Sep-201911.9 KiB400314

InterceptedChannel.hH A D01-Sep-20196.1 KiB195139

InterceptedHttpChannel.cppH A D01-Sep-201938 KiB1,270900

InterceptedHttpChannel.hH A D01-Sep-20196.6 KiB187110

NullHttpChannel.cppH A D01-Sep-201920.5 KiB818652

NullHttpChannel.hH A D01-Sep-20191.7 KiB6444

NullHttpTransaction.cppH A D01-Sep-20199.4 KiB287230

NullHttpTransaction.hH A D01-Sep-20193.6 KiB10862

PAltDataOutputStream.ipdlH A D01-Sep-20191.2 KiB4232

PHttpBackgroundChannel.ipdlH A D01-Sep-20192.4 KiB7352

PHttpChannel.ipdlH A D01-Sep-20196.9 KiB173137

PHttpChannelParams.hH A D01-Sep-20196.8 KiB224182

PSpdyPush.hH A D01-Sep-20192.1 KiB5824

READMEH A D01-Sep-20194.1 KiB12090

TimingStruct.hH A D01-Sep-20191.1 KiB4429

TunnelUtils.cppH A D01-Sep-201946.3 KiB1,5331,228

TunnelUtils.hH A D01-Sep-20199.9 KiB263141

UAOverridesBootstrapper.manifestH A D01-Sep-2019228 43

UserAgentOverrides.jsmH A D01-Sep-20194.9 KiB174140

UserAgentUpdates.jsmH A D01-Sep-20198.6 KiB281241

WellKnownOpportunisticUtils.manifestH A D01-Sep-2019215 43

make_incoming_tables.pyH A D01-Sep-20195.8 KiB195153

make_outgoing_tables.pyH A D01-Sep-20191.4 KiB5637

moz.buildH A D01-Sep-20193.6 KiB146130

nsAHttpConnection.hH A D01-Sep-201911.9 KiB236127

nsAHttpTransaction.hH A D01-Sep-201912.2 KiB283135

nsCORSListenerProxy.cppH A D01-Sep-201950 KiB1,5241,131

nsCORSListenerProxy.hH A D01-Sep-20194.6 KiB12379

nsHttp.cppH A D01-Sep-201922.9 KiB770561

nsHttp.hH A D01-Sep-201910.9 KiB314147

nsHttpActivityDistributor.cppH A D01-Sep-20193.7 KiB11991

nsHttpActivityDistributor.hH A D01-Sep-2019924 3724

nsHttpAtomList.hH A D01-Sep-20193.7 KiB10280

nsHttpAuthCache.cppH A D01-Sep-201913.8 KiB444309

nsHttpAuthCache.hH A D01-Sep-20197.7 KiB224142

nsHttpAuthManager.cppH A D01-Sep-20193.9 KiB11787

nsHttpAuthManager.hH A D01-Sep-2019806 3520

nsHttpBasicAuth.cppH A D01-Sep-20193.3 KiB10060

nsHttpBasicAuth.hH A D01-Sep-2019955 3416

nsHttpChannel.cppH A D01-Sep-2019296.3 KiB8,9836,257

nsHttpChannel.hH A D01-Sep-201928.8 KiB717450

nsHttpChannelAuthProvider.cppH A D01-Sep-201955.3 KiB1,6391,115

nsHttpChannelAuthProvider.hH A D01-Sep-20197.7 KiB195117

nsHttpChunkedDecoder.cppH A D01-Sep-20195.1 KiB16999

nsHttpChunkedDecoder.hH A D01-Sep-20191.6 KiB5536

nsHttpConnection.cppH A D01-Sep-201984 KiB2,5141,849

nsHttpConnection.hH A D01-Sep-201916 KiB441259

nsHttpConnectionInfo.cppH A D01-Sep-201910.4 KiB323236

nsHttpConnectionInfo.hH A D01-Sep-20197.2 KiB194115

nsHttpConnectionMgr.cppH A D01-Sep-2019183.8 KiB5,3123,856

nsHttpConnectionMgr.hH A D01-Sep-201933.2 KiB813409

nsHttpDigestAuth.cppH A D01-Sep-201920.3 KiB654466

nsHttpDigestAuth.hH A D01-Sep-20193 KiB8856

nsHttpHandler.cppH A D01-Sep-201986.3 KiB2,6502,087

nsHttpHandler.hH A D01-Sep-201925.5 KiB733467

nsHttpHeaderArray.cppH A D01-Sep-201914.7 KiB452353

nsHttpHeaderArray.hH A D01-Sep-201910.8 KiB290188

nsHttpNTLMAuth.cppH A D01-Sep-201913.6 KiB392249

nsHttpNTLMAuth.hH A D01-Sep-2019714 3217

nsHttpRequestHead.cppH A D01-Sep-20198.8 KiB319247

nsHttpRequestHead.hH A D01-Sep-20194.3 KiB13385

nsHttpResponseHead.cppH A D01-Sep-201933.1 KiB1,104807

nsHttpResponseHead.hH A D01-Sep-20197.1 KiB202123

nsHttpTransaction.cppH A D01-Sep-201975.8 KiB2,2921,639

nsHttpTransaction.hH A D01-Sep-201917.6 KiB486279

nsIBackgroundChannelRegistrar.idlH A D01-Sep-20192.4 KiB6456

nsICorsPreflightCallback.hH A D01-Sep-20191.1 KiB3220

nsIHttpActivityObserver.idlH A D01-Sep-20195.2 KiB129117

nsIHttpAuthManager.idlH A D01-Sep-20194.8 KiB116110

nsIHttpAuthenticableChannel.idlH A D01-Sep-20193.8 KiB123103

nsIHttpAuthenticator.idlH A D01-Sep-20199.9 KiB227211

nsIHttpChannel.idlH A D01-Sep-201919.8 KiB504458

nsIHttpChannelAuthProvider.idlH A D01-Sep-20193 KiB8071

nsIHttpChannelChild.idlH A D01-Sep-20191.5 KiB3728

nsIHttpChannelInternal.idlH A D01-Sep-201911.8 KiB335288

nsIHttpHeaderVisitor.idlH A D01-Sep-2019898 2724

nsIHttpProtocolHandler.idlH A D01-Sep-20195.1 KiB143123

nsIRaceCacheWithNetwork.idlH A D01-Sep-20192.3 KiB5649

nsIWellKnownOpportunisticUtils.idlH A D01-Sep-2019912 2721

nsServerTiming.cppH A D01-Sep-20193.2 KiB10066

nsServerTiming.hH A D01-Sep-20191.3 KiB5535

README

1                                                        Darin Fisher
2                                                        darin@netscape.com
3                                                        8/8/2001
4
5                            HTTP DESIGN NOTES
6
7
8CLASS BREAKDOWN
9
10  nsHttpHandler
11    - implements nsIProtocolHandler
12    - manages preferences
13    - owns the authentication cache
14    - holds references to frequently used services
15
16  nsHttpChannel
17    - implements nsIHttpChannel
18    - talks to the cache
19    - initiates http transactions
20    - processes http response codes
21    - intercepts progress notifications
22
23  nsHttpConnection
24    - implements nsIStreamListener & nsIStreamProvider
25    - talks to the socket transport service
26    - feeds data to its transaction object
27    - routes progress notifications
28
29  nsHttpConnectionInfo
30    - identifies a connection
31
32  nsHttpTransaction
33    - implements nsIRequest
34    - encapsulates a http request and response
35    - parses incoming data
36
37  nsHttpChunkedDecoder
38    - owned by a transaction
39    - removes chunked decoding
40
41  nsHttpRequestHead
42    - owns a nsHttpHeaderArray
43    - knows how to fill a request buffer
44
45  nsHttpResponseHead
46    - owns a nsHttpHeaderArray
47    - knows how to parse response lines
48    - performs common header manipulations/calculations
49
50  nsHttpHeaderArray
51    - stores http "<header>:<value>" pairs
52
53  nsHttpAuthCache
54    - stores authentication credentials for http auth domains
55
56  nsHttpBasicAuth
57    - implements nsIHttpAuthenticator
58    - generates BASIC auth credentials from user:pass
59
60
61ATOMS
62
63  nsHttp:: (header namespace)
64
65  eg. nsHttp::Content_Length
66
67
68TRANSACTION MODEL
69
70  InitiateTransaction -> ActivateConnection -> AsyncWrite, AsyncRead
71
72  The channel creates transactions, and passes them to the handler via
73  InitiateTransaction along with a nsHttpConnectionInfo object
74  identifying the requested connection.  The handler either dispatches
75  the transaction immediately or queues it up to be dispatched later,
76  depending on whether or not the limit on the number of connections
77  to the requested server has been reached.  Once the transaction can
78  be run, the handler looks for an idle connection or creates a new
79  connection, and then (re)activates the connection, assigning it the
80  new transaction.
81
82  Once activated the connection ensures that it has a socket transport,
83  and then calls AsyncWrite and AsyncRead on the socket transport.  This
84  begins the process of talking to the server.  To minimize buffering,
85  socket transport thread-proxying is completely disabled (using the flags
86  DONT_PROXY_LISTENER | DONT_PROXY_PROVIDER | DONT_PROXY_OBSERVER with
87  both AsyncWrite and AsyncRead).  This means that the nsHttpConnection's
88  OnStartRequest, OnDataAvailable, OnDataWritable, and OnStopRequest
89  methods will execute on the socket transport thread.
90
91  The transaction defines (non-virtual) OnDataReadable, OnDataWritable, and
92  OnStopTransaction methods, which the connection calls in response to
93  its OnDataAvailable, OnDataWritable, and OnStopRequest methods, respectively.
94  The transaction owns a nsStreamListenerProxy created by the channel, which
95  it uses to transfer data from the socket thread over to the client's thread.
96  To mimize buffering, the transaction implements nsIInputStream, and passes
97  itself to the stream listener proxy's OnDataAvailable.  In this way, we
98  have effectively wedged the response parsing between the socket and the
99  thread proxy's buffer.  When read, the transaction turns around and reads
100  from the socket using the buffer passed to it.  The transaction scans the
101  buffer for headers, removes them as they are detected, and copies the headers
102  into its nsHttpResponseHead object.  The rest of the data remains in the
103  buffer, and is proxied over to the client's thread to be handled first by the
104  http channel and eventually by the client.
105
106  There are several other major design factors, including:
107
108    - transaction cancelation
109    - progress notification
110    - SSL tunneling
111    - chunked decoding
112    - thread safety
113    - premature EOF detection and transaction restarting
114    - pipelining (not yet implemented)
115
116
117CACHING
118
119<EOF>
120