You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Load the proper getaddrinfo functions from ws2_32.dll, if they're present.
Patch by Martin Storsjö <martin at martin dot st>. Originally committed as revision 21443 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		
				
					committed by
					
						 Ramiro Polla
						Ramiro Polla
					
				
			
			
				
	
			
			
			
						parent
						
							3debf366c8
						
					
				
				
					commit
					6023d84a2b
				
			| @@ -68,6 +68,16 @@ int ff_getaddrinfo(const char *node, const char *service, | ||||
|     struct addrinfo *ai; | ||||
|     struct sockaddr_in *sin; | ||||
|  | ||||
| #if HAVE_WINSOCK2_H | ||||
|     int (WSAAPI *win_getaddrinfo)(const char *node, const char *service, | ||||
|                                   const struct addrinfo *hints, | ||||
|                                   struct addrinfo **res); | ||||
|     HMODULE ws2mod = GetModuleHandle("ws2_32.dll"); | ||||
|     win_getaddrinfo = GetProcAddress(ws2mod, "getaddrinfo"); | ||||
|     if (win_getaddrinfo) | ||||
|         return win_getaddrinfo(node, service, hints, res); | ||||
| #endif | ||||
|  | ||||
|     sin = av_mallocz(sizeof(struct sockaddr_in)); | ||||
|     if (!sin) | ||||
|         return EAI_FAIL; | ||||
| @@ -124,6 +134,17 @@ int ff_getaddrinfo(const char *node, const char *service, | ||||
|  | ||||
| void ff_freeaddrinfo(struct addrinfo *res) | ||||
| { | ||||
| #if HAVE_WINSOCK2_H | ||||
|     void (WSAAPI *win_freeaddrinfo)(struct addrinfo *res); | ||||
|     HMODULE ws2mod = GetModuleHandle("ws2_32.dll"); | ||||
|     win_freeaddrinfo = (void (WSAAPI *)(struct addrinfo *res)) | ||||
|                        GetProcAddress(ws2mod, "freeaddrinfo"); | ||||
|     if (win_freeaddrinfo) { | ||||
|         win_freeaddrinfo(res); | ||||
|         return; | ||||
|     } | ||||
| #endif | ||||
|  | ||||
|     av_free(res->ai_canonname); | ||||
|     av_free(res->ai_addr); | ||||
|     av_free(res); | ||||
| @@ -135,6 +156,16 @@ int ff_getnameinfo(const struct sockaddr *sa, int salen, | ||||
| { | ||||
|     const struct sockaddr_in *sin = (const struct sockaddr_in *)sa; | ||||
|  | ||||
| #if HAVE_WINSOCK2_H | ||||
|     int (WSAAPI *win_getnameinfo)(const struct sockaddr *sa, socklen_t salen, | ||||
|                                   char *host, DWORD hostlen, | ||||
|                                   char *serv, DWORD servlen, int flags); | ||||
|     HMODULE ws2mod = GetModuleHandle("ws2_32.dll"); | ||||
|     win_getnameinfo = GetProcAddress(ws2mod, "getnameinfo"); | ||||
|     if (win_getnameinfo) | ||||
|         return win_getnameinfo(sa, salen, host, hostlen, serv, servlen, flags); | ||||
| #endif | ||||
|  | ||||
|     if (sa->sa_family != AF_INET) | ||||
|         return EAI_FAMILY; | ||||
|     if (!host && !serv) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user