[tor-commits] [tor-browser] 281/311: Bug 1752270 - Test for receiving 408 response r=necko-reviewers, kershaw a=dmeehan
gitolite role
git at cupani.torproject.org
Tue Apr 26 15:31:21 UTC 2022
This is an automated email from the git hooks/post-receive script.
pierov pushed a commit to branch geckoview-99.0.1-11.0-1
in repository tor-browser.
commit bee2f44cc4ef8df7faf0d62905b046ac9868c7ee
Author: Dragana Damjanovic <dd.mozilla at gmail.com>
AuthorDate: Tue Mar 22 21:12:20 2022 +0000
Bug 1752270 - Test for receiving 408 response r=necko-reviewers,kershaw a=dmeehan
With H1, the connection is restarted.
With H2 and H3, the channel gets NS_ERROR_ABORT from Http2Session::Shutdown
Differential Revision: https://phabricator.services.mozilla.com/D139395
---
netwerk/test/unit/test_http_408_retry.js | 63 ++++++++++++++++++++++++++++++++
netwerk/test/unit/xpcshell.ini | 2 +
2 files changed, 65 insertions(+)
diff --git a/netwerk/test/unit/test_http_408_retry.js b/netwerk/test/unit/test_http_408_retry.js
new file mode 100644
index 0000000000000..421d3a52665e9
--- /dev/null
+++ b/netwerk/test/unit/test_http_408_retry.js
@@ -0,0 +1,63 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+async function loadURL(uri, flags) {
+ let chan = NetUtil.newChannel({
+ uri,
+ loadUsingSystemPrincipal: true,
+ }).QueryInterface(Ci.nsIHttpChannel);
+ chan.loadFlags = Ci.nsIChannel.LOAD_INITIAL_DOCUMENT_URI;
+
+ return new Promise(resolve => {
+ chan.asyncOpen(
+ new ChannelListener((req, buff) => resolve({ req, buff }), null, flags)
+ );
+ });
+}
+
+add_task(async function test() {
+ let certdb = Cc["@mozilla.org/security/x509certdb;1"].getService(
+ Ci.nsIX509CertDB
+ );
+ addCertFromFile(certdb, "http2-ca.pem", "CTu,u,u");
+
+ async function check408retry(server) {
+ info(`Testing ${server.constructor.name}`);
+ await server.execute(`global.server_name = "${server.constructor.name}";`);
+ await server.registerPathHandler("/test", (req, resp) => {
+ let oldSock = global.socket;
+ global.socket = resp.socket;
+ if (global.socket == oldSock) {
+ resp.writeHead(408);
+ resp.end("stuff");
+ return;
+ }
+ resp.writeHead(200);
+ resp.end(global.server_name);
+ });
+
+ async function load() {
+ let { req, buff } = await loadURL(
+ `${server.origin()}/test`,
+ CL_ALLOW_UNKNOWN_CL
+ );
+ equal(req.status, Cr.NS_OK);
+ equal(req.QueryInterface(Ci.nsIHttpChannel).responseStatus, 200);
+ equal(buff, server.constructor.name);
+ equal(
+ req.QueryInterface(Ci.nsIHttpChannel).protocolVersion,
+ server.constructor.name == "NodeHTTP2Server" ? "h2" : "http/1.1"
+ );
+ }
+
+ info("first load");
+ await load();
+ info("second load");
+ await load();
+ }
+
+ await with_node_servers([NodeHTTPServer, NodeHTTPSServer], check408retry);
+});
diff --git a/netwerk/test/unit/xpcshell.ini b/netwerk/test/unit/xpcshell.ini
index 4240eeb44cf83..33483cbd6522d 100644
--- a/netwerk/test/unit/xpcshell.ini
+++ b/netwerk/test/unit/xpcshell.ini
@@ -605,3 +605,5 @@ skip-if =
os == "android"
!socketprocess_networking
run-sequentially = node server exceptions dont replay well
+[test_http_408_retry.js]
+skip-if = os == "android" # head_servers.js isn't aware of Android hosts yet
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the tor-commits
mailing list