| line | true | false | branch | 
 
| 568 | 19 | 0 | (void) SvUPGRADE(ret, SVt_PVNV); | 
 
| 570 | 3 | 16 | if(err) { | 
 
| 601 | 0 | 15 | if(items > 3) | 
 
| 606 | 1 | 14 | if(items < 1) | 
 
| 611 | 2 | 13 | if(items < 2) | 
 
| 616 | 5 | 10 | if(items < 3) | 
 
| 621 | 1 | 14 | SvGETMAGIC(host); | 
 
|  | 0 | 1 | SvGETMAGIC(host); | 
 
| 622 | 1 | 14 | if(SvOK(host)) { | 
 
|  | 1 | 0 | if(SvOK(host)) { | 
 
|  | 0 | 1 | if(SvOK(host)) { | 
 
| 623 | 13 | 1 | hostname = SvPVbyte_nomg(host, len); | 
 
| 624 | 1 | 13 | if (!len) | 
 
| 628 | 0 | 15 | SvGETMAGIC(service); | 
 
|  | 0 | 0 | SvGETMAGIC(service); | 
 
| 629 | 4 | 11 | if(SvOK(service)) { | 
 
|  | 4 | 0 | if(SvOK(service)) { | 
 
|  | 0 | 4 | if(SvOK(service)) { | 
 
| 630 | 9 | 2 | servicename = SvPVbyte_nomg(service, len); | 
 
| 631 | 1 | 10 | if (!len) | 
 
| 638 | 10 | 5 | if(hints && SvOK(hints)) { | 
 
|  | 1 | 9 | if(hints && SvOK(hints)) { | 
 
|  | 1 | 0 | if(hints && SvOK(hints)) { | 
 
|  | 0 | 1 | if(hints && SvOK(hints)) { | 
 
| 642 | 8 | 1 | if(!SvROK(hints) || SvTYPE(SvRV(hints)) != SVt_PVHV) | 
 
|  | 1 | 7 | if(!SvROK(hints) || SvTYPE(SvRV(hints)) != SVt_PVHV) | 
 
| 647 | 2 | 5 | if((valp = hv_fetch(hintshash, "flags", 5, 0)) != NULL && SvOK(*valp)) | 
 
|  | 0 | 2 | if((valp = hv_fetch(hintshash, "flags", 5, 0)) != NULL && SvOK(*valp)) | 
 
|  | 0 | 0 | if((valp = hv_fetch(hintshash, "flags", 5, 0)) != NULL && SvOK(*valp)) | 
 
|  | 0 | 0 | if((valp = hv_fetch(hintshash, "flags", 5, 0)) != NULL && SvOK(*valp)) | 
 
| 648 | 2 | 0 | hints_s.ai_flags = SvIV(*valp); | 
 
| 649 | 1 | 6 | if((valp = hv_fetch(hintshash, "family", 6, 0)) != NULL && SvOK(*valp)) | 
 
|  | 0 | 1 | if((valp = hv_fetch(hintshash, "family", 6, 0)) != NULL && SvOK(*valp)) | 
 
|  | 0 | 0 | if((valp = hv_fetch(hintshash, "family", 6, 0)) != NULL && SvOK(*valp)) | 
 
|  | 0 | 0 | if((valp = hv_fetch(hintshash, "family", 6, 0)) != NULL && SvOK(*valp)) | 
 
| 650 | 1 | 0 | hints_s.ai_family = SvIV(*valp); | 
 
| 651 | 7 | 0 | if((valp = hv_fetch(hintshash, "socktype", 8, 0)) != NULL && SvOK(*valp)) | 
 
|  | 0 | 7 | if((valp = hv_fetch(hintshash, "socktype", 8, 0)) != NULL && SvOK(*valp)) | 
 
|  | 0 | 0 | if((valp = hv_fetch(hintshash, "socktype", 8, 0)) != NULL && SvOK(*valp)) | 
 
|  | 0 | 0 | if((valp = hv_fetch(hintshash, "socktype", 8, 0)) != NULL && SvOK(*valp)) | 
 
| 652 | 7 | 0 | hints_s.ai_socktype = SvIV(*valp); | 
 
| 653 | 1 | 6 | if((valp = hv_fetch(hintshash, "protocol", 8, 0)) != NULL && SvOK(*valp)) | 
 
|  | 0 | 1 | if((valp = hv_fetch(hintshash, "protocol", 8, 0)) != NULL && SvOK(*valp)) | 
 
|  | 0 | 0 | if((valp = hv_fetch(hintshash, "protocol", 8, 0)) != NULL && SvOK(*valp)) | 
 
|  | 0 | 0 | if((valp = hv_fetch(hintshash, "protocol", 8, 0)) != NULL && SvOK(*valp)) | 
 
| 654 | 1 | 0 | hints_s.ai_protocol = SvIV(*valp); | 
 
| 659 | 0 | 13 | XPUSHs(err_to_SV(aTHX_ err)); | 
 
| 661 | 3 | 10 | if(err) | 
 
| 665 | 20 | 10 | for(res_iter = res; res_iter; res_iter = res_iter->ai_next) { | 
 
| 674 | 0 | 20 | if(res_iter->ai_canonname) | 
 
| 679 | 0 | 20 | XPUSHs(sv_2mortal(newRV_noinc((SV*)res_hv))); | 
 
| 707 | 6 | 0 | if(items < 1 || items > 3) | 
 
|  | 0 | 6 | if(items < 1 || items > 3) | 
 
| 713 | 1 | 5 | SvGETMAGIC(addr); | 
 
|  | 0 | 1 | SvGETMAGIC(addr); | 
 
| 715 | 0 | 6 | if(items < 2) | 
 
| 718 | 6 | 0 | flags = SvIV(ST(1)); | 
 
| 720 | 4 | 2 | if(items < 3) | 
 
| 723 | 2 | 0 | xflags = SvIV(ST(2)); | 
 
| 728 | 0 | 6 | if(!SvPOKp(addr)) | 
 
| 736 | 5 | 1 | Copy(SvPV_nolen(addr), sa, addr_len, char); | 
 
| 741 | 5 | 1 | err = getnameinfo((struct sockaddr *)sa, addr_len, | 
 
|  | 5 | 1 | err = getnameinfo((struct sockaddr *)sa, addr_len, | 
 
|  | 5 | 1 | err = getnameinfo((struct sockaddr *)sa, addr_len, | 
 
|  | 5 | 1 | err = getnameinfo((struct sockaddr *)sa, addr_len, | 
 
| 753 | 0 | 6 | XPUSHs(err_to_SV(aTHX_ err)); | 
 
| 755 | 0 | 6 | if(err) | 
 
| 758 | 0 | 6 | XPUSHs(want_host ? sv_2mortal(newSVpv(host, 0)) : &PL_sv_undef); | 
 
|  | 5 | 1 | XPUSHs(want_host ? sv_2mortal(newSVpv(host, 0)) : &PL_sv_undef); | 
 
| 759 | 0 | 6 | XPUSHs(want_serv ? sv_2mortal(newSVpv(serv, 0)) : &PL_sv_undef); | 
 
|  | 5 | 1 | XPUSHs(want_serv ? sv_2mortal(newSVpv(serv, 0)) : &PL_sv_undef); | 
 
| 786 | 16 | 0 | if (!getaddrinfo(host, NULL, &hints, &res)) { | 
 
| 820 | 1 | 4 | if (DO_UTF8(ip_address_sv) && !sv_utf8_downgrade(ip_address_sv, 1)) | 
 
|  | 1 | 0 | if (DO_UTF8(ip_address_sv) && !sv_utf8_downgrade(ip_address_sv, 1)) | 
 
|  | 1 | 0 | if (DO_UTF8(ip_address_sv) && !sv_utf8_downgrade(ip_address_sv, 1)) | 
 
| 822 | 4 | 0 | ip_address = SvPVbyte(ip_address_sv, addrlen); | 
 
| 823 | 0 | 4 | if (addrlen == sizeof(addr) || addrlen == 4) | 
 
|  | 0 | 0 | if (addrlen == sizeof(addr) || addrlen == 4) | 
 
| 849 | 5 | 0 | char *sockaddr_pv = SvPVbyte(sockaddr, sockaddr_len); | 
 
| 851 | 1 | 4 | if (sockaddr_len < STRUCT_OFFSET(struct sockaddr, sa_data)) | 
 
| 869 | 1 | 2 | if (!SvOK(pathname)) | 
 
|  | 1 | 0 | if (!SvOK(pathname)) | 
 
|  | 1 | 0 | if (!SvOK(pathname)) | 
 
| 874 | 2 | 0 | pathname_pv = SvPVbyte(pathname,len); | 
 
| 875 | 1 | 1 | if (len > sizeof(sun_ad.sun_path)) { | 
 
| 908 | 2 | 0 | if (len > 1 && sun_ad.sun_path[0] == '\0') { | 
 
|  | 1 | 1 | if (len > 1 && sun_ad.sun_path[0] == '\0') { | 
 
| 938 | 1 | 1 | if (!SvOK(sun_sv)) | 
 
|  | 1 | 0 | if (!SvOK(sun_sv)) | 
 
|  | 1 | 0 | if (!SvOK(sun_sv)) | 
 
| 940 | 1 | 0 | sun_ad = SvPVbyte(sun_sv,sockaddrlen); | 
 
| 944 | 1 | 0 | if (sockaddrlen < sizeof(addr)) { | 
 
| 965 | 0 | 1 | if (addr.sun_family != AF_UNIX) | 
 
| 969 | 1 | 0 | if (addr.sun_path[0] == '\0') { | 
 
| 984 | 0 | 0 | while (addr_len < maxlen && addr.sun_path[addr_len]) | 
 
|  | 0 | 0 | while (addr_len < maxlen && addr.sun_path[addr_len]) | 
 
| 1005 | 1 | 14 | if (SvOK(port_sv)) { | 
 
|  | 1 | 0 | if (SvOK(port_sv)) { | 
 
|  | 0 | 1 | if (SvOK(port_sv)) { | 
 
| 1006 | 0 | 14 | port = SvUV(port_sv); | 
 
| 1007 | 0 | 14 | if (SvUV(port_sv) > 0xFFFF) | 
 
|  | 1 | 13 | if (SvUV(port_sv) > 0xFFFF) | 
 
| 1011 | 1 | 14 | if (!SvOK(ip_address_sv)) | 
 
|  | 1 | 0 | if (!SvOK(ip_address_sv)) | 
 
|  | 1 | 0 | if (!SvOK(ip_address_sv)) | 
 
| 1013 | 0 | 14 | if (DO_UTF8(ip_address_sv) && !sv_utf8_downgrade(ip_address_sv, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(ip_address_sv) && !sv_utf8_downgrade(ip_address_sv, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(ip_address_sv) && !sv_utf8_downgrade(ip_address_sv, 1)) | 
 
| 1015 | 14 | 0 | ip_address = SvPVbyte(ip_address_sv, addrlen); | 
 
| 1016 | 0 | 14 | if (addrlen == sizeof(addr) || addrlen == 4) | 
 
|  | 0 | 0 | if (addrlen == sizeof(addr) || addrlen == 4) | 
 
| 1046 | 1 | 8 | if (!SvOK(sin_sv)) | 
 
|  | 1 | 0 | if (!SvOK(sin_sv)) | 
 
|  | 1 | 0 | if (!SvOK(sin_sv)) | 
 
| 1048 | 8 | 0 | sin = SvPVbyte(sin_sv,sockaddrlen); | 
 
| 1049 | 0 | 8 | if (sockaddrlen != sizeof(addr)) { | 
 
| 1055 | 0 | 8 | if (addr.sin_family != AF_INET) { | 
 
| 1061 | 7 | 1 | if(GIMME_V == G_LIST) { | 
 
|  | 7 | 1 | if(GIMME_V == G_LIST) { | 
 
| 1062 | 0 | 7 | EXTEND(SP, 2); | 
 
| 1084 | 1 | 4 | if (SvOK(port_sv)) { | 
 
|  | 1 | 0 | if (SvOK(port_sv)) { | 
 
|  | 0 | 1 | if (SvOK(port_sv)) { | 
 
| 1085 | 0 | 4 | port = SvUV(port_sv); | 
 
| 1086 | 0 | 4 | if (SvUV(port_sv) > 0xFFFF) | 
 
|  | 1 | 3 | if (SvUV(port_sv) > 0xFFFF) | 
 
| 1090 | 1 | 4 | if (!SvOK(sin6_addr)) | 
 
|  | 1 | 0 | if (!SvOK(sin6_addr)) | 
 
|  | 1 | 0 | if (!SvOK(sin6_addr)) | 
 
| 1092 | 0 | 4 | if (DO_UTF8(sin6_addr) && !sv_utf8_downgrade(sin6_addr, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(sin6_addr) && !sv_utf8_downgrade(sin6_addr, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(sin6_addr) && !sv_utf8_downgrade(sin6_addr, 1)) | 
 
| 1094 | 4 | 0 | addrbytes = SvPVbyte(sin6_addr, addrlen); | 
 
| 1095 | 0 | 4 | if (addrlen != sizeof(sin6.sin6_addr)) | 
 
| 1132 | 1 | 7 | if (!SvOK(sin6_sv)) | 
 
|  | 1 | 0 | if (!SvOK(sin6_sv)) | 
 
|  | 1 | 0 | if (!SvOK(sin6_sv)) | 
 
| 1134 | 7 | 0 | addrbytes = SvPVbyte(sin6_sv, addrlen); | 
 
| 1135 | 0 | 7 | if (addrlen != sizeof(sin6)) | 
 
| 1140 | 0 | 7 | if (sin6.sin6_family != AF_INET6) | 
 
| 1145 | 6 | 1 | if(GIMME_V == G_LIST) { | 
 
|  | 6 | 1 | if(GIMME_V == G_LIST) { | 
 
| 1146 | 0 | 6 | EXTEND(SP, 4); | 
 
| 1181 | 1 | 5 | if (DO_UTF8(ip_address_sv) && !sv_utf8_downgrade(ip_address_sv, 1)) | 
 
|  | 1 | 0 | if (DO_UTF8(ip_address_sv) && !sv_utf8_downgrade(ip_address_sv, 1)) | 
 
|  | 1 | 0 | if (DO_UTF8(ip_address_sv) && !sv_utf8_downgrade(ip_address_sv, 1)) | 
 
| 1184 | 5 | 0 | ip_address = SvPVbyte(ip_address_sv, addrlen); | 
 
| 1188 | 0 | 3 | if(addrlen != 4) | 
 
| 1194 | 0 | 2 | if(addrlen != 16) | 
 
| 1210 | 3 | 2 | if(addrlen < sizeof(addr)) { | 
 
| 1258 | 6 | 0 | ok = (*host != '\0') && inet_pton(af, host, &ip_address); | 
 
|  | 6 | 0 | ok = (*host != '\0') && inet_pton(af, host, &ip_address); | 
 
| 1261 | 6 | 0 | if (ok) { | 
 
| 1281 | 0 | 2 | if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1)) | 
 
| 1283 | 2 | 0 | multiaddrbytes = SvPVbyte(multiaddr, len); | 
 
| 1284 | 0 | 2 | if (len != sizeof(mreq.imr_multiaddr)) | 
 
| 1290 | 1 | 1 | if(SvOK(interface)) { | 
 
|  | 1 | 0 | if(SvOK(interface)) { | 
 
|  | 0 | 1 | if(SvOK(interface)) { | 
 
| 1291 | 0 | 1 | if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1)) | 
 
| 1293 | 1 | 0 | interfacebytes = SvPVbyte(interface, len); | 
 
| 1294 | 0 | 1 | if (len != sizeof(mreq.imr_interface)) | 
 
| 1316 | 2 | 0 | char * mreqbytes = SvPVbyte(mreq_sv, mreqlen); | 
 
| 1317 | 0 | 2 | if (mreqlen != sizeof(mreq)) | 
 
| 1322 | 0 | 2 | EXTEND(SP, 2); | 
 
| 1343 | 0 | 1 | if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1)) | 
 
| 1345 | 1 | 0 | multiaddrbytes = SvPVbyte(multiaddr, len); | 
 
| 1346 | 0 | 1 | if (len != sizeof(mreq.imr_multiaddr)) | 
 
| 1350 | 0 | 1 | if (DO_UTF8(source) && !sv_utf8_downgrade(source, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(source) && !sv_utf8_downgrade(source, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(source) && !sv_utf8_downgrade(source, 1)) | 
 
| 1352 | 0 | 1 | if (len != sizeof(mreq.imr_sourceaddr)) | 
 
| 1356 | 1 | 0 | sourcebytes = SvPVbyte(source, len); | 
 
| 1360 | 0 | 1 | if(SvOK(interface)) { | 
 
|  | 0 | 0 | if(SvOK(interface)) { | 
 
|  | 0 | 0 | if(SvOK(interface)) { | 
 
| 1361 | 0 | 1 | if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1)) | 
 
| 1363 | 1 | 0 | interfacebytes = SvPVbyte(interface, len); | 
 
| 1364 | 0 | 1 | if (len != sizeof(mreq.imr_interface)) | 
 
| 1388 | 1 | 0 | char * mreqbytes = SvPVbyte(mreq_sv, mreqlen); | 
 
| 1389 | 0 | 1 | if (mreqlen != sizeof(mreq)) | 
 
| 1394 | 0 | 1 | EXTEND(SP, 3); | 
 
| 1414 | 0 | 1 | if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1)) | 
 
|  | 0 | 0 | if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1)) | 
 
| 1416 | 1 | 0 | multiaddrbytes = SvPVbyte(multiaddr, len); | 
 
| 1417 | 0 | 1 | if (len != sizeof(mreq.ipv6mr_multiaddr)) | 
 
| 1440 | 1 | 0 | char * mreqbytes = SvPVbyte(mreq_sv, mreqlen); | 
 
| 1441 | 0 | 1 | if (mreqlen != sizeof(mreq)) | 
 
| 1446 | 0 | 1 | EXTEND(SP, 2); |