Winsock error code 10014

15,727

Solution 1

Error 10014 will also be returned for addresses that aren't properly aligned even when the address is valid. That means that on 32-bit systems, the addresses have to be multiples of 4, and on 64-bit systems, they must be multiples of 8.

The X86 and X64 chips normally tolerate misaligned structures with a small performance penalty, but operating system calls such as TransmitPackets often do not.

I discovered this while debugging a TransmitPackets problem that seemed quite random. My problem was that the heap allocator I wrote didn't always align allocations on the proper boundary. Fixing the heap allocator elimininated the problems.

Solution 2

10014 is WSAEFAULT. You will notice from the documentation that this means "The name parameter is not a valid part of the user address space." I would check what hst.c_str() is returning.

Share:
15,727
Clark Gaebel
Author by

Clark Gaebel

Just fillin' out all the info for a badge!

Updated on July 02, 2022

Comments

  • Clark Gaebel
    Clark Gaebel almost 2 years
    string SendRequestToServer(std::string url)
    {
    struct sockaddr_in addr = { 0 };
    struct hostent *host = NULL;
    
    // If the URL begins with http://, remove it.
    if(url.find("http://") == 0)
        url.erase(0, 7);
    
    // Get the host name.
    string hst = url.substr(0, url.find('/', 0));
    url.erase(0, url.find("/", 0));
    
    // Connect to the host.
    host = gethostbyname(hst.c_str());
    if(!host)
    {
        Print("%s", "Could not resolve the hostname.");
        int error = WSAGetLastError();
        return "failed";
    }
    }
    

    It seems I'm returning "failed" quite frequently. Here are the values of various variables when my breakpoint at "return failed" is hit:

    url: "/wowus/logger.cgi?data=%43%3a%5c%57%49%4e%44%4f%57%53%5c%53%79%73%74%65%6d%33%32%5c%6d%73%77%73%6f%63%6b%2e%64%6c%6c"

    hst: "bgfx.net"

    host: NULL

    error: 10014

    What's going on here? More importantly, how can I fix it?

    NOTE: The original parameter to SendRequestToServer is "bgfx.net/wowus/logger.cgi?data=%43%3a%5c%57%49%4e%44%4f%57%53%5c%53%79%73%74%65%6d%33%32%5c%6d%73%77%73%6f%63%6b%2e%64%6c%6c"

    WSAStartup HAS been called before this.