iliaa Tue Jun 27 23:33:19 2006 UTC
Modified files:
/php-src/ext/soap php_http.c
Log:
MFB: Improved the error reporting in SOAP extension on request failure.
http://cvs.php.net/viewvc.cgi/php-src/ext/soap/php_http.c?r1=1.90&r2=1.91&diff_format=u
Index: php-src/ext/soap/php_http.c
diff -u php-src/ext/soap/php_http.c:1.90 php-src/ext/soap/php_http.c:1.91
--- php-src/ext/soap/php_http.c:1.90 Sat Apr 29 18:29:14 2006
+++ php-src/ext/soap/php_http.c Tue Jun 27 23:33:19 2006
@@ -17,7 +17,7 @@
| Dmitry Stogov <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_http.c,v 1.90 2006/04/29 18:29:14 fmk Exp $ */
+/* $Id: php_http.c,v 1.91 2006/06/27 23:33:19 iliaa Exp $ */
#include "php_soap.h"
#include "ext/standard/base64.h"
@@ -237,6 +237,7 @@
int http_status;
int content_type_xml = 0;
char *content_encoding;
+ char *http_msg = NULL;
zend_bool old_allow_url_fopen;
if (this_ptr == NULL || Z_TYPE_P(this_ptr) != IS_OBJECT) {
@@ -729,6 +730,14 @@
tmp++;
http_status = atoi(tmp);
}
+ tmp = strstr(tmp," ");
+ if (tmp != NULL) {
+ tmp++;
+ if (http_msg) {
+ efree(http_msg);
+ }
+ http_msg = estrdup(tmp);
+ }
efree(http_version);
/* Try and get headers again */
@@ -842,6 +851,9 @@
zend_hash_del(Z_OBJPROP_P(this_ptr), "httpsocket",
sizeof("httpsocket"));
zend_hash_del(Z_OBJPROP_P(this_ptr), "_use_proxy",
sizeof("_use_proxy"));
add_soap_fault(this_ptr, "HTTP", "Error Fetching http body, No
Content-Length, connection closed or chunked data", NULL, NULL TSRMLS_CC);
+ if (http_msg) {
+ efree(http_msg);
+ }
return FALSE;
}
@@ -1044,6 +1056,9 @@
efree(content_encoding);
efree(http_headers);
efree(http_body);
+ if (http_msg) {
+ efree(http_msg);
+ }
add_soap_fault(this_ptr, "HTTP", "Unknown
Content-Encoding", NULL, NULL TSRMLS_CC);
return FALSE;
}
@@ -1057,6 +1072,9 @@
efree(http_headers);
efree(http_body);
add_soap_fault(this_ptr, "HTTP", "Can't uncompress
compressed response", NULL, NULL TSRMLS_CC);
+ if (http_msg) {
+ efree(http_msg);
+ }
return FALSE;
}
efree(content_encoding);
@@ -1087,27 +1105,16 @@
if (error) {
efree(*buffer);
- if (http_status == 400) {
- add_soap_fault(this_ptr, "HTTP", "Bad Request",
NULL, NULL TSRMLS_CC);
- } else if (http_status == 401) {
- add_soap_fault(this_ptr, "HTTP", "Unauthorized
Request", NULL, NULL TSRMLS_CC);
- } else if (http_status == 405) {
- add_soap_fault(this_ptr, "HTTP", "Method not
allowed", NULL, NULL TSRMLS_CC);
- } else if (http_status == 415) {
- add_soap_fault(this_ptr, "HTTP", "Unsupported
Media Type", NULL, NULL TSRMLS_CC);
- } else if (http_status >= 400 && http_status < 500) {
- add_soap_fault(this_ptr, "HTTP", "Client
Error", NULL, NULL TSRMLS_CC);
- } else if (http_status == 500) {
- add_soap_fault(this_ptr, "HTTP", "Internal
Server Error", NULL, NULL TSRMLS_CC);
- } else if (http_status >= 500 && http_status < 600) {
- add_soap_fault(this_ptr, "HTTP", "Server
Error", NULL, NULL TSRMLS_CC);
- } else {
- add_soap_fault(this_ptr, "HTTP", "Unsupported
HTTP status code", NULL, NULL TSRMLS_CC);
- }
+ add_soap_fault(this_ptr, "HTTP", http_msg, NULL, NULL
TSRMLS_CC);
+ efree(http_msg);
return FALSE;
}
}
+ if (http_msg) {
+ efree(http_msg);
+ }
+
return TRUE;
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php