fix: tcp-ping
This commit is contained in:
parent
c50a21c5b1
commit
fa0cc9bb7a
@ -474,13 +474,21 @@ func handleUpgradeTask(*pb.Task, *pb.TaskResult) {
|
||||
}
|
||||
|
||||
func handleTcpPingTask(task *pb.Task, result *pb.TaskResult) {
|
||||
ipAddr, err := lookupIP(task.GetData())
|
||||
host, port, err := net.SplitHostPort(task.GetData())
|
||||
if err != nil {
|
||||
result.Data = err.Error()
|
||||
return
|
||||
}
|
||||
ipAddr, err := lookupIP(host)
|
||||
if err != nil {
|
||||
result.Data = err.Error()
|
||||
return
|
||||
}
|
||||
if strings.Contains(ipAddr, ":") {
|
||||
ipAddr = fmt.Sprintf("[%s]", ipAddr)
|
||||
}
|
||||
start := time.Now()
|
||||
conn, err := net.DialTimeout("tcp", ipAddr, time.Second*10)
|
||||
conn, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%s", ipAddr, port), time.Second*10)
|
||||
if err == nil {
|
||||
conn.Write([]byte("ping\n"))
|
||||
conn.Close()
|
||||
|
@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
@ -31,4 +32,18 @@ func TestLookupIP(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Errorf("lookupIP failed: %v", err)
|
||||
}
|
||||
_, err = net.ResolveIPAddr("ip", "www.google.com")
|
||||
if err != nil {
|
||||
t.Errorf("ResolveIPAddr failed: %v", err)
|
||||
}
|
||||
|
||||
ip, err = lookupIP("ipv6.google.com")
|
||||
fmt.Printf("ip: %v, err: %v\n", ip, err)
|
||||
if err != nil {
|
||||
t.Errorf("lookupIP failed: %v", err)
|
||||
}
|
||||
_, err = net.ResolveIPAddr("ip", "ipv6.google.com")
|
||||
if err != nil {
|
||||
t.Errorf("ResolveIPAddr failed: %v", err)
|
||||
}
|
||||
}
|
||||
|
@ -39,14 +39,17 @@ func UpdateIP(useIPv6CountryCode bool, period uint32) {
|
||||
continue
|
||||
}
|
||||
if ipv4 == "" || ipv6 == "" {
|
||||
if ipv4 == "" {
|
||||
GeoQueryIP = ipv6
|
||||
} else {
|
||||
GeoQueryIP = ipv4
|
||||
}
|
||||
CachedIP = fmt.Sprintf("%s%s", ipv4, ipv6)
|
||||
} else {
|
||||
CachedIP = fmt.Sprintf("%s/%s", ipv4, ipv6)
|
||||
}
|
||||
|
||||
if !useIPv6CountryCode {
|
||||
GeoQueryIP = ipv4
|
||||
} else {
|
||||
if useIPv6CountryCode {
|
||||
GeoQueryIP = ipv6
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user