提交 2ca6e9bb 编写于 作者: M Martin Storsjö

network: Extend the fallback gai_strerror implementation to handle more error codes

This is useful if a proper getaddrinfo is loaded dynamically on
windows, while using the fallback implementation of gai_strerror.
Signed-off-by: NMartin Storsjö <martin@martin.st>
上级 b4675d0f
......@@ -110,17 +110,33 @@ struct addrinfo {
#endif
/* getaddrinfo constants */
#ifndef EAI_AGAIN
#define EAI_AGAIN 2
#endif
#ifndef EAI_BADFLAGS
#define EAI_BADFLAGS 3
#endif
#ifndef EAI_FAIL
#define EAI_FAIL 4
#endif
#ifndef EAI_FAMILY
#define EAI_FAMILY 5
#endif
#ifndef EAI_MEMORY
#define EAI_MEMORY 6
#endif
#ifndef EAI_NODATA
#define EAI_NODATA 7
#endif
#ifndef EAI_NONAME
#define EAI_NONAME 8
#endif
#ifndef EAI_SERVICE
#define EAI_SERVICE 9
#endif
#ifndef EAI_SOCKTYPE
#define EAI_SOCKTYPE 10
#endif
#ifndef AI_PASSIVE
#define AI_PASSIVE 1
......
......@@ -243,9 +243,17 @@ int ff_getnameinfo(const struct sockaddr *sa, int salen,
const char *ff_gai_strerror(int ecode)
{
switch(ecode) {
case EAI_AGAIN : return "Temporary failure in name resolution";
case EAI_BADFLAGS: return "Invalid flags for ai_flags";
case EAI_FAIL : return "A non-recoverable error occurred";
case EAI_FAMILY : return "The address family was not recognized or the address length was invalid for the specified family";
case EAI_MEMORY : return "Memory allocation failure";
#if EAI_NODATA != EAI_NONAME
case EAI_NODATA : return "No address associated with hostname";
#endif
case EAI_NONAME : return "The name does not resolve for the supplied parameters";
case EAI_SERVICE: return "servname not supported for ai_socktype";
case EAI_SOCKTYPE: return "ai_socktype not supported";
}
return "Unknown error";
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册