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@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 {