it will test transactions that are in 3 different states:
- transaction has received some data before the protocol error occurred. This transaction will be closed with NS_ERROR_NET_PARTIAL_TRANSFER
- transaction has only send some data but has not received any data. This transaction will be closed with NS_ERROR_NET_HTTP3_PROTOCOL_ERROR
- transaction is queued in Http3Session because of the stream concurrency limit. In this case the transaction will be restarted and it will succeeed using HTTP2.
Differential Revision: https://phabricator.services.mozilla.com/D95988
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
- Add 2 test: 1) server is not listening to the port and 2) server is not responding that will cause the connection to timeout and fall back to HTTP2
- Adds a server that only reads packets but never sends any to simulate a handshake timing out
Differential Revision: https://phabricator.services.mozilla.com/D95816
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
- Add 2 test: 1) server is not listening to the port and 2) server is not responding that will cause the connection to timeout and fall back to HTTP2
- Adds a server that only reads packets but never sends any to simulate a handshake timing out
Differential Revision: https://phabricator.services.mozilla.com/D95816
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
- Add 2 test: 1) server is not listening to the port and 2) server is not responding that will cause the connection to timeout and fall back to HTTP2
- Adds a server that only reads packets but never sends any to simulate a handshake timing out
Differential Revision: https://phabricator.services.mozilla.com/D95816
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 needs to count encrypted data, therefore it is implemented as a NSPR layer right above the PR_NSPR_IO_LAYER layer.
Differential Revision: https://phabricator.services.mozilla.com/D96083
- 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 allow us to make response that violate the Http3 protocol and cause a protocol error.
Currently the server returns only one response, we may extend it if needed.
Differential Revision: https://phabricator.services.mozilla.com/D94912
- 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
Previously these requests would replace the nsIRequest argument to stream
listeners based on the initial process, rather than based on the final process.
This caused issues when the initial process was non-remote, but the final
process was remote, as the parameter would be replaced when it shouldn't be.
This patch now disables request-argument replacement for all loads, and
selectively re-enables it during OnStartRequest for loads which will terminate
in the parent process.
Differential Revision: https://phabricator.services.mozilla.com/D94779