diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/sockopt_linux.go | 22 | ||||
-rw-r--r-- | server/sockopt_linux_test.go | 4 |
2 files changed, 16 insertions, 10 deletions
diff --git a/server/sockopt_linux.go b/server/sockopt_linux.go index 336caf15..9fe02ba5 100644 --- a/server/sockopt_linux.go +++ b/server/sockopt_linux.go @@ -32,10 +32,12 @@ const ( type tcpmd5sig struct { ss_family uint16 ss [126]byte - pad1 uint16 - keylen uint16 - pad2 uint32 - key [80]byte + // padding the struct + _ uint16 + keylen uint16 + // padding the struct + _ uint32 + key [80]byte } func buildTcpMD5Sig(address string, key string) (tcpmd5sig, error) { @@ -66,10 +68,11 @@ func setsockoptTcpMD5Sig(fd int, address string, key string) error { func SetTcpMD5SigSockopt(l *net.TCPListener, address string, key string) error { fi, _, err := extractFileAndFamilyFromTCPListener(l) - defer fi.Close() if err != nil { return err } + defer fi.Close() + return setsockoptTcpMD5Sig(int(fi.Fd()), address, key) } @@ -85,19 +88,21 @@ func setsockoptIpTtl(fd int, family int, value int) error { func SetListenTcpTTLSockopt(l *net.TCPListener, ttl int) error { fi, family, err := extractFileAndFamilyFromTCPListener(l) - defer fi.Close() if err != nil { return err } + defer fi.Close() + return setsockoptIpTtl(int(fi.Fd()), family, ttl) } func SetTcpTTLSockopt(conn *net.TCPConn, ttl int) error { fi, family, err := extractFileAndFamilyFromTCPConn(conn) - defer fi.Close() if err != nil { return err } + defer fi.Close() + return setsockoptIpTtl(int(fi.Fd()), family, ttl) } @@ -113,10 +118,11 @@ func setsockoptIpMinTtl(fd int, family int, value int) error { func SetTcpMinTTLSockopt(conn *net.TCPConn, ttl int) error { fi, family, err := extractFileAndFamilyFromTCPConn(conn) - defer fi.Close() if err != nil { return err } + defer fi.Close() + return setsockoptIpMinTtl(int(fi.Fd()), family, ttl) } diff --git a/server/sockopt_linux_test.go b/server/sockopt_linux_test.go index 3730672c..a08e7fc7 100644 --- a/server/sockopt_linux_test.go +++ b/server/sockopt_linux_test.go @@ -42,7 +42,7 @@ func Test_buildTcpMD5Sig(t *testing.T) { buf2 := []uint8{2, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 104, 101, 108, 108, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} - if bytes.Compare(buf1, buf2) == 0 { + if bytes.Equal(buf1, buf2) { t.Log("OK") } else { t.Error("Something wrong v4") @@ -62,7 +62,7 @@ func Test_buildTcpMD5Sigv6(t *testing.T) { buf2[0] = syscall.AF_INET6 - if bytes.Compare(buf1, buf2) == 0 { + if bytes.Equal(buf1, buf2) { t.Log("OK") } else { t.Error("Something wrong v6") |