change getaddrinfo() implementation to match GLibc.

the issue is that the BSD implementation doesn't accept a call like:

  getaddrinfo(SERVER_NAME, "9999", NULL, &res);

because if will reject a numerical string in the second parameter if no hints are explicitely
provided. This technically doesn't violate POSIX but might make porting Linux software a bit
difficult. For more details see:

http://groups.google.com/group/android-ndk/browse_thread/thread/818ab9c53f24c87

also comment debugging printf() calls which shouldn't be there.
This commit is contained in:
David 'Digit' Turner 2009-05-05 15:50:24 +02:00
parent 85a01ffba3
commit 5e56370038
1 changed files with 6 additions and 2 deletions

View File

@ -912,7 +912,11 @@ get_port(const struct addrinfo *ai, const char *servname, int matchonly)
allownumeric = 1; allownumeric = 1;
break; break;
case ANY: case ANY:
#if 1 /* ANDROID-SPECIFIC CHANGE TO MATCH GLIBC */
allownumeric = 1;
#else
allownumeric = 0; allownumeric = 0;
#endif
break; break;
default: default:
return EAI_SOCKTYPE; return EAI_SOCKTYPE;
@ -1271,7 +1275,7 @@ _dns_getaddrinfo(void *rv, void *cb_data, va_list ap)
name = va_arg(ap, char *); name = va_arg(ap, char *);
pai = va_arg(ap, const struct addrinfo *); pai = va_arg(ap, const struct addrinfo *);
fprintf(stderr, "_dns_getaddrinfo() name = '%s'\n", name); //fprintf(stderr, "_dns_getaddrinfo() name = '%s'\n", name);
memset(&q, 0, sizeof(q)); memset(&q, 0, sizeof(q));
memset(&q2, 0, sizeof(q2)); memset(&q2, 0, sizeof(q2));
@ -1630,7 +1634,7 @@ res_searchN(const char *name, struct res_target *target, res_state res)
trailing_dot++; trailing_dot++;
fprintf(stderr, "res_searchN() name = '%s'\n", name); //fprintf(stderr, "res_searchN() name = '%s'\n", name);
/* /*
* if there aren't any dots, it could be a user-level alias * if there aren't any dots, it could be a user-level alias