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
diff --git a/sockets.c b/sockets.c
index 62c1ee3..fa1f39d 100644
--- a/sockets.c
+++ b/sockets.c
@@ -624,8 +624,29 @@
     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 );