@@ -243,41 +243,41 @@ std::string get_ip_str(
243243 socklen_t maxlen
244244)
245245{
246- std::string result ;
246+ if (!sa) throw new std::invalid_argument ( " socket pointer is null " ) ;
247247
248- if (sa)
248+ char to_ret[NI_MAXHOST];
249+ if (AF_INET6 == sa->sa_family )
249250 {
250- char to_ret[NI_MAXHOST] ;
251- if (AF_INET6 == sa-> sa_family )
252- {
253- inet_ntop (AF_INET6, &(((sockaddr_in6*) sa)-> sin6_addr ), to_ret, INET6_ADDRSTRLEN);
254- result = to_ret;
255- }
256- else
257- {
258- inet_ntop (AF_INET, &(((sockaddr_in*) sa)-> sin_addr ), to_ret, INET_ADDRSTRLEN);
259- result = to_ret;
260- }
251+ inet_ntop (AF_INET6, &(((sockaddr_in6*) sa)-> sin6_addr ), to_ret, INET6_ADDRSTRLEN) ;
252+ return to_ret;
253+ }
254+ else if (AF_INET == sa-> sa_family )
255+ {
256+ inet_ntop (AF_INET, &(((sockaddr_in*) sa)-> sin_addr ), to_ret, INET_ADDRSTRLEN);
257+ return to_ret;
258+ }
259+ else
260+ {
261+ throw new std::invalid_argument ( " IP family must be either AF_INET or AF_INET6 " );
261262 }
262-
263- return result;
264263}
265264
266265unsigned short get_port (const struct sockaddr * sa)
267266{
268- if (sa)
267+ if (!sa) throw new std::invalid_argument (" socket pointer is null" );
268+
269+ if (sa->sa_family == AF_INET)
269270 {
270- switch (sa-> sa_family )
271- {
272- case AF_INET:
273- return (( struct sockaddr_in *) sa)-> sin_port ;
274- case AF_INET6:
275- return (( struct sockaddr_in6 *) sa)-> sin6_port ;
276- default :
277- return 0 ;
278- }
271+ return (( struct sockaddr_in *) sa)-> sin_port ;
272+ }
273+ else if (sa-> sa_family == AF_INET6)
274+ {
275+ return (( struct sockaddr_in6 *) sa)-> sin6_port ;
276+ }
277+ else
278+ {
279+ throw new std::invalid_argument ( " IP family must be either AF_INET or AF_INET6 " );
279280 }
280- return 0 ;
281281}
282282
283283size_t http_unescape (char *val)
0 commit comments