Add new TCPBufferSize parameter to network

This commit is contained in:
9seconds
2021-03-17 21:44:42 +03:00
parent 5e31b95bb5
commit 57cb1b5aa0
11 changed files with 54 additions and 3 deletions
+19 -1
View File
@@ -2,16 +2,34 @@ package network
import (
"fmt"
"net"
"net/url"
"golang.org/x/net/proxy"
)
type socks5Dialer struct {
proxy.ContextDialer
bufferSize int
}
func (s socks5Dialer) Dial(protocol, address string) (net.Conn, error) {
return s.ContextDialer.(proxy.Dialer).Dial(protocol, address)
}
func (s socks5Dialer) TCPBufferSize() int {
return s.bufferSize
}
func NewSocks5Dialer(baseDialer Dialer, proxyURL *url.URL) (Dialer, error) {
rv, err := proxy.FromURL(proxyURL, baseDialer)
if err != nil {
return nil, fmt.Errorf("cannot initialize socks5 proxy dialer: %w", err)
}
return rv.(Dialer), nil
return socks5Dialer{
ContextDialer: rv.(proxy.ContextDialer),
bufferSize: baseDialer.TCPBufferSize(),
}, nil
}