| 603 | } |
| 604 | |
| 605 | int get_remote_side(int fd, EndPoint *out) { |
| 606 | struct sockaddr_storage addr; |
| 607 | bzero(&addr, sizeof(addr)); |
| 608 | socklen_t socklen = sizeof(addr); |
| 609 | const int rc = getpeername(fd, (struct sockaddr*)&addr, &socklen); |
| 610 | if (rc != 0) { |
| 611 | return rc; |
| 612 | } |
| 613 | if (out) { |
| 614 | return sockaddr2endpoint(&addr, socklen, out); |
| 615 | } |
| 616 | return 0; |
| 617 | } |
| 618 | |
| 619 | int endpoint2sockaddr(const EndPoint& point, struct sockaddr_storage* ss, socklen_t* size) { |
| 620 | bzero(ss, sizeof(*ss)); |