equal
deleted
inserted
replaced
20 { |
20 { |
21 |
21 |
22 } |
22 } |
23 |
23 |
24 NetworkAddress::NetworkAddress (const sockaddr *addr, socklen_t len) : |
24 NetworkAddress::NetworkAddress (const sockaddr *addr, socklen_t len) : |
25 hostname(hostname), service(service), address_length(0) |
25 hostname(), service(), address_length(0) |
26 { |
26 { |
27 // proxy to set_sockaddr |
27 // proxy to set_sockaddr |
28 set_sockaddr(addr, len); |
28 set_sockaddr(addr, len); |
29 } |
29 } |
30 |
30 |
77 if ((err = getnameinfo(addr, len, host_buf, NI_MAXHOST, serv_buf, NI_MAXSERV, NI_NUMERICHOST | NI_NUMERICSERV))) |
77 if ((err = getnameinfo(addr, len, host_buf, NI_MAXHOST, serv_buf, NI_MAXSERV, NI_NUMERICHOST | NI_NUMERICSERV))) |
78 throw NetworkAddressError(*this, "getnameinfo", gai_strerror(err)); |
78 throw NetworkAddressError(*this, "getnameinfo", gai_strerror(err)); |
79 |
79 |
80 // copy over to address |
80 // copy over to address |
81 memcpy(&this->address, addr, len); |
81 memcpy(&this->address, addr, len); |
|
82 |
|
83 // and the hostname + service |
|
84 hostname = host_buf; |
|
85 service = serv_buf; |
82 } |
86 } |
83 |
87 |
84 std::ostream& operator<< (std::ostream &s, const NetworkAddress &addr) { |
88 std::ostream& operator<< (std::ostream &s, const NetworkAddress &addr) { |
85 s << "[" << addr.get_hostname() << ":" << addr.get_service() << "]"; |
89 s << "[" << addr.get_hostname() << ":" << addr.get_service() << "]"; |
86 |
90 |