@push.rocks/smartproxy 19.6.1 → 19.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/proxies/smart-proxy/connection-manager.js +13 -5
- package/package.json +8 -17
- package/readme.md +740 -0
- package/ts/proxies/smart-proxy/connection-manager.ts +14 -4
- package/readme.connections.md +0 -724
- package/readme.delete.md +0 -187
- package/readme.hints.md +0 -897
- package/readme.memory-leaks-fixed.md +0 -45
- package/readme.metrics.md +0 -591
- package/readme.monitoring.md +0 -202
- package/readme.plan.md +0 -625
- package/readme.proxy-chain-summary.md +0 -112
- package/readme.proxy-protocol-example.md +0 -462
- package/readme.proxy-protocol.md +0 -415
- package/readme.routing.md +0 -341
|
@@ -488,14 +488,19 @@ export class ConnectionManager extends LifecycleComponent {
|
|
|
488
488
|
// Check for half-zombie: one socket destroyed
|
|
489
489
|
if (incomingDestroyed || outgoingDestroyed) {
|
|
490
490
|
const age = now - record.incomingStartTime;
|
|
491
|
-
//
|
|
492
|
-
|
|
491
|
+
// Use longer grace period for encrypted connections (5 minutes vs 30 seconds)
|
|
492
|
+
const gracePeriod = record.isTLS ? 300000 : 30000;
|
|
493
|
+
|
|
494
|
+
// Also ensure connection is old enough to avoid premature cleanup
|
|
495
|
+
if (age > gracePeriod && age > 10000) {
|
|
493
496
|
logger.log('warn', `Half-zombie connection detected: ${connectionId} - ${incomingDestroyed ? 'incoming' : 'outgoing'} destroyed`, {
|
|
494
497
|
connectionId,
|
|
495
498
|
remoteIP: record.remoteIP,
|
|
496
499
|
age: plugins.prettyMs(age),
|
|
497
500
|
incomingDestroyed,
|
|
498
501
|
outgoingDestroyed,
|
|
502
|
+
isTLS: record.isTLS,
|
|
503
|
+
gracePeriod: plugins.prettyMs(gracePeriod),
|
|
499
504
|
component: 'connection-manager'
|
|
500
505
|
});
|
|
501
506
|
|
|
@@ -507,8 +512,11 @@ export class ConnectionManager extends LifecycleComponent {
|
|
|
507
512
|
// Check for stuck connections: no data sent back to client
|
|
508
513
|
if (!record.connectionClosed && record.outgoing && record.bytesReceived > 0 && record.bytesSent === 0) {
|
|
509
514
|
const age = now - record.incomingStartTime;
|
|
510
|
-
//
|
|
511
|
-
|
|
515
|
+
// Use longer grace period for encrypted connections (5 minutes vs 60 seconds)
|
|
516
|
+
const stuckThreshold = record.isTLS ? 300000 : 60000;
|
|
517
|
+
|
|
518
|
+
// If connection is older than threshold and no data sent back, likely stuck
|
|
519
|
+
if (age > stuckThreshold) {
|
|
512
520
|
logger.log('warn', `Stuck connection detected: ${connectionId} - received ${record.bytesReceived} bytes but sent 0 bytes`, {
|
|
513
521
|
connectionId,
|
|
514
522
|
remoteIP: record.remoteIP,
|
|
@@ -516,6 +524,8 @@ export class ConnectionManager extends LifecycleComponent {
|
|
|
516
524
|
bytesReceived: record.bytesReceived,
|
|
517
525
|
targetHost: record.targetHost,
|
|
518
526
|
targetPort: record.targetPort,
|
|
527
|
+
isTLS: record.isTLS,
|
|
528
|
+
threshold: plugins.prettyMs(stuckThreshold),
|
|
519
529
|
component: 'connection-manager'
|
|
520
530
|
});
|
|
521
531
|
|