| 117 | } |
| 118 | |
| 119 | func (s *Server) serveConn(conn net.Conn) { |
| 120 | le := log.WithField("remote_addr", conn.RemoteAddr()) |
| 121 | stream, err := s.acceptConn(s.ctx, conn) |
| 122 | if err != nil { |
| 123 | le.WithError(err).Error("failed to accept conn") |
| 124 | return |
| 125 | } |
| 126 | defer func() { _ = stream.Close() }() |
| 127 | // Acquire remote node id if it's a naconn.Remoter conn |
| 128 | var remote *proto.RawNodeID |
| 129 | if remoter, ok := stream.(naconn.Remoter); ok { |
| 130 | id := remoter.Remote() |
| 131 | remote = &id |
| 132 | le = le.WithField("remote_node", id) |
| 133 | } |
| 134 | le.Debug("accept server conn") |
| 135 | // Serve data stream |
| 136 | s.serveStream(s.ctx, s.rpcServer, stream, remote) |
| 137 | } |
| 138 | |
| 139 | // RegisterService registers service with a Service name, used by Client RPC. |
| 140 | func (s *Server) RegisterService(name string, service interface{}) error { |