Просмотр исходного кода

cmd/strelaysrv: Use listen address for outgoing HTTP requests (fixes #3682)

Audrius Butkevicius 9 лет назад
Родитель
Сommit
bb23e3940e
1 измененных файлов с 16 добавлено и 0 удалено
  1. 16 0
      cmd/strelaysrv/main.go

+ 16 - 0
cmd/strelaysrv/main.go

@@ -8,6 +8,7 @@ import (
 	"fmt"
 	"log"
 	"net"
+	"net/http"
 	"net/url"
 	"os"
 	"os/signal"
@@ -120,6 +121,21 @@ func main() {
 		log.Fatal(err)
 	}
 
+	laddr, err := net.ResolveTCPAddr(proto, listen)
+	if err != nil {
+		log.Fatal(err)
+	}
+	if laddr.IP != nil && !laddr.IP.IsUnspecified() {
+		laddr.Port = 0
+		transport, ok := http.DefaultTransport.(*http.Transport)
+		if ok {
+			transport.DialContext = (&net.Dialer{
+				Timeout:   30 * time.Second,
+				LocalAddr: laddr,
+			}).DialContext
+		}
+	}
+
 	log.Println(LongVersion)
 
 	maxDescriptors, err := osutil.MaximizeOpenFileLimit()