@@ -208,7 +208,7 @@ func (c *ConnPool) connect() (connitem *ConnItem, err error) {
208208 if isNetworkUnreachable (err ) {
209209 return nil , fmt .Errorf ("error connect Unreachable network! '%s' @ '%s' err='%v'" , c .provider .Host , c .provider .Name , err )
210210 }
211- dlog (always , "ERROR connect Dial '%s' no retry err='%v'" , c .provider .Name , err )
211+ dlog (cfg . opt . DebugConnPool , "ERROR connect Dial '%s' no retry err='%v'" , c .provider .Name , err )
212212 return nil , err
213213 }
214214 case true :
@@ -224,7 +224,7 @@ func (c *ConnPool) connect() (connitem *ConnItem, err error) {
224224 if isNetworkUnreachable (err ) {
225225 return nil , fmt .Errorf ("error connect Unreachable network! '%s' @ '%s' err='%v'" , c .provider .Host , c .provider .Name , err )
226226 }
227- dlog (always , "ERROR connect Dial '%s' no-retry err='%v'" , c .provider .Name , err )
227+ dlog (cfg . opt . DebugConnPool , "ERROR connect Dial '%s' no-retry err='%v'" , c .provider .Name , err )
228228 return nil , err
229229 }
230230 } // end switch
@@ -326,7 +326,7 @@ func (c *ConnPool) NewConn() (connitem *ConnItem, err error) {
326326 if err != nil || connitem == nil || connitem .conn == nil {
327327 c .mux .Lock () // mutex c460
328328 c .openConns --
329- dlog (always , "ERROR in ConnPool NewConn: connect failed '%s' openConns=%d connitem='%v' err='%v'" , c .provider .Name , c .openConns , connitem , err )
329+ dlog (cfg . opt . DebugConnPool , "ERROR in ConnPool NewConn: connect failed '%s' openConns=%d connitem='%v' err='%v'" , c .provider .Name , c .openConns , connitem , err )
330330 c .mux .Unlock () // mutex c460
331331 return nil , fmt .Errorf ("error in ConnPool NewConn: connect failed '%s' err='%v'" , c .provider .Name , err )
332332 }
@@ -335,6 +335,7 @@ func (c *ConnPool) NewConn() (connitem *ConnItem, err error) {
335335 c .mux .RUnlock () // mutex c461
336336 // we have a new connection!
337337 GCounter .Incr ("TOTAL_NewConns" )
338+ go c .provider .IncrementOpenConns ()
338339 return connitem , nil // established new connection and returns connitem
339340 }
340341 c .mux .Unlock () // mutex c459a
@@ -539,6 +540,7 @@ func (c *ConnPool) CloseConn(connitem *ConnItem, sharedConnChan chan *ConnItem)
539540 c .openConns --
540541 dlog (cfg .opt .DebugConnPool , "DisConn '%s' inPool=%d open=%d" , c .provider .Name , len (c .pool ), c .openConns )
541542 c .mux .Unlock ()
543+ go c .provider .DecrementOpenConns ()
542544 // if a sharedConnChan is supplied we send a nil to the channel
543545 // a nil as connitem signals the routines to get a new conn
544546 // mostly because conn was closed by network, protocol error or timeout
@@ -737,9 +739,7 @@ func SharedConnGet(sharedCC chan *ConnItem, provider *Provider) (connitem *ConnI
737739 }
738740 if ! needNewConn && aconnitem != nil && aconnitem .conn != nil {
739741 // we have a valid connection, use it
740- if cfg .opt .BUG {
741- dlog (cfg .opt .DebugConnPool , "SharedConnGet: got shared connection '%s' aconnitem='%#v'" , provider .Name , aconnitem )
742- }
742+ dlog (cfg .opt .DebugConnPool , "SharedConnGet: got shared connection '%s' aconnitem='%#v'" , provider .Name , aconnitem )
743743 provider .ConnPool .ExtendConn (connitem )
744744 return aconnitem , nil
745745 }
@@ -750,13 +750,13 @@ func SharedConnGet(sharedCC chan *ConnItem, provider *Provider) (connitem *ConnI
750750 newconnitem , err := provider .ConnPool .GetConn ()
751751 if err != nil || newconnitem == nil || newconnitem .conn == nil {
752752 // unable to get a new connection, put nil back into sharedCC
753- dlog (always , "ERROR SharedConnGet connect failed Provider '%s' err='%v'" , provider .Name , err )
753+ dlog (cfg . opt . DebugConnPool , "ERROR SharedConnGet connect failed Provider '%s' err='%v'" , provider .Name , err )
754754 sharedCC <- nil // put nil back into sharedCC
755- return
755+ return nil , err
756756 }
757757 connitem = newconnitem // use the new connection item
758758 provider .ConnPool .ExtendConn (connitem )
759- return
759+ return connitem , nil
760760} // end func SharedConnGet
761761
762762// SharedConnReturn puts a connection back into the sharedCC channel.
@@ -836,6 +836,16 @@ func Speedmeter(byteSize int64, cp *ConnPool, cnt *Counter_uint64, workerWGconnR
836836 txSpeed , txMbps := ConvertSpeed (int64 (tmpTX ), PrintStats )
837837 dlPerc := int (float64 (totalRX ) / float64 (byteSize ) * 100 )
838838 upPerc := int (float64 (totalTX ) / float64 (byteSize ) * 100 )
839+
840+ // Store speed values in provider struct for web UI (if this is a provider-specific speedmeter)
841+ if cp != nil && cp .provider != nil {
842+ cp .provider .mux .Lock ()
843+ cp .provider .speed .downloadSpeed = float64 (rxSpeed ) * 1024 // convert KiB/s to bytes/sec
844+ cp .provider .speed .uploadSpeed = float64 (txSpeed ) * 1024 // convert KiB/s to bytes/sec
845+ cp .provider .speed .lastUpdated = time .Now ().Unix ()
846+ cp .provider .mux .Unlock ()
847+ }
848+
839849 printSpeedTable (dlPerc , upPerc , totalRX , totalTX , rxSpeed , txSpeed , rxMbps , txMbps , name , group )
840850
841851 }
0 commit comments