cURL
Haxx ad
libcurl

curl's project page on SourceForge.net

Sponsors:
Haxx

cURL > Mailing List > Monthly Index > Single Mail

curl-tracker mailing list Archives

[ curl-Bugs-2627315 ] multithreading problem - couldn't resolve host

From: SourceForge.net <noreply_at_sourceforge.net>
Date: Sun, 22 Feb 2009 22:08:51 +0000

Bugs item #2627315, was opened at 2009-02-22 11:19
Message generated for change (Settings changed) made by bagder
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=100976&aid=2627315&group_id=976

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: libcurl
Group: wrong behaviour
Status: Open
>Resolution: Invalid
Priority: 5
Private: No
Submitted By: mybugaccount mybugaccount (mybugaccount)
Assigned to: Daniel Stenberg (bagder)
Summary: multithreading problem - couldn't resolve host

Initial Comment:
I use libcurl 7.19.2 precompiled for mingw. When I use multiple threads function curl_easy_perform() returns CURLE_COULDNT_RESOLVE_HOST. When I use critical sections to serialize CURL calls it doesn't help also. With one thread only my code works well.

----------------------------------------------------------------------

Comment By: Dan Fandrich (dfandrich)
Date: 2009-02-22 22:28

Message:
There's no call to curl_global_init() in the provided code, which means
that two of the three threads start running before the Winsock init
completes.

----------------------------------------------------------------------

Comment By: mybugaccount mybugaccount (mybugaccount)
Date: 2009-02-22 13:58

Message:
Ok, there is the source code compiled with mingw 3.4.2 and linked with
libcurldll.a (7.19.2).
Only the first thread runs fine, two others returns
CURLE_COULDNT_RESOLVE_HOST.

#include <windows.h>
#include <curl/curl.h>

static size_t wd_null(void *ptr, size_t size, size_t nmemb, void *stream)
{
        return size*nmemb;
}

DWORD WINAPI threadFunc(LPVOID param)
{
        int *p=(int*)param;
        int id=*p;
        char user[1024];
        char pass[1024];
        
        if (id==0)
        {
                strcpy(user,"user0");
                strcpy(pass,"pass0");
        }
        if (id==1)
        {
                strcpy(user,"user1");
                strcpy(pass,"pass1");
        }
        if (id==2)
        {
                strcpy(user,"user2");
                strcpy(pass,"pass2");
        }
        

        CURL *curl;
    curl = curl_easy_init();
    if (curl)
    {
              curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;
MSIE 6.0; Windows NT 5.1)");
        curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");
    }
    else
    {
       return 0;
    }

        CURLcode res;
        char post_login[1024];
        sprintf(post_login,"login=%s&password=%s",user,pass);
        
        // here the original address was replaced with www.google.com,
        // but the code still returns the same error
        
        curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com/login");
        curl_easy_setopt(curl, CURLOPT_POST, 1);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post_login);
    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(post_login));
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wd_null);
    res = curl_easy_perform(curl);
    if (res!=0)
    {
                char msg[1024];
                sprintf(msg,"error %d in thread %d\n",res,id);
                MessageBox(0,msg,"err",MB_OK);
        }
        return 1;
}

int main()
{
        int id0,id1,id2;
        id0=0;
        id1=1;
        id2=2;
        DWORD threadid1,threadid2,threadid3;
        HANDLE h1=CreateThread(0,1024*1024,threadFunc,&id0,0,&threadid1);
        HANDLE h2=CreateThread(0,1024*1024,threadFunc,&id1,0,&threadid2);
        HANDLE h3=CreateThread(0,1024*1024,threadFunc,&id2,0,&threadid3);
        Sleep(10000);
        return 0;
}

----------------------------------------------------------------------

Comment By: Daniel Stenberg (bagder)
Date: 2009-02-22 13:18

Message:
This kind of generic report is next to useless. We have a large amount of
users who use libcurl in threaded apps with no problems.

Please back up your claims with facts, most preferably with a small fully
working source code that reproduces it.

----------------------------------------------------------------------

You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=100976&aid=2627315&group_id=976
Received on 2009-02-22

These mail archives are generated by hypermail.

donate! Page updated November 12, 2010.
web site info

File upload with ASP.NET