Pārlūkot izejas kodu

bind to listening sockets before asyncing

tags/v0.1.0
Jeremy Latt 10 gadus atpakaļ
vecāks
revīzija
7db4347419
1 mainītis faili ar 12 papildinājumiem un 10 dzēšanām
  1. 12
    10
      irc/server.go

+ 12
- 10
irc/server.go Parādīt failu

@@ -70,7 +70,7 @@ func NewServer(config *Config) *Server {
70 70
 	server.loadChannels()
71 71
 
72 72
 	for _, addr := range config.Server.Listen {
73
-		go server.listen(addr)
73
+		server.listen(addr)
74 74
 	}
75 75
 
76 76
 	signal.Notify(server.signals, SERVER_SIGNALS...)
@@ -189,16 +189,18 @@ func (s *Server) listen(addr string) {
189 189
 
190 190
 	Log.info.Printf("%s listening on %s", s, addr)
191 191
 
192
-	for {
193
-		conn, err := listener.Accept()
194
-		if err != nil {
195
-			Log.error.Printf("%s accept error: %s", s, err)
196
-			continue
197
-		}
198
-		Log.debug.Printf("%s accept: %s", s, conn.RemoteAddr())
192
+	go func() {
193
+		for {
194
+			conn, err := listener.Accept()
195
+			if err != nil {
196
+				Log.error.Printf("%s accept error: %s", s, err)
197
+				continue
198
+			}
199
+			Log.debug.Printf("%s accept: %s", s, conn.RemoteAddr())
199 200
 
200
-		s.newConns <- conn
201
-	}
201
+			s.newConns <- conn
202
+		}
203
+	}()
202 204
 }
203 205
 
204 206
 //

Notiek ielāde…
Atcelt
Saglabāt