a
This commit is contained in:
@ -2,6 +2,7 @@ proxy更新日志
|
|||||||
v6.4
|
v6.4
|
||||||
1.http(s)代理增加了--jumper参数,可以穿透外部代理连接上级.
|
1.http(s)代理增加了--jumper参数,可以穿透外部代理连接上级.
|
||||||
2.优化了socks5代理UDP功能可能存在的内存占用过多问题.
|
2.优化了socks5代理UDP功能可能存在的内存占用过多问题.
|
||||||
|
3.优化了jumper,避免某些情况下不能正确返回错误的问题.
|
||||||
|
|
||||||
v6.3
|
v6.3
|
||||||
1.fixed #156
|
1.fixed #156
|
||||||
|
|||||||
@ -24,8 +24,9 @@ func (s socks5Dialer) Dial(network, addr string) (net.Conn, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func New(proxyURL string, timeout time.Duration) (j Jumper, err error) {
|
func New(proxyURL string, timeout time.Duration) (j Jumper, err error) {
|
||||||
u, err := url.Parse(proxyURL)
|
u, e := url.Parse(proxyURL)
|
||||||
if err != nil {
|
if e != nil {
|
||||||
|
err = e
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
j = Jumper{
|
j = Jumper{
|
||||||
@ -34,7 +35,7 @@ func New(proxyURL string, timeout time.Duration) (j Jumper, err error) {
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (j *Jumper) Dial(address string, timeout time.Duration) (conn net.Conn, err error) {
|
func (j *Jumper) Dial(address string, timeout time.Duration) (net.Conn, error) {
|
||||||
switch j.proxyURL.Scheme {
|
switch j.proxyURL.Scheme {
|
||||||
case "https":
|
case "https":
|
||||||
return j.dialHTTPS(address, timeout)
|
return j.dialHTTPS(address, timeout)
|
||||||
@ -70,10 +71,10 @@ func (j *Jumper) dialHTTPS(address string, timeout time.Duration) (conn net.Conn
|
|||||||
}
|
}
|
||||||
reply := make([]byte, 1024)
|
reply := make([]byte, 1024)
|
||||||
conn.SetDeadline(time.Now().Add(timeout))
|
conn.SetDeadline(time.Now().Add(timeout))
|
||||||
n, err := conn.Read(reply)
|
n, e := conn.Read(reply)
|
||||||
conn.SetDeadline(time.Time{})
|
conn.SetDeadline(time.Time{})
|
||||||
if err != nil {
|
if e != nil {
|
||||||
err = fmt.Errorf("error read reply from proxy: %s", err)
|
err = fmt.Errorf("error read reply from proxy: %s", e)
|
||||||
conn.Close()
|
conn.Close()
|
||||||
conn = nil
|
conn = nil
|
||||||
return
|
return
|
||||||
@ -94,9 +95,9 @@ func (j *Jumper) dialSOCKS5(address string, timeout time.Duration) (conn net.Con
|
|||||||
} else {
|
} else {
|
||||||
auth = nil
|
auth = nil
|
||||||
}
|
}
|
||||||
dialSocksProxy, err := proxy.SOCKS5("tcp", j.proxyURL.Host, auth, socks5Dialer{timeout: timeout})
|
dialSocksProxy, e := proxy.SOCKS5("tcp", j.proxyURL.Host, auth, socks5Dialer{timeout: timeout})
|
||||||
if err != nil {
|
if e != nil {
|
||||||
err = fmt.Errorf("error connecting to proxy: %s", err)
|
err = fmt.Errorf("error connecting to proxy: %s", e)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
return dialSocksProxy.Dial("tcp", address)
|
return dialSocksProxy.Dial("tcp", address)
|
||||||
|
|||||||
Reference in New Issue
Block a user