Browse Source

bind to listening sockets before asyncing

tags/v0.1.0
Jeremy Latt 10 years ago
parent
commit
7db4347419
1 changed files with 12 additions and 10 deletions
  1. 12
    10
      irc/server.go

+ 12
- 10
irc/server.go View File

70
 	server.loadChannels()
70
 	server.loadChannels()
71
 
71
 
72
 	for _, addr := range config.Server.Listen {
72
 	for _, addr := range config.Server.Listen {
73
-		go server.listen(addr)
73
+		server.listen(addr)
74
 	}
74
 	}
75
 
75
 
76
 	signal.Notify(server.signals, SERVER_SIGNALS...)
76
 	signal.Notify(server.signals, SERVER_SIGNALS...)
189
 
189
 
190
 	Log.info.Printf("%s listening on %s", s, addr)
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
 //

Loading…
Cancel
Save