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:
internal
@ -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)
|
||||
|
Reference in New Issue
Block a user