From 669c47953c86f489d2a7ce8893bc9a5e1f0620e5 Mon Sep 17 00:00:00 2001 From: David Turner <> Date: Mon, 13 Apr 2009 17:58:45 -0700 Subject: 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 --- sockets.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'sockets.c') 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 ); -- cgit v1.1