From 63f58037b932c1543798d79d49ce7e3c0bc55048 Mon Sep 17 00:00:00 2001 From: Marco Schumacher Date: Thu, 13 Jun 2024 15:16:05 +0200 Subject: [PATCH 1/3] preserve Upgrade header end request in hijack mode --- lib/modem.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/modem.js b/lib/modem.js index 6e60587..12d88f4 100644 --- a/lib/modem.js +++ b/lib/modem.js @@ -227,7 +227,7 @@ Modem.prototype.dial = function (options, callback) { if (options.hijack) { optionsf.headers.Connection = 'Upgrade'; - optionsf.headers.Upgrade = 'tcp'; + optionsf.headers.Upgrade ??= 'tcp'; } if (this.socketPath) { @@ -366,7 +366,7 @@ Modem.prototype.buildRequest = function (options, context, data, callback) { data.pipe(req); } - if (!context.hijack && !context.openStdin && (typeof data === 'string' || data === undefined || Buffer.isBuffer(data))) { + if (!context.openStdin && (typeof data === 'string' || data === undefined || Buffer.isBuffer(data))) { req.end(); } }; From 93ed6d772229bc64844bdff15af04ca2ff6f528f Mon Sep 17 00:00:00 2001 From: Marco Schumacher Date: Wed, 19 Jun 2024 08:21:47 +0200 Subject: [PATCH 2/3] Node 14 fix --- lib/modem.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/modem.js b/lib/modem.js index 12d88f4..a9b2826 100644 --- a/lib/modem.js +++ b/lib/modem.js @@ -227,7 +227,7 @@ Modem.prototype.dial = function (options, callback) { if (options.hijack) { optionsf.headers.Connection = 'Upgrade'; - optionsf.headers.Upgrade ??= 'tcp'; + optionsf.headers.Upgrade = optionsf.headers.Upgrade ?? 'tcp'; } if (this.socketPath) { From d985e285359501c9cc5ee8730d5514211a159960 Mon Sep 17 00:00:00 2001 From: Marco Schumacher Date: Mon, 29 Jul 2024 21:37:17 +0200 Subject: [PATCH 3/3] fix: don't forget data right after header --- lib/modem.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/modem.js b/lib/modem.js index a9b2826..03d2ac3 100644 --- a/lib/modem.js +++ b/lib/modem.js @@ -302,6 +302,9 @@ Modem.prototype.buildRequest = function (options, context, data, callback) { req.on('upgrade', function (res, sock, head) { if (finished === false) { finished = true; + if (head.length > 0) { + sock.unshift(head); + } return callback(null, sock); } });