Fix binding issues

This commit is contained in:
Oleksii Shevchuk 2018-01-30 20:35:39 +02:00
parent 23409577f6
commit 10e631a99b
3 changed files with 16 additions and 6 deletions

View File

@ -34,6 +34,10 @@ func (d *Daemon) ListenAndServe() error {
return err
}
conn.(*net.TCPConn).SetKeepAlive(true)
conn.(*net.TCPConn).SetKeepAlivePeriod(1 * time.Minute)
conn.(*net.TCPConn).SetNoDelay(true)
conn = tls.Server(conn, ListenerConfig)
go d.handle(conn)
@ -67,10 +71,6 @@ func (d *Daemon) onListenerDisabled() {
func (d *Daemon) handle(conn net.Conn) {
defer conn.Close()
conn.(*net.TCPConn).SetKeepAlive(true)
conn.(*net.TCPConn).SetKeepAlivePeriod(1 * time.Minute)
conn.(*net.TCPConn).SetNoDelay(true)
brh := &BindRequestHeader{}
err := RecvMessage(conn, brh)

View File

@ -77,7 +77,15 @@ func init() {
}
if strings.Index(ProxyBindHost, ":") == -1 {
if ExternalBindHost == "0.0.0.0" {
ExternalBindHost = ProxyBindHost
}
ProxyBindHost = fmt.Sprintf("%s:%d", ProxyBindHost, ProxyBindPort)
} else {
if ExternalBindHost == "0.0.0.0" {
ExternalBindHost = strings.SplitN(ProxyBindHost, ":", 1)[0]
}
}
if strings.Index(ExternalBindHost, ":") != -1 {

View File

@ -219,6 +219,7 @@ class Listener(Thread):
external = self.external
external_port = self.external_port
authenticator = self.authenticator
port = self.port
if self.pproxy:
if type(authenticator) == PupySSLAuthenticator:
@ -245,10 +246,11 @@ class Listener(Thread):
authenticator = None
ipv6 = False
igd = None
port = 0
self.server = server(
PupyService,
port=self.port, hostname=self.address,
port=port, hostname=self.address,
authenticator=authenticator,
stream=stream,
transport=transport,
@ -265,7 +267,7 @@ class Listener(Thread):
## Workaround..
self.server.listener.close()
self.server.listener = method(self.port, extra=extra)
self.server.listener = method(self.external_port, extra=extra)
def run(self):
self.server.start()