Changeset 323 in code for trunk/server.go
- Timestamp:
- Jun 7, 2020, 12:13:46 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server.go
r319 r323 5 5 "log" 6 6 "net" 7 "net/http" 7 8 "sync" 9 "sync/atomic" 8 10 "time" 9 11 10 12 "gopkg.in/irc.v3" 13 "nhooyr.io/websocket" 11 14 ) 12 15 … … 45 48 LogPath string 46 49 Debug bool 50 HTTPOrigins []string 47 51 48 52 db *DB … … 92 96 } 93 97 98 var lastDownstreamID uint64 = 0 99 100 func (s *Server) handle(ic ircConn, remoteAddr string) { 101 id := atomic.AddUint64(&lastDownstreamID, 1) 102 dc := newDownstreamConn(s, ic, remoteAddr, id) 103 if err := dc.runUntilRegistered(); err != nil { 104 dc.logger.Print(err) 105 } else { 106 dc.user.events <- eventDownstreamConnected{dc} 107 if err := dc.readMessages(dc.user.events); err != nil { 108 dc.logger.Print(err) 109 } 110 dc.user.events <- eventDownstreamDisconnected{dc} 111 } 112 dc.Close() 113 } 114 94 115 func (s *Server) Serve(ln net.Listener) error { 95 var nextDownstreamID uint64 = 196 116 for { 97 netConn, err := ln.Accept()117 conn, err := ln.Accept() 98 118 if err != nil { 99 119 return fmt.Errorf("failed to accept connection: %v", err) 100 120 } 101 121 102 dc := newDownstreamConn(s, netConn, nextDownstreamID) 103 nextDownstreamID++ 104 go func() { 105 if err := dc.runUntilRegistered(); err != nil { 106 dc.logger.Print(err) 107 } else { 108 dc.user.events <- eventDownstreamConnected{dc} 109 if err := dc.readMessages(dc.user.events); err != nil { 110 dc.logger.Print(err) 111 } 112 dc.user.events <- eventDownstreamDisconnected{dc} 113 } 114 dc.Close() 115 }() 122 go s.handle(newNetIRCConn(conn), conn.RemoteAddr().String()) 116 123 } 117 124 } 125 126 func (s *Server) ServeHTTP(w http.ResponseWriter, req *http.Request) { 127 conn, err := websocket.Accept(w, req, &websocket.AcceptOptions{ 128 OriginPatterns: s.HTTPOrigins, 129 }) 130 if err != nil { 131 s.Logger.Printf("failed to serve HTTP connection: %v", err) 132 return 133 } 134 s.handle(newWebsocketIRCConn(conn), req.RemoteAddr) 135 }
Note:
See TracChangeset
for help on using the changeset viewer.