(req p2pRequest)
| 268 | } |
| 269 | |
| 270 | func (n *server) handleCallReq(req p2pRequest) (c *client) { |
| 271 | var fd net.Conn |
| 272 | var err error |
| 273 | |
| 274 | if fd, err = net.Dial("tcp", req.addr); err != nil { |
| 275 | err = &P2PError{err: errors.Errorf("dial %s failed: %w", req.addr, err), t: time.Now()} |
| 276 | req.replyResult(nil, err) |
| 277 | n.logger.Error(err) |
| 278 | return |
| 279 | } |
| 280 | |
| 281 | c = newClient(n.id, fd, n.peersFeed, true) |
| 282 | errc := c.handShake(req.ctx) |
| 283 | for err = range errc { |
| 284 | err = &P2PError{err: errors.Errorf("server handleCallReq: %w", err), t: time.Now()} |
| 285 | n.logger.Error(err) |
| 286 | } |
| 287 | if err != nil { |
| 288 | req.replyResult(nil, err) |
| 289 | err = c.close() |
| 290 | if err != nil { |
| 291 | err = &P2PError{err: errors.Errorf("close failed in handleCallReq: %w", err), t: time.Now()} |
| 292 | n.logger.Error(err) |
| 293 | } |
| 294 | c = nil |
| 295 | } |
| 296 | return |
| 297 | } |
| 298 | |
| 299 | func (n *server) Leave() { |
| 300 | n.cancel() |
no test coverage detected