| 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); |