version 1.46, 2002/06/01 20:21:49 |
version 1.47, 2002/06/09 00:40:29 |
|
|
#define UC(b) (((int)b)&0xff) |
#define UC(b) (((int)b)&0xff) |
|
|
if (sendport) { |
if (sendport) { |
char hname[INET6_ADDRSTRLEN]; |
char hname[NI_MAXHOST], pbuf[NI_MAXSERV]; |
int af; |
int af; |
|
union sockunion tmp; |
|
|
switch (data_addr.su_family) { |
tmp = data_addr; |
|
switch (tmp.su_family) { |
case AF_INET: |
case AF_INET: |
if (!epsv4 || epsv4bad) { |
if (!epsv4 || epsv4bad) { |
result = COMPLETE +1; |
result = COMPLETE +1; |
|
|
} |
} |
/*FALLTHROUGH*/ |
/*FALLTHROUGH*/ |
case AF_INET6: |
case AF_INET6: |
af = (data_addr.su_family == AF_INET) ? 1 : 2; |
if (tmp.su_family == AF_INET6) |
if (getnameinfo((struct sockaddr *)&data_addr, |
tmp.su_sin6.sin6_scope_id = 0; |
data_addr.su_len, hname, sizeof(hname), |
af = (tmp.su_family == AF_INET) ? 1 : 2; |
NULL, 0, NI_NUMERICHOST)) { |
if (getnameinfo((struct sockaddr *)&tmp, |
|
tmp.su_len, hname, sizeof(hname), |
|
pbuf, sizeof(pbuf), NI_NUMERICHOST | NI_NUMERICSERV)) { |
result = ERROR; |
result = ERROR; |
} else { |
} else { |
result = command("EPRT |%d|%s|%d|", |
result = command("EPRT |%d|%s|%s|", |
af, hname, ntohs(data_addr.su_port)); |
af, hname, pbuf); |
if (result != COMPLETE) { |
if (result != COMPLETE) { |
epsv4bad = 1; |
epsv4bad = 1; |
if (debug) { |
if (debug) { |