summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/server.go26
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)
})
}