summaryrefslogtreecommitdiff
path: root/ext/http/01_http.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/http/01_http.js')
-rw-r--r--ext/http/01_http.js11
1 files changed, 10 insertions, 1 deletions
diff --git a/ext/http/01_http.js b/ext/http/01_http.js
index 5b78bb2f2..7224df3c5 100644
--- a/ext/http/01_http.js
+++ b/ext/http/01_http.js
@@ -17,6 +17,7 @@ import {
_flash,
fromInnerRequest,
newInnerRequest,
+ toInnerRequest,
} from "ext:deno_fetch/23_request.js";
import { AbortController } from "ext:deno_web/03_abort_signal.js";
import {
@@ -61,6 +62,7 @@ const {
} = primordials;
const connErrorSymbol = Symbol("connError");
+const streamRid = Symbol("streamRid");
const _deferred = Symbol("upgradeHttpDeferred");
class HttpConn {
@@ -135,6 +137,7 @@ class HttpConn {
body !== null ? new InnerBody(body) : null,
false,
);
+ innerRequest[streamRid] = streamRid;
const abortController = new AbortController();
const request = fromInnerRequest(
innerRequest,
@@ -471,6 +474,12 @@ function upgradeHttp(req) {
return req[_deferred].promise;
}
+async function upgradeHttpRaw(req, tcpConn) {
+ const inner = toInnerRequest(req);
+ const res = await core.opAsync("op_http_upgrade_early", inner[streamRid]);
+ return new TcpConn(res, tcpConn.remoteAddr, tcpConn.localAddr);
+}
+
const spaceCharCode = StringPrototypeCharCodeAt(" ", 0);
const tabCharCode = StringPrototypeCharCodeAt("\t", 0);
const commaCharCode = StringPrototypeCharCodeAt(",", 0);
@@ -545,4 +554,4 @@ function buildCaseInsensitiveCommaValueFinder(checkText) {
internals.buildCaseInsensitiveCommaValueFinder =
buildCaseInsensitiveCommaValueFinder;
-export { _ws, HttpConn, upgradeHttp, upgradeWebSocket };
+export { _ws, HttpConn, upgradeHttp, upgradeHttpRaw, upgradeWebSocket };