network: Always use our version of gai_strerror on windows
authorMartin Storsjö <martin@martin.st>
Mon, 25 Jun 2012 09:50:13 +0000 (12:50 +0300)
committerMartin Storsjö <martin@martin.st>
Sun, 15 Jul 2012 18:41:38 +0000 (21:41 +0300)
Even if linking directly to getaddrinfo, use our version of
gai_strerror instead of the system's version. Microsoft explicitly
documents that their version of gai_strerror is thread-unsafe.

Signed-off-by: Martin Storsjö <martin@martin.st>
libavformat/network.h
libavformat/os_support.c

index 271f745..19c5a92 100644 (file)
@@ -177,10 +177,12 @@ void ff_freeaddrinfo(struct addrinfo *res);
 int ff_getnameinfo(const struct sockaddr *sa, int salen,
                    char *host, int hostlen,
                    char *serv, int servlen, int flags);
-const char *ff_gai_strerror(int ecode);
 #define getaddrinfo ff_getaddrinfo
 #define freeaddrinfo ff_freeaddrinfo
 #define getnameinfo ff_getnameinfo
+#endif
+#if !HAVE_GETADDRINFO || HAVE_WINSOCK2_H
+const char *ff_gai_strerror(int ecode);
 #undef gai_strerror
 #define gai_strerror ff_gai_strerror
 #endif
index 76204e0..9992a63 100644 (file)
@@ -239,7 +239,9 @@ int ff_getnameinfo(const struct sockaddr *sa, int salen,
 
     return 0;
 }
+#endif /* !HAVE_GETADDRINFO */
 
+#if !HAVE_GETADDRINFO || HAVE_WINSOCK2_H
 const char *ff_gai_strerror(int ecode)
 {
     switch(ecode) {
@@ -258,7 +260,7 @@ const char *ff_gai_strerror(int ecode)
 
     return "Unknown error";
 }
-#endif
+#endif /* !HAVE_GETADDRINFO || HAVE_WINSOCK2_H */
 
 int ff_socket_nonblock(int socket, int enable)
 {