Index: dll/win32/mswsock/mswhelper.c =================================================================== --- dll/win32/mswsock/mswhelper.c (revision 72750) +++ dll/win32/mswsock/mswhelper.c (working copy) @@ -263,8 +263,7 @@ /* addr_list */ RtlZeroMemory(lst, sizeof(lst)); - if (ip4addr != 0) - lst[0] = (void*)&ip4addr; + lst[0] = (void*)&ip4addr; phe->h_addr_list = (char**)(mswBufferEndPtr(mswBuf) - bytesOfs); Index: dll/win32/mswsock/nsplookup.c =================================================================== --- dll/win32/mswsock/nsplookup.c (revision 72750) +++ dll/win32/mswsock/nsplookup.c (working copy) @@ -548,7 +548,7 @@ DnsName = NameSt; - if (!strcmp(name, DnsName)) + if (!strcmp(name, DnsName) || !strcmp(name, AddressStr)) { Found = TRUE; break; @@ -637,6 +637,14 @@ goto cleanup; } + /* very special case 0.0.0.0 */ + if (wcscmp(L"0.0.0.0", name) == 0) + { + hostinfo->hostnameW = StrCpyHeapAllocW(hHeap, name); + hostinfo->addr4 = 0; + return ERROR_SUCCESS; + } + /* Hostname "" / "localhost" - convert to "computername" */ if ((wcscmp(L"", name) == 0) /*||