summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2012-06-25 12:44:18 +0300
committerMartin Storsjö <martin@martin.st>2012-07-15 21:21:59 +0300
commit2ca6e9bb47f0f58f0cb4a840b301edf45e77f0e5 (patch)
tree8c759b184a2b3268bb2562948ff8f749321bc1a3 /libavformat
parentb4675d0fbf6606ab737e81c3c0fe6a05c8764334 (diff)
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>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/network.h20
-rw-r--r--libavformat/os_support.c8
2 files changed, 26 insertions, 2 deletions
diff --git a/libavformat/network.h b/libavformat/network.h
index 793cfee9a9..9b0b94de8b 100644
--- a/libavformat/network.h
+++ b/libavformat/network.h
@@ -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
diff --git a/libavformat/os_support.c b/libavformat/os_support.c
index 6d8c8ac6a3..76204e0546 100644
--- a/libavformat/os_support.c
+++ b/libavformat/os_support.c
@@ -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";