Compare commits

..

6 Commits

5 changed files with 24 additions and 11 deletions

@@ -1,5 +1,23 @@
# Changelog # Changelog
## 2025-03-18 - 4.2.4 - fix(ts/index.ts)
Fix export order in ts/index.ts by moving the port proxy export back and adding interfaces export for proper module exposure
- Reorder exports to place './classes.pp.portproxy.js' in the correct position
- Add export for './classes.pp.interfaces.js' to expose internal interfaces
## 2025-03-18 - 4.2.3 - fix(connectionhandler)
Remove unnecessary delay in TLS session ticket handling for connections without SNI
- Eliminated the extra setTimeout waiting period before cleaning up connections flagged as session_ticket_blocked_no_sni
- Ensures immediate cleanup and improves connection responsiveness during TLS handshake failures
## 2025-03-18 - 4.2.2 - fix(connectionhandler)
Ensure proper termination of TLS connections without SNI by explicitly ending the socket after sending the unrecognized_name alert. This prevents the connection from hanging and avoids potential duplicate handling.
- Added socket.end() after uncorking the alert packet in ClientHello handling to force connection closure.
- Prevents duplicate data events and ensures the warning alert is processed by clients like Chrome.
## 2025-03-17 - 4.2.1 - fix(core) ## 2025-03-17 - 4.2.1 - fix(core)
No uncommitted changes detected in the project. No uncommitted changes detected in the project.

@@ -1,6 +1,6 @@
{ {
"name": "@push.rocks/smartproxy", "name": "@push.rocks/smartproxy",
"version": "4.2.1", "version": "4.2.4",
"private": false, "private": false,
"description": "A powerful proxy package that effectively handles high traffic, with features such as SSL/TLS support, port proxying, WebSocket handling, dynamic routing with authentication options, and automatic ACME certificate management.", "description": "A powerful proxy package that effectively handles high traffic, with features such as SSL/TLS support, port proxying, WebSocket handling, dynamic routing with authentication options, and automatic ACME certificate management.",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@push.rocks/smartproxy', name: '@push.rocks/smartproxy',
version: '4.2.1', version: '4.2.4',
description: 'A powerful proxy package that effectively handles high traffic, with features such as SSL/TLS support, port proxying, WebSocket handling, dynamic routing with authentication options, and automatic ACME certificate management.' description: 'A powerful proxy package that effectively handles high traffic, with features such as SSL/TLS support, port proxying, WebSocket handling, dynamic routing with authentication options, and automatic ACME certificate management.'
} }

@@ -589,17 +589,11 @@ export class ConnectionHandler {
socket.cork(); socket.cork();
const writeSuccessful = socket.write(serverNameUnknownAlertData); const writeSuccessful = socket.write(serverNameUnknownAlertData);
socket.uncork(); socket.uncork();
socket.end();
// Function to handle the clean socket termination - but more gradually // Function to handle the clean socket termination - but more gradually
const finishConnection = () => { const finishConnection = () => {
// Give Chrome more time to process the alert before closing
// We won't call destroy() at all - just end() and let the socket close naturally
// Log the cleanup but wait for natural closure
setTimeout(() => {
socket.end();
this.connectionManager.cleanupConnection(record, 'session_ticket_blocked_no_sni'); this.connectionManager.cleanupConnection(record, 'session_ticket_blocked_no_sni');
}, 1000); // Longer delay to let socket cleanup happen naturally
}; };
if (writeSuccessful) { if (writeSuccessful) {

@@ -1,6 +1,7 @@
export * from './classes.iptablesproxy.js'; export * from './classes.iptablesproxy.js';
export * from './classes.networkproxy.js'; export * from './classes.networkproxy.js';
export * from './classes.pp.portproxy.js';
export * from './classes.port80handler.js'; export * from './classes.port80handler.js';
export * from './classes.sslredirect.js'; export * from './classes.sslredirect.js';
export * from './classes.pp.portproxy.js';
export * from './classes.pp.snihandler.js'; export * from './classes.pp.snihandler.js';
export * from './classes.pp.interfaces.js';