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