cvs: php-src(PHP_5_0) /ext/soap php_http.c soap.c
| From: | Dmitry Stogov | Date: | Thu, 20 Jan 2005 17:28:52 +0000 |
| Subject: | cvs: php-src(PHP_5_0) /ext/soap php_http.c soap.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-30035@lists.php.net to get a copy of this message | ||
dmitry Thu Jan 20 12:28:52 2005 EDT
Modified files: (Branch: PHP_5_0)
/php-src/ext/soap php_http.c soap.c
Log:
Support for HTTP error codes
http://cvs.php.net/diff.php/php-src/ext/soap/php_http.c?r1=1.55.2.7&r2=1.55.2.8&ty=u
Index: php-src/ext/soap/php_http.c
diff -u php-src/ext/soap/php_http.c:1.55.2.7 php-src/ext/soap/php_http.c:1.55.2.8
--- php-src/ext/soap/php_http.c:1.55.2.7 Thu Jan 20 09:28:57 2005
+++ php-src/ext/soap/php_http.c Thu Jan 20 12:28:51 2005
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_http.c,v 1.55.2.7 2005/01/20 14:28:57 dmitry Exp $ */
+/* $Id: php_http.c,v 1.55.2.8 2005/01/20 17:28:51 dmitry Exp $ */
#include "php_soap.h"
#include "ext/standard/base64.h"
@@ -584,24 +584,6 @@
goto try_again;
}
}
-/*
- } else 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);
-*/
}
/* Try and get headers again */
@@ -819,6 +801,46 @@
}
efree(http_headers);
+
+ if (http_status >= 400) {
+ int error = 0;
+
+ if (*buffer_len == 0) {
+ error = 1;
+ } else if (*buffer_len > 0) {
+ char *s = *buffer;
+
+ while (*s != '\0' && *s < ' ') {
+ s++;
+ }
+ if (strncmp(s, "<?xml", 5)) {
+ error = 1;
+ }
+ }
+
+ 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);
+ }
+ return FALSE;
+ }
+ }
+
return TRUE;
}
http://cvs.php.net/diff.php/php-src/ext/soap/soap.c?r1=1.110.2.18&r2=1.110.2.19&ty=u
Index: php-src/ext/soap/soap.c
diff -u php-src/ext/soap/soap.c:1.110.2.18 php-src/ext/soap/soap.c:1.110.2.19
--- php-src/ext/soap/soap.c:1.110.2.18 Thu Jan 20 09:28:57 2005
+++ php-src/ext/soap/soap.c Thu Jan 20 12:28:51 2005
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: soap.c,v 1.110.2.18 2005/01/20 14:28:57 dmitry Exp $ */
+/* $Id: soap.c,v 1.110.2.19 2005/01/20 17:28:51 dmitry Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -2142,7 +2142,9 @@
add_soap_fault(this_ptr, "Client", "SoapSlient::__doRequest() failed", NULL,
NULL TSRMLS_CC);
ret = FALSE;
} else if (Z_TYPE_P(response) != IS_STRING) {
- add_soap_fault(this_ptr, "Client", "SoapSlient::__doRequest() returned non string
value", NULL, NULL TSRMLS_CC);
+ if (zend_hash_find(Z_OBJPROP_P(this_ptr), "__soap_fault",
sizeof("__soap_fault"), (void **) &fault) == FAILURE) {
+ add_soap_fault(this_ptr, "Client", "SoapSlient::__doRequest() returned non string
value", NULL, NULL TSRMLS_CC);
+ }
ret = FALSE;
} else if (zend_hash_find(Z_OBJPROP_P(this_ptr), "trace", sizeof("trace"),
(void **) &trace) == SUCCESS &&
Z_LVAL_PP(trace) > 0) {