This telemetry will be collected for transaction that have used HTTP3 and transaction that have used HTTP2 but the servers they are connecting to support HTTP3.
Differential Revision: https://phabricator.services.mozilla.com/D96459
This error is well mitigated with checking if a certificate is valied for a domain before dispatching. If we include this error we will have a case as in test_altsvc_https.js where a domain is valid for foo.example.com but not for bar.example.com and if bar.example.com as altsvc to that domain the domain will be excluded for foo.example.com.
Differential Revision: https://phabricator.services.mozilla.com/D95845
Domains are excluded:
- if NS_ERROR_NET_HTTP3_PROTOCOL_ERROR error happens, this is a single error for all different HTTP3 protocol errors,
- also if a connection times out before the handshake is done
Change the current behavior to exclude HTTP3 domains instead of excluding the origin host names. HTTP2 disable AltSvc mapping if a origin domain is excluded which may not be ideal. This patch only changes behavior of HTTP3.
Refactor test_http3_fatal_stream_error.js. The test use to try to connect to http3 server on port 443 that does nto exist and it would return an error. This patch make the test use HTTP2 so that the the connection to the origin host (not AltSvc host) succeeds.
Differential Revision: https://phabricator.services.mozilla.com/D95807
This error is well mitigated with checking if a certificate is valied for a domain before dispatching. If we include this error we will have a case as in test_altsvc_https.js where a domain is valid for foo.example.com but not for bar.example.com and if bar.example.com as altsvc to that domain the domain will be excluded for foo.example.com.
Differential Revision: https://phabricator.services.mozilla.com/D95845
Domains are excluded:
- if NS_ERROR_NET_HTTP3_PROTOCOL_ERROR error happens, this is a single error for all different HTTP3 protocol errors,
- also if a connection times out before the handshake is done
Change the current behavior to exclude HTTP3 domains instead of excluding the origin host names. HTTP2 disable AltSvc mapping if a origin domain is excluded which may not be ideal. This patch only changes behavior of HTTP3.
Refactor test_http3_fatal_stream_error.js. The test use to try to connect to http3 server on port 443 that does nto exist and it would return an error. This patch make the test use HTTP2 so that the the connection to the origin host (not AltSvc host) succeeds.
Differential Revision: https://phabricator.services.mozilla.com/D95807
This error is well mitigated with checking if a certificate is valied for a domain before dispatching. If we include this error we will have a case as in test_altsvc_https.js where a domain is valid for foo.example.com but not for bar.example.com and if bar.example.com as altsvc to that domain the domain will be excluded for foo.example.com.
Differential Revision: https://phabricator.services.mozilla.com/D95845
Domains are excluded:
- if NS_ERROR_NET_HTTP3_PROTOCOL_ERROR error happens, this is a single error for all different HTTP3 protocol errors,
- also if a connection times out before the handshake is done
Change the current behavior to exclude HTTP3 domains instead of excluding the origin host names. HTTP2 disable AltSvc mapping if a origin domain is excluded which may not be ideal. This patch only changes behavior of HTTP3.
Refactor test_http3_fatal_stream_error.js. The test use to try to connect to http3 server on port 443 that does nto exist and it would return an error. This patch make the test use HTTP2 so that the the connection to the origin host (not AltSvc host) succeeds.
Differential Revision: https://phabricator.services.mozilla.com/D95807
- Move looping while calling mTransaction->ReadSegments into Http3Stream and call mTransaction->ReadSegmentsAgain. We use to loop in Http3Session which was not easy because it is not easy to find out when to leave the loop. The original code was working, but this is a better way to do this.
- Remove mReadyForWriteButBlocked it is not necessary, it was used only as a double check and can only be a source of bugs.
- Remove mContentBytesWritten, because it is not used.
- Http3Server now reads post data and returns amount of data received (this was needed to make better test).
- In test_http3.js increase the number of parallel to trigger max-concurent-stream limit and test stream queuing before streams being activated.
- Add tests for post with large amount of data that are hitting the stream bugger limits. This is testing Http3Event::Tag::DataWritable and also testing the the end of the mTransaction->ReadSegmentsAgain loop.
Differential Revision: https://phabricator.services.mozilla.com/D95622
- add allowHttp3 attribute to nsIHttpChannelInternal, it is used for easy testing and it will be used for Bug 1674111
- add test for NS_HTTP_DISALLOW_HTTP3 and NS_HTTP_DISALLOW_SPDY
- add HTTP3 test for altSvc and the cert verifiacation
Differential Revision: https://phabricator.services.mozilla.com/D95256
- We have an assumption that SetResponseHeaders will be called before WriteSegments is called for the first time. I would like to make it more structural add add a new state BEFORE_HEADERS
- mDataReceived was never set, which is wrong.
- Almost any error that occurs during ReadResponseData is a connection error and neqo will handle it internally by closing the session. This will be read by necko as ConnectionState change event. Therefore ignore errors received from mHttp3Connection->ReadResponseData and let the ConnectionChange event close the stream.
- This also adds a test. Because the stream has received some data already the transaction will br closed with the NS_ERROR_NET_PARTIAL_TRANSFER error.
Differential Revision: https://phabricator.services.mozilla.com/D94951
- This will make handling of responses contain only headers in the same way as the responses with
a response body
- This will also make sure we pick up an error if neqo_http3conn_read_response_data return one.
Differential Revision: https://phabricator.services.mozilla.com/D94834