]> granicus.if.org Git - php/commitdiff
fix warning & improve error handling in CURL
authorStanislav Malyshev <stas@php.net>
Mon, 23 Mar 2015 04:51:58 +0000 (21:51 -0700)
committerStanislav Malyshev <stas@php.net>
Mon, 23 Mar 2015 04:51:58 +0000 (21:51 -0700)
ext/curl/interface.c

index 6b9611dbe856831f90be9702fbbeb73959d3892e..85cb33d00a3b081f6780dad1f720408ac8a3bc9c 100644 (file)
@@ -2505,6 +2505,7 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{
                                zend_ulong  num_key;
                                struct HttpPost *first = NULL;
                                struct HttpPost *last  = NULL;
+                               CURLFORMcode form_error;
 
                                postfields = HASH_OF(zvalue);
                                if (!postfields) {
@@ -2545,13 +2546,17 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{
                                                        if (Z_TYPE_P(prop) == IS_STRING && Z_STRLEN_P(prop) > 0) {
                                                                filename = Z_STRVAL_P(prop);
                                                        }
-                                                       error = curl_formadd(&first, &last,
+                                                       form_error = curl_formadd(&first, &last,
                                                                                        CURLFORM_COPYNAME, string_key->val,
                                                                                        CURLFORM_NAMELENGTH, string_key->len,
                                                                                        CURLFORM_FILENAME, filename ? filename : postval,
                                                                                        CURLFORM_CONTENTTYPE, type ? type : "application/octet-stream",
                                                                                        CURLFORM_FILE, postval,
                                                                                        CURLFORM_END);
+                                                       if (form_error != CURL_FORMADD_OK) {
+                                                               /* Not nice to convert between enums but we only have place for one error type */
+                                                               error = (CURLcode)form_error;
+                                                       }
                                                }
 
                                                zend_string_release(string_key);
@@ -2566,13 +2571,17 @@ static int _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue) /* {{{
                                        /* The arguments after _NAMELENGTH and _CONTENTSLENGTH
                                         * must be explicitly cast to long in curl_formadd
                                         * use since curl needs a long not an int. */
-                                       error = curl_formadd(&first, &last,
+                                       form_error = curl_formadd(&first, &last,
                                                                                 CURLFORM_COPYNAME, string_key->val,
                                                                                 CURLFORM_NAMELENGTH, (zend_long)string_key->len,
                                                                                 CURLFORM_COPYCONTENTS, postval,
                                                                                 CURLFORM_CONTENTSLENGTH, (zend_long)Z_STRLEN_P(current),
                                                                                 CURLFORM_END);
 
+                                       if (form_error != CURL_FORMADD_OK) {
+                                               /* Not nice to convert between enums but we only have place for one error type */
+                                               error = (CURLcode)form_error;
+                                       }
                                        zend_string_release(string_key);
                                } ZEND_HASH_FOREACH_END();