Browse Source

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: Martin Storsjö <martin@martin.st>
tags/n1.0
Martin Storsjö 13 years ago
parent
commit
2ca6e9bb47
2 changed files with 26 additions and 2 deletions
  1. +18
    -2
      libavformat/network.h
  2. +8
    -0
      libavformat/os_support.c

+ 18
- 2
libavformat/network.h View File

@@ -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


+ 8
- 0
libavformat/os_support.c View File

@@ -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";


Loading…
Cancel
Save