discard client input after onNewClient callback finished

This commit is contained in:
Milarin 2024-02-15 17:55:32 +01:00
parent 5aa9db4e51
commit c86730cabc

View File

@ -30,14 +30,6 @@ func Listen(socketPath string, onNewClient func(client net.Conn)) (*Server, erro
return nil, err return nil, err
} }
if onNewClient == nil {
onNewClient = func(client net.Conn) {
data := make([]byte, 1024)
for _, err := client.Read(data); err == nil; _, err = client.Read(data) {
}
}
}
s := &Server{ s := &Server{
socketPath: absPath, socketPath: absPath,
server: server, server: server,
@ -70,9 +62,16 @@ func (s *Server) handleClients() {
func (s *Server) handleClient(client net.Conn) { func (s *Server) handleClient(client net.Conn) {
s.clients.Put(client, struct{}{}) s.clients.Put(client, struct{}{})
defer s.clients.Delete(client) defer s.clients.Delete(client)
if s.onNewClient != nil {
s.onNewClient(client) s.onNewClient(client)
} }
data := make([]byte, 1024)
for _, err := client.Read(data); err == nil; _, err = client.Read(data) {
}
}
func (s *Server) Close() error { func (s *Server) Close() error {
s.clients.Iter(func(client net.Conn, _ struct{}) { client.Close() }) s.clients.Iter(func(client net.Conn, _ struct{}) { client.Close() })