1
0
mirror of https://github.com/6jarjar6/phantomX.git synced 2025-04-22 07:06:07 +00:00

Fix nil reference & improve client timeout

This commit is contained in:
Justin Head
2020-05-23 13:47:39 -07:00
parent def70b90c8
commit 94ac0504dd
2 changed files with 12 additions and 7 deletions
internal
clientmap
proxy

@ -87,9 +87,11 @@ func (cm *ClientMap) Delete(clientAddr net.Addr) {
cm.mutex.Lock()
cm.clients[key].conn.Close()
delete(cm.clients, key)
if client, exists := cm.clients[key]; exists {
client.conn.Close()
delete(cm.clients, key)
}
cm.mutex.Unlock()
}

@ -29,7 +29,7 @@ type ProxyServer struct {
clientMap *clientmap.ClientMap
prefs ProxyPrefs
dead *abool.AtomicBool
serverOffline bool
serverOffline bool
}
type ProxyPrefs struct {
@ -195,6 +195,9 @@ func (proxy *ProxyServer) processDataFromClients(listener net.PacketConn, packet
return err
}
// Wait 5 seconds for the server to respond to whatever we sent, or else timeout
_ = serverConn.SetReadDeadline(time.Now().Add(time.Second * 5))
if packetID := data[0]; packetID == proto.UnconnectedPingID {
log.Info().Msgf("Received LAN ping from client: %s", client.String())
@ -220,12 +223,12 @@ func (proxy *ProxyServer) processDataFromServer(remoteConn *net.UDPConn, client
buffer := make([]byte, maxMTU)
for !proxy.dead.IsSet() {
// Set a read timeout of 5 seconds
_ = remoteConn.SetReadDeadline(time.Now().Add(time.Second * 5))
// Read the next packet from the server
read, _, err := remoteConn.ReadFrom(buffer)
// Remove read timeout, server responded
_ = remoteConn.SetReadDeadline(time.Time{})
// Read error
if err != nil {
log.Warn().Msgf("%v", err)