diff options
| -rw-r--r-- | server/server.go | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/server/server.go b/server/server.go index 557abac..5e3ffe9 100644 --- a/server/server.go +++ b/server/server.go @@ -122,7 +122,7 @@ func (s *Server) Serve(ln net.Listener) { } }() var ( - ping = time.Tick(10 * time.Second) + ping = time.Tick(5 * time.Minute) tick = time.Tick(time.Second / 20) save = time.Tick(time.Minute) sigterm = make(chan os.Signal) @@ -599,8 +599,11 @@ func (cl *client) disconnect(reason string) { } func (cl *client) SendPacket(from phony.Actor, packet classic.Packet) { - cl.Act(from, func() { + deadline := time.Now().Add(5 * time.Minute) + // nil sender: we don't want to block the server on I/O + cl.Act(nil, func() { if cl.conn != nil { + cl.conn.SetWriteDeadline(deadline) cl.handleError(classic.WritePacket(cl.conn, packet)) } }) @@ -608,10 +611,12 @@ func (cl *client) SendPacket(from phony.Actor, packet classic.Packet) { func (cl *client) SendPackets( from phony.Actor, packets iter.Seq[classic.Packet]) { - cl.Act(from, func() { - if cl.conn != nil { - cl.conn.SetWriteDeadline(time.Time{}) + deadline := time.Now().Add(5 * time.Minute) + cl.Act(nil, func() { + if cl.conn == nil { + return } + cl.conn.SetWriteDeadline(deadline) for packet := range packets { if cl.conn == nil { return @@ -622,21 +627,16 @@ func (cl *client) SendPackets( } func (cl *client) SendPing(from phony.Actor) { - cl.Act(from, func() { + cl.Act(nil, func() { if cl.conn != nil { cl.conn.SetWriteDeadline(time.Now().Add(10 * time.Second)) - err := cl.handleError( - classic.WritePacket(cl.conn, &classic.Ping{}), - ) - if err == nil { - cl.conn.SetWriteDeadline(time.Time{}) - } + cl.handleError(classic.WritePacket(cl.conn, &classic.Ping{})) } }) } func (cl *client) Disconnect(from phony.Actor, reason string) { - cl.Act(from, func() { + cl.Act(nil, func() { cl.disconnect(reason) }) } |
