aboutsummaryrefslogtreecommitdiffstats
path: root/sockets.c
diff options
context:
space:
mode:
authorDavid Turner <>2009-04-13 17:58:45 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-04-13 17:58:45 -0700
commit669c47953c86f489d2a7ce8893bc9a5e1f0620e5 (patch)
treec02694997e920cda9e6c756984436d438fc6e5bf /sockets.c
parentfff1ae51e389c25e2b19cd087c5e19cd27d40163 (diff)
downloadexternal_qemu-669c47953c86f489d2a7ce8893bc9a5e1f0620e5.zip
external_qemu-669c47953c86f489d2a7ce8893bc9a5e1f0620e5.tar.gz
external_qemu-669c47953c86f489d2a7ce8893bc9a5e1f0620e5.tar.bz2
AI 145975: am: CL 145805 Fix a bug in android/console.c that prevented the console "redir add" command from working properly
Fix a bug in sock_address_init_resolve which caused a crashed when getaddrinfo() returned an error. Original author: digit Merged from: //branches/cupcake/... Automated import of CL 145975
Diffstat (limited to 'sockets.c')
-rw-r--r--sockets.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/sockets.c b/sockets.c
index 62c1ee3..fa1f39d 100644
--- a/sockets.c
+++ b/sockets.c
@@ -624,8 +624,29 @@ sock_address_init_resolve( SockAddress* a, const char* hostname, uint16_t por
memset(hints, 0, sizeof(hints));
hints->ai_family = preferIn6 ? AF_INET6 : AF_UNSPEC;
- if (getaddrinfo(hostname, NULL, hints, &res) < 0) {
- return _fix_errno();
+ ret = getaddrinfo(hostname, NULL, hints, &res);
+ if (ret != 0) {
+ int err;
+
+ switch (ret) {
+ case EAI_AGAIN: /* server is down */
+ case EAI_FAIL: /* server is sick */
+ err = EHOSTDOWN;
+ break;
+
+ case EAI_NODATA:
+ case EAI_NONAME:
+ err = ENOENT;
+ break;
+
+ case EAI_MEMORY:
+ err = ENOMEM;
+ break;
+
+ default:
+ err = EINVAL;
+ }
+ return _set_errno(err);
}
ret = sock_address_from_bsd( a, res->ai_addr, res->ai_addrlen );