| modification, are permitted provided that the conditions mentioned |
| in the accompanying LICENSE file are met. |
+--------------------------------------------------------------------+
- | Copyright (c) 2004-2006, Michael Wallner <mike@php.net> |
+ | Copyright (c) 2004-2010, Michael Wallner <mike@php.net> |
+--------------------------------------------------------------------+
*/
#define HTTP_WANT_CURL
#include "php_http.h"
+#ifdef HTTP_HAVE_CURL
#include "php_http_request_api.h"
/* {{{ void http_request_info(http_request *, HashTable *) */
MAKE_STD_ZVAL(subarray);
array_init(subarray);
for (p = s; p; p = p->next) {
- add_next_index_string(subarray, p->data, 1);
+ if (p->data) {
+ add_next_index_string(subarray, p->data, 1);
+ }
}
add_assoc_zval_ex(&array, "ssl_engines", sizeof("ssl_engines"), subarray);
curl_slist_free_all(s);
MAKE_STD_ZVAL(subarray);
array_init(subarray);
for (p = s; p; p = p->next) {
- add_next_index_string(subarray, p->data, 1);
+ if (p->data) {
+ add_next_index_string(subarray, p->data, 1);
+ }
}
add_assoc_zval_ex(&array, "cookies", sizeof("cookies"), subarray);
curl_slist_free_all(s);
}
#endif
+#if HTTP_CURL_VERSION(7,18,2)
+ if (CURLE_OK == curl_easy_getinfo(request->ch, CURLINFO_REDIRECT_URL, &c)) {
+ add_assoc_string_ex(&array, "redirect_url", sizeof("redirect_url"), c ? c : "", 1);
+ }
+#endif
+#if HTTP_CURL_VERSION(7,19,0)
+ if (CURLE_OK == curl_easy_getinfo(request->ch, CURLINFO_PRIMARY_IP, &c)) {
+ add_assoc_string_ex(&array, "primary_ip", sizeof("primary_ip"), c ? c : "", 1);
+ }
+#endif
+#if HTTP_CURL_VERSION(7,19,0)
+ if (CURLE_OK == curl_easy_getinfo(request->ch, CURLINFO_APPCONNECT_TIME, &d)) {
+ add_assoc_double_ex(&array, "appconnect_time", sizeof("appconnect_time"), d);
+ }
+#endif
+#if HTTP_CURL_VERSION(7,19,4)
+ if (CURLE_OK == curl_easy_getinfo(request->ch, CURLINFO_CONDITION_UNMET, &l)) {
+ add_assoc_long_ex(&array, "condition_unmet", sizeof("condition_unmet"), l);
+ }
+#endif
+#if HTTP_CURL_VERSION(7,21,0)
+ if (CURLE_OK == curl_easy_getinfo(request->ch, CURLINFO_PRIMARY_PORT, &l)) {
+ add_assoc_long_ex(&array, "primary_port", sizeof("primary_port"), l);
+ }
+#endif
+#if HTTP_CURL_VERSION(7,21,0)
+ if (CURLE_OK == curl_easy_getinfo(request->ch, CURLINFO_LOCAL_IP, &c)) {
+ add_assoc_string_ex(&array, "local_ip", sizeof("local_ip"), c ? c : "", 1);
+ }
+#endif
+#if HTTP_CURL_VERSION(7,21,0)
+ if (CURLE_OK == curl_easy_getinfo(request->ch, CURLINFO_LOCAL_PORT, &l)) {
+ add_assoc_long_ex(&array, "local_port", sizeof("local_port"), l);
+ }
+#endif
/* END */
- add_assoc_string_ex(&array, "error", sizeof("error"), request->_error, 1);
+#if HTTP_CURL_VERSION(7,19,1) && defined(HTTP_HAVE_OPENSSL)
+ {
+ int i;
+ zval *ci_array;
+ struct curl_certinfo *ci;
+ char *colon, *keyname;
+
+ if (CURLE_OK == curl_easy_getinfo(request->ch, CURLINFO_CERTINFO, &ci)) {
+ MAKE_STD_ZVAL(ci_array);
+ array_init(ci_array);
+
+ for (i = 0; i < ci->num_of_certs; ++i) {
+ s = ci->certinfo[i];
+
+ MAKE_STD_ZVAL(subarray);
+ array_init(subarray);
+ for (p = s; p; p = p->next) {
+ if (p->data) {
+ if ((colon = strchr(p->data, ':'))) {
+ keyname = estrndup(p->data, colon - p->data);
+ add_assoc_string_ex(subarray, keyname, colon - p->data + 1, colon + 1, 1);
+ efree(keyname);
+ } else {
+ add_next_index_string(subarray, p->data, 1);
+ }
+ }
+ }
+ add_next_index_zval(ci_array, subarray);
+ }
+ add_assoc_zval_ex(&array, "certinfo", sizeof("certinfo"), ci_array);
+ }
+ }
+#endif
+ add_assoc_string_ex(&array, "error", sizeof("error"), http_request_storage_get(request->ch)->errorbuffer, 1);
}
/* }}} */
+#endif /* HTTP_HAVE_CURL */
+
/*
* Local variables:
* tab-width: 4