From cd8ca1e595e696753eb980fb30982082c0a5eade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 12 Aug 2010 11:43:20 +0000 Subject: [PATCH] * Improved error reporting. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38040 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../libnetapi/NetworkAddressResolver.cpp | 41 +++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/src/kits/network/libnetapi/NetworkAddressResolver.cpp b/src/kits/network/libnetapi/NetworkAddressResolver.cpp index 6a229439c6..561c5fdb5a 100644 --- a/src/kits/network/libnetapi/NetworkAddressResolver.cpp +++ b/src/kits/network/libnetapi/NetworkAddressResolver.cpp @@ -6,6 +6,7 @@ #include +#include #include #include @@ -157,12 +158,44 @@ BNetworkAddressResolver::SetTo(int family, const char* host, int status = getaddrinfo(host != NULL ? hostString.String() : NULL, portString.Length() != 0 ? portString.String() : NULL, &hint, &fInfo); - if (status != 0) { - // TODO: improve error reporting - return fStatus = B_ERROR; + if (status == 0) + return fStatus = B_OK; + + // Map errors + // TODO: improve error reporting, maybe add specific error codes? + + switch (status) { + case EAI_ADDRFAMILY: + case EAI_BADFLAGS: + case EAI_PROTOCOL: + case EAI_BADHINTS: + case EAI_SOCKTYPE: + case EAI_SERVICE: + case EAI_NONAME: + case EAI_FAMILY: + fStatus = B_BAD_VALUE; + break; + + case EAI_SYSTEM: + fStatus = errno; + break; + + case EAI_OVERFLOW: + case EAI_MEMORY: + fStatus = B_NO_MEMORY; + break; + + case EAI_AGAIN: + // TODO: better error code to denote temporary failure? + fStatus = B_TIMED_OUT; + break; + + default: + fStatus = B_ERROR; + break; } - return fStatus = B_OK; + return fStatus; }