diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-1800/preregister.js b/zefie_wtvp_minisrv/ServiceVault/wtv-1800/preregister.js
index 43f3e7d6..56180d57 100644
--- a/zefie_wtvp_minisrv/ServiceVault/wtv-1800/preregister.js
+++ b/zefie_wtvp_minisrv/ServiceVault/wtv-1800/preregister.js
@@ -117,14 +117,15 @@ if (ssid_sessions[socket.ssid].data_store.wtvsec_login) {
if (request_headers.query.reconnect) gourl = null;
- if (!file_path != null && !minisrv_config.config.debug_flags.quiet) console.log(" * Sending TellyScript", file_path, "on socket", socket.id);
-
if (request_headers.query.guest_login) {
send_tellyscript = false;
if (gourl != null) gourl += "&guest_login=true"
if (request_headers.query.skip_splash) gourl += "&skip_splash=true";
}
+ if (!file_path != null && send_tellyscript && !minisrv_config.config.debug_flags.quiet) console.log(" * Sending TellyScript", file_path, "on socket", socket.id);
+
+
headers = "200 OK\n"
if (bf0app_update) headers += "minisrv-use-carriage-return: false\n";
headers += "Connection: Keep-Alive\n";
diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/Modem_Firmware/Locale/en-US/modem_firmware.dat.gz b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/Modem_Firmware/Locale/en-US/kflex/modem_firmware.dat.gz
similarity index 99%
rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/Modem_Firmware/Locale/en-US/modem_firmware.dat.gz
rename to zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/Modem_Firmware/Locale/en-US/kflex/modem_firmware.dat.gz
index cda77497..8d709962 100644
Binary files a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/Modem_Firmware/Locale/en-US/modem_firmware.dat.gz and b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/Modem_Firmware/Locale/en-US/kflex/modem_firmware.dat.gz differ
diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/Modem_Firmware/Locale/en-US/v90/modem_firmware.dat.gz b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/Modem_Firmware/Locale/en-US/v90/modem_firmware.dat.gz
new file mode 100644
index 00000000..f1df9b19
Binary files /dev/null and b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/Modem_Firmware/Locale/en-US/v90/modem_firmware.dat.gz differ
diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/diskmaps/ModemFirmware.json b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/diskmaps/ModemFirmware.json
index 25de241e..93aebcff 100644
--- a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/diskmaps/ModemFirmware.json
+++ b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/diskmaps/ModemFirmware.json
@@ -7,9 +7,10 @@
"service_owned": true,
"files": [
{
- "file": "file://Disk/Browser/Modem_Firmware/Locale/en-US/modem_firmware.dat.gz"
+ "file": "file://Disk/Browser/Modem_Firmware/Locale/en-US/modem_firmware.dat.gz",
+ "location": "content/Modem_Firmware/Locale/en-US/v90/modem_firmware.dat.gz"
},
- {
+ {
"file": "file://Disk/Browser/Modem_Firmware/Locale/ja-JP/modem_firmware.dat.gz"
}
]
diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/diskmaps/ModemFirmwareOld.json b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/diskmaps/ModemFirmwareOld.json
new file mode 100644
index 00000000..ff770dfd
--- /dev/null
+++ b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/diskmaps/ModemFirmwareOld.json
@@ -0,0 +1,18 @@
+{
+ "ModemFirmware": {
+ "base": "file://Disk/Browser/Modem_Firmware/",
+ "location": "content/Modem_Firmware/",
+ "execute": "client:ModemReload",
+ "execute_when": "atEnd",
+ "service_owned": true,
+ "files": [
+ {
+ "file": "file://Disk/Browser/Modem_Firmware/Locale/en-US/modem_firmware.dat.gz",
+ "location": "content/Modem_Firmware/Locale/en-US/kflex/modem_firmware.dat.gz"
+ },
+ {
+ "file": "file://Disk/Browser/Modem_Firmware/Locale/ja-JP/modem_firmware.dat.gz"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js
index 6046689c..c7810f1b 100644
--- a/zefie_wtvp_minisrv/app.js
+++ b/zefie_wtvp_minisrv/app.js
@@ -721,21 +721,58 @@ async function sendToClient(socket, headers_obj, data) {
var toClient = null;
if (typeof data == 'string') {
toClient = headers + end_of_line + data;
- socket.write(Buffer.from(toClient));
+ sendToSocket(socket, Buffer.from(toClient));
} else if (typeof data == 'object') {
if (minisrv_config.config.debug_flags.quiet) var verbosity_mod = (headers_obj["wtv-encrypted"] == 'true') ? " encrypted response" : "";
if (socket_sessions[socket.id].secure_headers == true) {
// encrypt headers
if (minisrv_config.config.debug_flags.quiet) verbosity_mod += " with encrypted headers";
var enc_headers = socket_sessions[socket.id].wtvsec.Encrypt(1, headers + end_of_line);
- socket.write(new Buffer.from(concatArrayBuffer(enc_headers, data)));
+ sendToSocket(socket, new Buffer.from(concatArrayBuffer(enc_headers, data)));
} else {
- socket.write(new Buffer.from(concatArrayBuffer(Buffer.from(headers + end_of_line), data)));
+ sendToSocket(socket, new Buffer.from(concatArrayBuffer(Buffer.from(headers + end_of_line), data)));
}
if (minisrv_config.config.debug_flags.quiet) console.log(" * Sent" + verbosity_mod + " " + headers_obj.http_response + " to client (Content-Type:", headers_obj['Content-Type'], "~", headers_obj['Content-length'], "bytes)");
}
}
+async function sendToSocket(socket, data) {
+ // buffer size = lesser of minisrv_config.config.chunk_size or size remaining
+ var chunk_size = 16384;
+ var can_write = true;
+ var expected_data_out = 0;
+ while ((socket.bytesWritten == 0 || socket.bytesWritten != expected_data_out) && can_write) {
+ if (expected_data_out === 0) expected_data_out = data.byteLength + (socket_sessions[socket.id].socket_total_written || 0);
+ if (socket.bytesWritten == expected_data_out) break;
+
+ var data_left = (expected_data_out - socket.bytesWritten);
+ var buffer_size = (data_left >= chunk_size) ? chunk_size : data_left;
+ var offset = (data.byteLength - data_left);
+ var chunk = new Buffer.alloc(buffer_size);
+ data.copy(chunk, 0, offset, (offset + buffer_size));
+ can_write = socket.write(chunk);
+ if (!can_write) {
+ socket.once('drain', function () {
+ sendToSocket(socket, data);
+ });
+ break;
+ }
+ }
+ if (socket.bytesWritten == expected_data_out) {
+ socket_sessions[socket.id].socket_total_written = socket.bytesWritten;
+ if (socket_sessions[socket.id].expecting_post_data) delete socket_sessions[socket.id].expecting_post_data;
+ if (socket_sessions[socket.id].header_buffer) delete socket_sessions[socket.id].header_buffer;
+ if (socket_sessions[socket.id].secure_buffer) delete socket_sessions[socket.id].secure_buffer;
+ if (socket_sessions[socket.id].buffer) delete socket_sessions[socket.id].buffer;
+ if (socket_sessions[socket.id].headers) delete socket_sessions[socket.id].headers;
+ if (socket_sessions[socket.id].post_data) delete socket_sessions[socket.id].post_data;
+ if (socket_sessions[socket.id].post_data_length) delete socket_sessions[socket.id].post_data_length;
+ if (socket_sessions[socket.id].post_data_percents_shown) delete socket_sessions[socket.id].post_data_percents_shown;
+ socket.setTimeout(minisrv_config.config.socket_timeout * 1000);
+ if (socket_sessions[socket.id].close_me) socket.end();
+ if (socket_sessions[socket.id].destroy_me) socket.destroy();
+ }
+}
function concatArrayBuffer(buffer1, buffer2) {
var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);
diff --git a/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj b/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj
index 1810a2a6..6d59b961 100644
--- a/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj
+++ b/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj
@@ -52,6 +52,7 @@
Code
+
Code