Browse Source

Fixes for InproxyProxyActivity notice

- InproxyProxyActivity is not a diagnostic notice
- Emit InproxyProxyActivity whenever connecting/connected client count changes
Rod Hynes 1 year ago
parent
commit
8656e3c6ae
2 changed files with 24 additions and 6 deletions
  1. 23 5
      psiphon/controller.go
  2. 1 1
      psiphon/notice.go

+ 23 - 5
psiphon/controller.go

@@ -2589,6 +2589,7 @@ func (controller *Controller) runInproxyProxy() {
 	activityNoticePeriod := p.Duration(parameters.InproxyProxyTotalActivityNoticePeriod)
 	activityNoticePeriod := p.Duration(parameters.InproxyProxyTotalActivityNoticePeriod)
 	var lastActivityNotice time.Time
 	var lastActivityNotice time.Time
 	var lastActivityConnectingClients, lastActivityConnectedClients int32
 	var lastActivityConnectingClients, lastActivityConnectedClients int32
+	var lastActivityConnectingClientsTotal, lastActivityConnectedClientsTotal int32
 	var activityTotalBytesUp, activityTotalBytesDown int64
 	var activityTotalBytesUp, activityTotalBytesDown int64
 	activityUpdater := func(
 	activityUpdater := func(
 		connectingClients int32,
 		connectingClients int32,
@@ -2600,27 +2601,44 @@ func (controller *Controller) runInproxyProxy() {
 		// This emit logic mirrors the logic for NoticeBytesTransferred and
 		// This emit logic mirrors the logic for NoticeBytesTransferred and
 		// NoticeTotalBytesTransferred in tunnel.operateTunnel.
 		// NoticeTotalBytesTransferred in tunnel.operateTunnel.
 
 
+		// InproxyProxyActivity frequently emits bytes transferred since the
+		// last notice, when not idle; in addition to the current number of
+		// connecting and connected clients, whenever that changes. This
+		// frequent notice is excluded from diagnostics and is for UI
+		// activity display.
+
 		if controller.config.EmitInproxyProxyActivity &&
 		if controller.config.EmitInproxyProxyActivity &&
-			(bytesUp > 0 || bytesDown > 0) {
+			(bytesUp > 0 || bytesDown > 0) ||
+			connectingClients != lastActivityConnectingClients ||
+			connectedClients != lastActivityConnectedClients {
 
 
 			NoticeInproxyProxyActivity(
 			NoticeInproxyProxyActivity(
 				connectingClients, connectedClients, bytesUp, bytesDown)
 				connectingClients, connectedClients, bytesUp, bytesDown)
+
+			lastActivityConnectingClients = connectingClients
+			lastActivityConnectedClients = connectedClients
 		}
 		}
 
 
 		activityTotalBytesUp += bytesUp
 		activityTotalBytesUp += bytesUp
 		activityTotalBytesDown += bytesDown
 		activityTotalBytesDown += bytesDown
 
 
+		// InproxyProxyTotalActivity periodically emits total bytes
+		// transferred since starting; in addition to the current number of
+		// connecting and connected clients, whenever that changes. This
+		// notice is for diagnostics.
+
 		if lastActivityNotice.Add(activityNoticePeriod).Before(time.Now()) ||
 		if lastActivityNotice.Add(activityNoticePeriod).Before(time.Now()) ||
-			connectingClients != lastActivityConnectingClients ||
-			connectedClients != lastActivityConnectedClients {
+			connectingClients != lastActivityConnectingClientsTotal ||
+			connectedClients != lastActivityConnectedClientsTotal {
 
 
 			NoticeInproxyProxyTotalActivity(
 			NoticeInproxyProxyTotalActivity(
 				connectingClients, connectedClients,
 				connectingClients, connectedClients,
 				activityTotalBytesUp, activityTotalBytesDown)
 				activityTotalBytesUp, activityTotalBytesDown)
 			lastActivityNotice = time.Now()
 			lastActivityNotice = time.Now()
+
+			lastActivityConnectingClientsTotal = connectingClients
+			lastActivityConnectedClientsTotal = connectedClients
 		}
 		}
-		lastActivityConnectingClients = connectingClients
-		lastActivityConnectedClients = connectedClients
 	}
 	}
 
 
 	config := &inproxy.ProxyConfig{
 	config := &inproxy.ProxyConfig{

+ 1 - 1
psiphon/notice.go

@@ -1103,7 +1103,7 @@ func NoticeInproxyProxyActivity(
 	bytesDown int64) {
 	bytesDown int64) {
 
 
 	singletonNoticeLogger.outputNotice(
 	singletonNoticeLogger.outputNotice(
-		"InproxyProxyActivity", noticeIsDiagnostic,
+		"InproxyProxyActivity", 0,
 		"connectingClients", connectingClients,
 		"connectingClients", connectingClients,
 		"connectedClients", connectedClients,
 		"connectedClients", connectedClients,
 		"bytesUp", bytesUp,
 		"bytesUp", bytesUp,