I noticed this in 6.11.1, and it appears the code is the same here:
http://boinc.berkeley.edu/trac/browser/trunk/boinc/client/http_curl.cpp#L425

client/http_curl.cpp:425
    curl_easy_setopt(curlEasy, CURLOPT_URL, m_url);

This does not urlescape characters, and can lead to download failures.
I noticed this with files with a space in the name.

I corrected it with the following patch.  This patch is wholly
insufficient for actual production use, but served to correct my
problem.  I think you'd actually want to use
http://curl.haxx.se/libcurl/c/curl_easy_escape.html
But I'm not really familiar with libcurl.

     // the following seems to be a no-op
     //curlErr = curl_easy_setopt(curlEasy, CURLOPT_ERRORBUFFER, error_msg);

-    curlErr = curl_easy_setopt(curlEasy, CURLOPT_URL, m_url);
+    //Kind of important...
+    char* escapedUrl = str_replace((const char *)m_url, " ", "%20");
+    curlErr = curl_easy_setopt(curlEasy, CURLOPT_URL, escapedUrl);
+    //I'm not sure If I can call this immediately or not, so I'll just
leak the memory.
+    //curl_free(escapedUrl);


+
     // This option determines whether curl verifies that the server
     // claims to be who you want it to be.
     // When negotiating an SSL connection,


-tom
_______________________________________________
boinc_dev mailing list
[email protected]
http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev
To unsubscribe, visit the above URL and
(near bottom of page) enter your email address.

Reply via email to