Răsfoiți Sursa

Use dialer in relay checks (fixes #2732)

Audrius Butkevicius 9 ani în urmă
părinte
comite
f59e1ad854

+ 1 - 2
lib/connections/connections_tcp.go

@@ -14,7 +14,6 @@ import (
 
 	"github.com/syncthing/syncthing/lib/dialer"
 	"github.com/syncthing/syncthing/lib/model"
-	"github.com/syncthing/syncthing/lib/osutil"
 )
 
 func init() {
@@ -72,7 +71,7 @@ func tcpListener(uri *url.URL, tlsCfg *tls.Config, conns chan<- model.Intermedia
 
 		l.Debugln("connect from", conn.RemoteAddr())
 
-		err = osutil.SetTCPOptions(conn.(*net.TCPConn))
+		err = dialer.SetTCPOptions(conn.(*net.TCPConn))
 		if err != nil {
 			l.Infoln(err)
 		}

+ 2 - 3
lib/dialer/internal.go

@@ -17,7 +17,6 @@ import (
 	"golang.org/x/net/proxy"
 
 	"github.com/syncthing/syncthing/lib/logger"
-	"github.com/syncthing/syncthing/lib/osutil"
 )
 
 var (
@@ -55,7 +54,7 @@ func dialWithFallback(proxyDialFunc dialFunc, fallbackDialFunc dialFunc, network
 	if err == nil {
 		l.Debugf("Dialing %s address %s via proxy - success, %s -> %s", network, addr, conn.LocalAddr(), conn.RemoteAddr())
 		if tcpconn, ok := conn.(*net.TCPConn); ok {
-			osutil.SetTCPOptions(tcpconn)
+			SetTCPOptions(tcpconn)
 		}
 		return dialerConn{
 			conn, newDialerAddr(network, addr),
@@ -67,7 +66,7 @@ func dialWithFallback(proxyDialFunc dialFunc, fallbackDialFunc dialFunc, network
 	if err == nil {
 		l.Debugf("Dialing %s address %s via fallback - success, %s -> %s", network, addr, conn.LocalAddr(), conn.RemoteAddr())
 		if tcpconn, ok := conn.(*net.TCPConn); ok {
-			osutil.SetTCPOptions(tcpconn)
+			SetTCPOptions(tcpconn)
 		}
 	} else {
 		l.Debugf("Dialing %s address %s via fallback - error %s", network, addr, err)

+ 18 - 0
lib/dialer/public.go

@@ -46,3 +46,21 @@ func DialTimeout(network, addr string, timeout time.Duration) (net.Conn, error)
 	}
 	return net.DialTimeout(network, addr, timeout)
 }
+
+// SetTCPOptions sets syncthings default TCP options on a TCP connection
+func SetTCPOptions(conn *net.TCPConn) error {
+	var err error
+	if err = conn.SetLinger(0); err != nil {
+		return err
+	}
+	if err = conn.SetNoDelay(false); err != nil {
+		return err
+	}
+	if err = conn.SetKeepAlivePeriod(60 * time.Second); err != nil {
+		return err
+	}
+	if err = conn.SetKeepAlive(true); err != nil {
+		return err
+	}
+	return nil
+}

+ 0 - 20
lib/osutil/osutil.go

@@ -11,12 +11,10 @@ import (
 	"errors"
 	"fmt"
 	"io"
-	"net"
 	"os"
 	"path/filepath"
 	"runtime"
 	"strings"
-	"time"
 
 	"github.com/calmh/du"
 	"github.com/syncthing/syncthing/lib/sync"
@@ -223,21 +221,3 @@ func DiskFreePercentage(path string) (freePct float64, err error) {
 	u, err := du.Get(path)
 	return (float64(u.FreeBytes) / float64(u.TotalBytes)) * 100, err
 }
-
-// SetTCPOptions sets syncthings default TCP options on a TCP connection
-func SetTCPOptions(conn *net.TCPConn) error {
-	var err error
-	if err = conn.SetLinger(0); err != nil {
-		return err
-	}
-	if err = conn.SetNoDelay(false); err != nil {
-		return err
-	}
-	if err = conn.SetKeepAlivePeriod(60 * time.Second); err != nil {
-		return err
-	}
-	if err = conn.SetKeepAlive(true); err != nil {
-		return err
-	}
-	return nil
-}

+ 3 - 5
lib/osutil/ping.go

@@ -7,20 +7,18 @@
 package osutil
 
 import (
-	"net"
 	"net/url"
 	"time"
+
+	"github.com/syncthing/syncthing/lib/dialer"
 )
 
 // TCPPing returns the duration required to establish a TCP connection
 // to the given host. ICMP packets require root priviledges, hence why we use
 // tcp.
 func TCPPing(address string) (time.Duration, error) {
-	dialer := net.Dialer{
-		Deadline: time.Now().Add(time.Second),
-	}
 	start := time.Now()
-	conn, err := dialer.Dial("tcp", address)
+	conn, err := dialer.DialTimeout("tcp", address, time.Second)
 	if conn != nil {
 		conn.Close()
 	}