- win32 build now has libcurl v7.16.0
[m6w6/ext-http] / http_request_object.c
index 8e0b7ce8bb8726c34add518cdb54f16ab29d45d5..3b40bd27caf36cf0f43eaf0ecfbf3a9c0647a422 100644 (file)
@@ -395,7 +395,23 @@ PHP_MINIT_FUNCTION(http_request_object)
        */
        DCL_CONST(long, "VERSION_1_0", CURL_HTTP_VERSION_1_0);
        DCL_CONST(long, "VERSION_1_1", CURL_HTTP_VERSION_1_1);
-       DCL_CONST(long, "VERSION_NONE", CURL_HTTP_VERSION_NONE);
+       DCL_CONST(long, "VERSION_NONE", CURL_HTTP_VERSION_NONE); /* to be removed */
+       DCL_CONST(long, "VERSION_ANY", CURL_HTTP_VERSION_NONE);
+
+       /*
+       * SSL Version Constants
+       */
+       DCL_CONST(long, "SSL_VERSION_TLSv1", CURL_SSLVERSION_TLSv1);
+       DCL_CONST(long, "SSL_VERSION_SSLv2", CURL_SSLVERSION_SSLv2);
+       DCL_CONST(long, "SSL_VERSION_SSLv3", CURL_SSLVERSION_SSLv3);
+       DCL_CONST(long, "SSL_VERSION_ANY", CURL_SSLVERSION_DEFAULT);
+
+       /*
+       * DNS IPvX resolving
+       */
+       DCL_CONST(long, "IPRESOLVE_V4", CURL_IPRESOLVE_V4);
+       DCL_CONST(long, "IPRESOLVE_V6", CURL_IPRESOLVE_V6);
+       DCL_CONST(long, "IPRESOLVE_ANY", CURL_IPRESOLVE_WHATEVER);
 
        /*
        * Auth Constants
@@ -403,6 +419,7 @@ PHP_MINIT_FUNCTION(http_request_object)
        DCL_CONST(long, "AUTH_BASIC", CURLAUTH_BASIC);
        DCL_CONST(long, "AUTH_DIGEST", CURLAUTH_DIGEST);
        DCL_CONST(long, "AUTH_NTLM", CURLAUTH_NTLM);
+       DCL_CONST(long, "AUTH_GSSNEG", CURLAUTH_GSSNEGOTIATE);
        DCL_CONST(long, "AUTH_ANY", CURLAUTH_ANY);
        
        /*
@@ -535,21 +552,23 @@ STATUS _http_request_object_requesthandler(http_request_object *obj, zval *this_
 
                case HTTP_PUT:
                {
-                       zval *put_data = GET_PROP(putData);
+                       zval *put_file = GET_PROP(putFile);
                        
                        http_request_object_check_request_content_type(getThis());
-                       if (Z_STRLEN_P(put_data)) {
-                               obj->request->body = http_request_body_init_ex(obj->request->body, HTTP_REQUEST_BODY_CSTRING,
-                                       estrndup(Z_STRVAL_P(put_data), Z_STRLEN_P(put_data)), Z_STRLEN_P(put_data), 1);
-                       } else {
+                       
+                       if (Z_STRLEN_P(put_file)) {
                                php_stream_statbuf ssb;
-                               php_stream *stream = php_stream_open_wrapper_ex(Z_STRVAL_P(GET_PROP(putFile)), "rb", REPORT_ERRORS|ENFORCE_SAFE_MODE, NULL, HTTP_DEFAULT_STREAM_CONTEXT);
+                               php_stream *stream = php_stream_open_wrapper_ex(Z_STRVAL_P(put_file), "rb", REPORT_ERRORS|ENFORCE_SAFE_MODE, NULL, HTTP_DEFAULT_STREAM_CONTEXT);
                                
-                               if (stream && !php_stream_stat(stream, &ssb)) {
+                               if (stream && SUCCESS == php_stream_stat(stream, &ssb)) {
                                        obj->request->body = http_request_body_init_ex(obj->request->body, HTTP_REQUEST_BODY_UPLOADFILE, stream, ssb.sb.st_size, 1);
                                } else {
                                        status = FAILURE;
                                }
+                       } else {
+                               zval *put_data = GET_PROP(putData);
+                               obj->request->body = http_request_body_init_ex(obj->request->body, HTTP_REQUEST_BODY_CSTRING,
+                                       estrndup(Z_STRVAL_P(put_data), Z_STRLEN_P(put_data)), Z_STRLEN_P(put_data), 1);
                        }
                        break;
                }
@@ -653,7 +672,7 @@ STATUS _http_request_object_responsehandler(http_request_object *obj, zval *this
                }
 
                UPD_PROP(long, responseCode, msg->http.info.response.code);
-               UPD_PROP(string, responseStatus, msg->http.info.response.status ? msg->http.info.response.status : "");
+               UPD_PROP(string, responseStatus, STR_PTR(msg->http.info.response.status));
 
                MAKE_STD_ZVAL(message);
                ZVAL_OBJVAL(message, http_message_object_new_ex(http_message_object_ce, msg, NULL), 0);
@@ -1719,8 +1738,8 @@ PHP_METHOD(HttpRequest, getResponseHeader)
                                getObjectEx(http_message_object, msg, message);
                                
                                if (header_len) {
-                                       if ((header = http_message_header_ex(msg->message, pretty_key(header_name, header_len, 1, 1), header_len + 1))) {
-                                               RETURN_ZVAL(header, 1, 0);
+                                       if ((header = http_message_header_ex(msg->message, pretty_key(header_name, header_len, 1, 1), header_len + 1, 0))) {
+                                               RETURN_ZVAL(header, 1, 1);
                                        }
                                } else {
                                        array_init(return_value);