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) |
1209
|
3 |
2 |
if(addrlen < sizeof(addr)) { |
1257
|
6 |
0 |
ok = (*host != '\0') && inet_pton(af, host, &ip_address); |
|
6 |
0 |
ok = (*host != '\0') && inet_pton(af, host, &ip_address); |
1260
|
6 |
0 |
if (ok) { |
1280
|
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)) |
1282
|
2 |
0 |
multiaddrbytes = SvPVbyte(multiaddr, len); |
1283
|
0 |
2 |
if (len != sizeof(mreq.imr_multiaddr)) |
1289
|
1 |
1 |
if(SvOK(interface)) { |
|
1 |
0 |
if(SvOK(interface)) { |
|
0 |
1 |
if(SvOK(interface)) { |
1290
|
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)) |
1292
|
1 |
0 |
interfacebytes = SvPVbyte(interface, len); |
1293
|
0 |
1 |
if (len != sizeof(mreq.imr_interface)) |
1315
|
2 |
0 |
char * mreqbytes = SvPVbyte(mreq_sv, mreqlen); |
1316
|
0 |
2 |
if (mreqlen != sizeof(mreq)) |
1321
|
0 |
2 |
EXTEND(SP, 2); |
1342
|
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)) |
1344
|
1 |
0 |
multiaddrbytes = SvPVbyte(multiaddr, len); |
1345
|
0 |
1 |
if (len != sizeof(mreq.imr_multiaddr)) |
1349
|
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)) |
1351
|
0 |
1 |
if (len != sizeof(mreq.imr_sourceaddr)) |
1355
|
1 |
0 |
sourcebytes = SvPVbyte(source, len); |
1359
|
0 |
1 |
if(SvOK(interface)) { |
|
0 |
0 |
if(SvOK(interface)) { |
|
0 |
0 |
if(SvOK(interface)) { |
1360
|
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)) |
1362
|
1 |
0 |
interfacebytes = SvPVbyte(interface, len); |
1363
|
0 |
1 |
if (len != sizeof(mreq.imr_interface)) |
1387
|
1 |
0 |
char * mreqbytes = SvPVbyte(mreq_sv, mreqlen); |
1388
|
0 |
1 |
if (mreqlen != sizeof(mreq)) |
1393
|
0 |
1 |
EXTEND(SP, 3); |
1413
|
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)) |
1415
|
1 |
0 |
multiaddrbytes = SvPVbyte(multiaddr, len); |
1416
|
0 |
1 |
if (len != sizeof(mreq.ipv6mr_multiaddr)) |
1439
|
1 |
0 |
char * mreqbytes = SvPVbyte(mreq_sv, mreqlen); |
1440
|
0 |
1 |
if (mreqlen != sizeof(mreq)) |
1445
|
0 |
1 |
EXTEND(SP, 2); |