[tor-commits] [pluggable-transports/snowflake] branch main updated: change bandwidth type from int to int64 to prevent overflow

gitolite role git at cupani.torproject.org
Mon Nov 21 15:34:01 UTC 2022


This is an automated email from the git hooks/post-receive script.

cohosh pushed a commit to branch main
in repository pluggable-transports/snowflake.

The following commit(s) were added to refs/heads/main by this push:
     new 2c599f8  change bandwidth type from int to int64 to prevent overflow
2c599f8 is described below

commit 2c599f88274b37f743996ed9f4ff0744b84c119d
Author: luciole <luciole at systemli.org>
AuthorDate: Thu Nov 17 14:30:16 2022 +0100

    change bandwidth type from int to int64 to prevent overflow
---
 client/lib/util.go           | 23 ++++++++++++-----------
 client/lib/webrtc.go         |  4 ++--
 common/event/interface.go    |  4 ++--
 proxy/lib/pt_event_logger.go |  4 ++--
 proxy/lib/snowflake.go       |  2 +-
 proxy/lib/util.go            | 31 ++++++++++++++++---------------
 proxy/lib/webrtcconn.go      |  2 +-
 7 files changed, 36 insertions(+), 34 deletions(-)

diff --git a/client/lib/util.go b/client/lib/util.go
index 42c8f97..536fa17 100644
--- a/client/lib/util.go
+++ b/client/lib/util.go
@@ -10,35 +10,36 @@ const (
 )
 
 type bytesLogger interface {
-	addOutbound(int)
-	addInbound(int)
+	addOutbound(int64)
+	addInbound(int64)
 }
 
 // Default bytesLogger does nothing.
 type bytesNullLogger struct{}
 
-func (b bytesNullLogger) addOutbound(amount int) {}
-func (b bytesNullLogger) addInbound(amount int)  {}
+func (b bytesNullLogger) addOutbound(amount int64) {}
+func (b bytesNullLogger) addInbound(amount int64)  {}
 
 // bytesSyncLogger uses channels to safely log from multiple sources with output
 // occuring at reasonable intervals.
 type bytesSyncLogger struct {
-	outboundChan chan int
-	inboundChan  chan int
+	outboundChan chan int64
+	inboundChan  chan int64
 }
 
 // newBytesSyncLogger returns a new bytesSyncLogger and starts it loggin.
 func newBytesSyncLogger() *bytesSyncLogger {
 	b := &bytesSyncLogger{
-		outboundChan: make(chan int, 5),
-		inboundChan:  make(chan int, 5),
+		outboundChan: make(chan int64, 5),
+		inboundChan:  make(chan int64, 5),
 	}
 	go b.log()
 	return b
 }
 
 func (b *bytesSyncLogger) log() {
-	var outbound, inbound, outEvents, inEvents int
+	var outbound, inbound int64
+	var outEvents, inEvents int
 	ticker := time.NewTicker(LogTimeInterval)
 	for {
 		select {
@@ -61,10 +62,10 @@ func (b *bytesSyncLogger) log() {
 	}
 }
 
-func (b *bytesSyncLogger) addOutbound(amount int) {
+func (b *bytesSyncLogger) addOutbound(amount int64) {
 	b.outboundChan <- amount
 }
 
-func (b *bytesSyncLogger) addInbound(amount int) {
+func (b *bytesSyncLogger) addInbound(amount int64) {
 	b.inboundChan <- amount
 }
diff --git a/client/lib/webrtc.go b/client/lib/webrtc.go
index 01990e0..d12688e 100644
--- a/client/lib/webrtc.go
+++ b/client/lib/webrtc.go
@@ -92,7 +92,7 @@ func (c *WebRTCPeer) Write(b []byte) (int, error) {
 	if err != nil {
 		return 0, err
 	}
-	c.bytesLogger.addOutbound(len(b))
+	c.bytesLogger.addOutbound(int64(len(b)))
 	return len(b), nil
 }
 
@@ -226,7 +226,7 @@ func (c *WebRTCPeer) preparePeerConnection(config *webrtc.Configuration) error {
 			log.Println("0 length message---")
 		}
 		n, err := c.writePipe.Write(msg.Data)
-		c.bytesLogger.addInbound(n)
+		c.bytesLogger.addInbound(int64(n))
 		if err != nil {
 			// TODO: Maybe shouldn't actually close.
 			log.Println("Error writing to SOCKS pipe")
diff --git a/common/event/interface.go b/common/event/interface.go
index 64132e0..6386430 100644
--- a/common/event/interface.go
+++ b/common/event/interface.go
@@ -68,8 +68,8 @@ func (e EventOnProxyStarting) String() string {
 
 type EventOnProxyConnectionOver struct {
 	SnowflakeEvent
-	InboundTraffic  int
-	OutboundTraffic int
+	InboundTraffic  int64
+	OutboundTraffic int64
 }
 
 func (e EventOnProxyConnectionOver) String() string {
diff --git a/proxy/lib/pt_event_logger.go b/proxy/lib/pt_event_logger.go
index b16f5ba..ce89545 100644
--- a/proxy/lib/pt_event_logger.go
+++ b/proxy/lib/pt_event_logger.go
@@ -18,8 +18,8 @@ func NewProxyEventLogger(logPeriod time.Duration, output io.Writer) event.Snowfl
 }
 
 type logEventLogger struct {
-	inboundSum      int
-	outboundSum     int
+	inboundSum      int64
+	outboundSum     int64
 	connectionCount int
 	logPeriod       time.Duration
 	task            *task.Periodic
diff --git a/proxy/lib/snowflake.go b/proxy/lib/snowflake.go
index b4ca5c3..ac88f0c 100644
--- a/proxy/lib/snowflake.go
+++ b/proxy/lib/snowflake.go
@@ -412,7 +412,7 @@ func (sf *SnowflakeProxy) makePeerConnectionFromOffer(sdp *webrtc.SessionDescrip
 					log.Printf("close with error generated an error: %v", inerr)
 				}
 			}
-			conn.bytesLogger.AddOutbound(n)
+			conn.bytesLogger.AddOutbound(int64(n))
 			if n != len(msg.Data) {
 				panic("short write")
 			}
diff --git a/proxy/lib/util.go b/proxy/lib/util.go
index c444bb0..0bbe588 100644
--- a/proxy/lib/util.go
+++ b/proxy/lib/util.go
@@ -8,39 +8,40 @@ import (
 // bytesLogger is an interface which is used to allow logging the throughput
 // of the Snowflake. A default bytesLogger(bytesNullLogger) does nothing.
 type bytesLogger interface {
-	AddOutbound(int)
-	AddInbound(int)
+	AddOutbound(int64)
+	AddInbound(int64)
 	ThroughputSummary() string
-	GetStat() (in int, out int)
+	GetStat() (in int64, out int64)
 }
 
 // bytesNullLogger Default bytesLogger does nothing.
 type bytesNullLogger struct{}
 
 // AddOutbound in bytesNullLogger does nothing
-func (b bytesNullLogger) AddOutbound(amount int) {}
+func (b bytesNullLogger) AddOutbound(amount int64) {}
 
 // AddInbound in bytesNullLogger does nothing
-func (b bytesNullLogger) AddInbound(amount int) {}
+func (b bytesNullLogger) AddInbound(amount int64) {}
 
 // ThroughputSummary in bytesNullLogger does nothing
 func (b bytesNullLogger) ThroughputSummary() string { return "" }
 
-func (b bytesNullLogger) GetStat() (in int, out int) { return -1, -1 }
+func (b bytesNullLogger) GetStat() (in int64, out int64) { return -1, -1 }
 
 // bytesSyncLogger uses channels to safely log from multiple sources with output
 // occuring at reasonable intervals.
 type bytesSyncLogger struct {
-	outboundChan, inboundChan              chan int
-	outbound, inbound, outEvents, inEvents int
-	start                                  time.Time
+	outboundChan, inboundChan chan int64
+	outbound, inbound         int64
+	outEvents, inEvents       int
+	start                     time.Time
 }
 
 // newBytesSyncLogger returns a new bytesSyncLogger and starts it loggin.
 func newBytesSyncLogger() *bytesSyncLogger {
 	b := &bytesSyncLogger{
-		outboundChan: make(chan int, 5),
-		inboundChan:  make(chan int, 5),
+		outboundChan: make(chan int64, 5),
+		inboundChan:  make(chan int64, 5),
 	}
 	go b.log()
 	b.start = time.Now()
@@ -61,12 +62,12 @@ func (b *bytesSyncLogger) log() {
 }
 
 // AddOutbound add a number of bytes to the outbound total reported by the logger
-func (b *bytesSyncLogger) AddOutbound(amount int) {
+func (b *bytesSyncLogger) AddOutbound(amount int64) {
 	b.outboundChan <- amount
 }
 
 // AddInbound add a number of bytes to the inbound total reported by the logger
-func (b *bytesSyncLogger) AddInbound(amount int) {
+func (b *bytesSyncLogger) AddInbound(amount int64) {
 	b.inboundChan <- amount
 }
 
@@ -82,6 +83,6 @@ func (b *bytesSyncLogger) ThroughputSummary() string {
 	return fmt.Sprintf("Traffic throughput (up|down): %d %s|%d %s -- (%d OnMessages, %d Sends, over %d seconds)", inbound, inUnit, outbound, outUnit, b.outEvents, b.inEvents, int(t.Sub(b.start).Seconds()))
 }
 
-func (b *bytesSyncLogger) GetStat() (in int, out int) { return b.inbound, b.outbound }
+func (b *bytesSyncLogger) GetStat() (in int64, out int64) { return b.inbound, b.outbound }
 
-func formatTraffic(amount int) (value int, unit string) { return amount / 1000, "KB" }
+func formatTraffic(amount int64) (value int64, unit string) { return amount / 1000, "KB" }
diff --git a/proxy/lib/webrtcconn.go b/proxy/lib/webrtcconn.go
index 919a679..49f98d8 100644
--- a/proxy/lib/webrtcconn.go
+++ b/proxy/lib/webrtcconn.go
@@ -39,7 +39,7 @@ func (c *webRTCConn) Read(b []byte) (int, error) {
 }
 
 func (c *webRTCConn) Write(b []byte) (int, error) {
-	c.bytesLogger.AddInbound(len(b))
+	c.bytesLogger.AddInbound(int64(len(b)))
 	c.lock.Lock()
 	defer c.lock.Unlock()
 	if c.dc != nil {

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tor-commits mailing list