curl: Don't set CURLOPT_FAILONERROR
authorTobias Brunner <tobias@strongswan.org>
Thu, 22 May 2014 13:11:23 +0000 (15:11 +0200)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Sat, 31 May 2014 18:37:55 +0000 (20:37 +0200)
With the strongTNC REST API some errors will actually be accompanied by
a response we want to receive completely.

src/libstrongswan/plugins/curl/curl_fetcher.c

index 573c4c3..620cf74 100644 (file)
@@ -108,7 +108,7 @@ METHOD(fetcher_t, fetch, status_t,
                goto out;
        }
        curl_easy_setopt(this->curl, CURLOPT_ERRORBUFFER, error);
-       curl_easy_setopt(this->curl, CURLOPT_FAILONERROR, TRUE);
+       curl_easy_setopt(this->curl, CURLOPT_FAILONERROR, FALSE);
        curl_easy_setopt(this->curl, CURLOPT_NOSIGNAL, TRUE);
        if (this->timeout)
        {
@@ -129,25 +129,16 @@ METHOD(fetcher_t, fetch, status_t,
                        status = NOT_SUPPORTED;
                        break;
                case CURLE_OK:
+                       curl_easy_getinfo(this->curl, CURLINFO_RESPONSE_CODE,
+                                                         &result);
                        if (this->result)
                        {
-                               curl_easy_getinfo(this->curl, CURLINFO_RESPONSE_CODE,
-                                                                 &result);
                                *this->result = result;
                        }
-                       status = SUCCESS;
+                       status = (result >= 200 && result < 300) ? SUCCESS : FAILED;
                        break;
                default:
-                       if (this->result)
-                       {       /* don't log an error in this case */
-                               curl_easy_getinfo(this->curl, CURLINFO_RESPONSE_CODE,
-                                                                 &result);
-                               *this->result = result;
-                       }
-                       else
-                       {
-                               DBG1(DBG_LIB, "libcurl http request failed: %s", error);
-                       }
+                       DBG1(DBG_LIB, "libcurl http request failed: %s", error);
                        status = FAILED;
                        break;
        }