| 276 | } |
| 277 | |
| 278 | Status Socket::GetSocketAddress(Sockaddr *cur_addr) const { |
| 279 | struct sockaddr_storage ss; |
| 280 | socklen_t len = sizeof(ss); |
| 281 | DCHECK_GE(fd_, 0); |
| 282 | if (::getsockname(fd_, reinterpret_cast<struct sockaddr*>(&ss), &len) == -1) { |
| 283 | int err = errno; |
| 284 | return Status::NetworkError("getsockname error", ErrnoToString(err), err); |
| 285 | } |
| 286 | *cur_addr = Sockaddr(reinterpret_cast<struct sockaddr&>(ss), len); |
| 287 | return Status::OK(); |
| 288 | } |
| 289 | |
| 290 | Status Socket::GetPeerAddress(Sockaddr *cur_addr) const { |
| 291 | struct sockaddr_storage addr; |