mirror of
				https://github.com/ergochat/ergo.git
				synced 2025-10-31 13:57:23 +01:00 
			
		
		
		
	destroy clients on socket close with quit
This commit is contained in:
		
							parent
							
								
									7a2c9db503
								
							
						
					
					
						commit
						c327042c94
					
				| @ -65,14 +65,14 @@ func (client *Client) Touch() { | ||||
| 
 | ||||
| func (client *Client) Idle() { | ||||
| 	if client.quitTimer == nil { | ||||
| 		client.quitTimer = time.AfterFunc(QUIT_TIMEOUT, client.Quit) | ||||
| 		client.quitTimer = time.AfterFunc(QUIT_TIMEOUT, client.ConnectionTimeout) | ||||
| 	} else { | ||||
| 		client.quitTimer.Reset(QUIT_TIMEOUT) | ||||
| 	} | ||||
| 	client.Reply(RplPing(client.server, client)) | ||||
| } | ||||
| 
 | ||||
| func (client *Client) Quit() { | ||||
| func (client *Client) ConnectionTimeout() { | ||||
| 	msg := &QuitCommand{ | ||||
| 		message: "connection timeout", | ||||
| 	} | ||||
| @ -80,6 +80,14 @@ func (client *Client) Quit() { | ||||
| 	client.server.commands <- msg | ||||
| } | ||||
| 
 | ||||
| func (client *Client) ConnectionClosed() { | ||||
| 	msg := &QuitCommand{ | ||||
| 		message: "connection closed", | ||||
| 	} | ||||
| 	msg.SetClient(client) | ||||
| 	client.server.commands <- msg | ||||
| } | ||||
| 
 | ||||
| func (c *Client) readConn() { | ||||
| 	for { | ||||
| 		line, err := c.recv.ReadString('\n') | ||||
| @ -113,7 +121,7 @@ func (c *Client) readConn() { | ||||
| 		m.SetClient(c) | ||||
| 		c.server.commands <- m | ||||
| 	} | ||||
| 	c.Destroy() | ||||
| 	c.ConnectionClosed() | ||||
| } | ||||
| 
 | ||||
| func (client *Client) maybeLogWriteError(err error) bool { | ||||
| @ -150,7 +158,7 @@ func (client *Client) writeConn(replies <-chan Reply) { | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	client.Destroy() | ||||
| 	client.ConnectionClosed() | ||||
| } | ||||
| 
 | ||||
| func (client *Client) Destroy() { | ||||
|  | ||||
| @ -298,7 +298,7 @@ func (m *JoinCommand) HandleServer(s *Server) { | ||||
| 	} | ||||
| 
 | ||||
| 	for name := range m.channels { | ||||
| 		s.GetOrMakeChannel(name).commands <- m | ||||
| 		s.GetOrMakeChannel(name).Command(m) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| @ -311,7 +311,7 @@ func (m *PartCommand) HandleServer(s *Server) { | ||||
| 			continue | ||||
| 		} | ||||
| 
 | ||||
| 		channel.commands <- m | ||||
| 		channel.Command(m) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| @ -322,7 +322,7 @@ func (m *TopicCommand) HandleServer(s *Server) { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	channel.commands <- m | ||||
| 	channel.Command(m) | ||||
| } | ||||
| 
 | ||||
| func (m *PrivMsgCommand) HandleServer(s *Server) { | ||||
| @ -333,7 +333,7 @@ func (m *PrivMsgCommand) HandleServer(s *Server) { | ||||
| 			return | ||||
| 		} | ||||
| 
 | ||||
| 		channel.commands <- m | ||||
| 		channel.Command(m) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| @ -391,7 +391,7 @@ func (msg *ChannelModeCommand) HandleServer(server *Server) { | ||||
| 		client.Reply(ErrNoSuchChannel(server, msg.channel)) | ||||
| 		return | ||||
| 	} | ||||
| 	channel.commands <- msg | ||||
| 	channel.Command(msg) | ||||
| } | ||||
| 
 | ||||
| func whoChannel(client *Client, server *Server, channel *Channel) { | ||||
| @ -483,7 +483,7 @@ func (msg *NoticeCommand) HandleServer(server *Server) { | ||||
| 			return | ||||
| 		} | ||||
| 
 | ||||
| 		channel.commands <- msg | ||||
| 		channel.Command(msg) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jeremy Latt
						Jeremy Latt