dmitry Wed Feb 2 05:34:39 2005 EDT
Modified files:
/php-src/ext/soap php_http.c php_soap.h soap.c
Log:
Fixed bug #31747 (SOAP Digest Authentication doesn't work with "HTTP/1.1 100
Continue" response)
http://cvs.php.net/diff.php/php-src/ext/soap/php_http.c?r1=1.65&r2=1.66&ty=u
Index: php-src/ext/soap/php_http.c
diff -u php-src/ext/soap/php_http.c:1.65 php-src/ext/soap/php_http.c:1.66
--- php-src/ext/soap/php_http.c:1.65 Wed Feb 2 04:11:45 2005
+++ php-src/ext/soap/php_http.c Wed Feb 2 05:34:39 2005
@@ -17,7 +17,7 @@
| Dmitry Stogov <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_http.c,v 1.65 2005/02/02 09:11:45 dmitry Exp $ */
+/* $Id: php_http.c,v 1.66 2005/02/02 10:34:39 dmitry Exp $ */
#include "php_soap.h"
#include "ext/standard/base64.h"
@@ -654,53 +654,46 @@
}
- if (!get_http_headers(stream, &http_headers, &http_header_size
TSRMLS_CC)) {
- efree(http_headers);
- if (request != buf) {efree(request);}
- php_stream_close(stream);
- 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 headers",
NULL, NULL TSRMLS_CC);
- return FALSE;
- }
+ do {
+ if (!get_http_headers(stream, &http_headers, &http_header_size
TSRMLS_CC)) {
+ efree(http_headers);
+ if (request != buf) {efree(request);}
+ php_stream_close(stream);
+ 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
headers", NULL, NULL TSRMLS_CC);
+ return FALSE;
+ }
- if (zend_hash_find(Z_OBJPROP_P(this_ptr), "trace", sizeof("trace"),
(void **) &trace) == SUCCESS &&
- Z_LVAL_PP(trace) > 0) {
- add_property_stringl(this_ptr, "__last_response_headers",
http_headers, http_header_size, 1);
- }
+ if (zend_hash_find(Z_OBJPROP_P(this_ptr), "trace",
sizeof("trace"), (void **) &trace) == SUCCESS &&
+ Z_LVAL_PP(trace) > 0) {
+ add_property_stringl(this_ptr,
"__last_response_headers", http_headers, http_header_size, 1);
+ }
- /* Check to see what HTTP status was sent */
- http_1_1 = 0;
- http_status = 0;
- http_version = get_http_header_value(http_headers,"HTTP/");
- if (http_version) {
- char *tmp;
+ /* Check to see what HTTP status was sent */
+ http_1_1 = 0;
+ http_status = 0;
+ http_version = get_http_header_value(http_headers,"HTTP/");
+ if (http_version) {
+ char *tmp;
- if (strncmp(http_version,"1.1", 3)) {
- http_1_1 = 1;
- }
+ if (strncmp(http_version,"1.1", 3)) {
+ http_1_1 = 1;
+ }
- tmp = strstr(http_version," ");
- if (tmp != NULL) {
- tmp++;
- http_status = atoi(tmp);
- }
- efree(http_version);
+ tmp = strstr(http_version," ");
+ if (tmp != NULL) {
+ tmp++;
+ http_status = atoi(tmp);
+ }
+ efree(http_version);
- /* Try and get headers again */
- if (http_status == 100) {
- efree(http_headers);
- if (!get_http_headers(stream, &http_headers,
&http_header_size TSRMLS_CC)) {
+ /* Try and get headers again */
+ if (http_status == 100) {
efree(http_headers);
- if (request != buf) {efree(request);}
- php_stream_close(stream);
- 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 headers", NULL, NULL TSRMLS_CC);
- return FALSE;
}
}
- }
+ } while (http_status == 100);
/* Grab and send back every cookie */
http://cvs.php.net/diff.php/php-src/ext/soap/php_soap.h?r1=1.35&r2=1.36&ty=u
Index: php-src/ext/soap/php_soap.h
diff -u php-src/ext/soap/php_soap.h:1.35 php-src/ext/soap/php_soap.h:1.36
--- php-src/ext/soap/php_soap.h:1.35 Tue Nov 16 07:07:29 2004
+++ php-src/ext/soap/php_soap.h Wed Feb 2 05:34:39 2005
@@ -17,7 +17,7 @@
| Dmitry Stogov <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_soap.h,v 1.35 2004/11/16 12:07:29 dmitry Exp $ */
+/* $Id: php_soap.h,v 1.36 2005/02/02 10:34:39 dmitry Exp $ */
#ifndef PHP_SOAP_H
#define PHP_SOAP_H
@@ -146,6 +146,9 @@
#define SOAP_COMPRESSION_GZIP 0x00
#define SOAP_COMPRESSION_DEFLATE 0x10
+#define SOAP_AUTHENTICATION_BASIC 0
+#define SOAP_AUTHENTICATION_DIGEST 1
+
ZEND_BEGIN_MODULE_GLOBALS(soap)
HashTable defEncNs; /* mapping of default namespaces to prefixes */
HashTable defEnc;
http://cvs.php.net/diff.php/php-src/ext/soap/soap.c?r1=1.135&r2=1.136&ty=u
Index: php-src/ext/soap/soap.c
diff -u php-src/ext/soap/soap.c:1.135 php-src/ext/soap/soap.c:1.136
--- php-src/ext/soap/soap.c:1.135 Wed Feb 2 04:11:45 2005
+++ php-src/ext/soap/soap.c Wed Feb 2 05:34:39 2005
@@ -17,7 +17,7 @@
| Dmitry Stogov <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: soap.c,v 1.135 2005/02/02 09:11:45 dmitry Exp $ */
+/* $Id: soap.c,v 1.136 2005/02/02 10:34:39 dmitry Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -537,6 +537,9 @@
REGISTER_LONG_CONSTANT("SOAP_COMPRESSION_GZIP", SOAP_COMPRESSION_GZIP,
CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SOAP_COMPRESSION_DEFLATE",
SOAP_COMPRESSION_DEFLATE, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("SOAP_AUTHENTICATION_BASIC",
SOAP_AUTHENTICATION_BASIC, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("SOAP_AUTHENTICATION_DIGEST",
SOAP_AUTHENTICATION_DIGEST, CONST_CS | CONST_PERSISTENT);
+
REGISTER_LONG_CONSTANT("UNKNOWN_TYPE", UNKNOWN_TYPE, CONST_CS |
CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("XSD_STRING", XSD_STRING, CONST_CS |
CONST_PERSISTENT);
@@ -2014,6 +2017,11 @@
Z_TYPE_PP(tmp) == IS_STRING) {
add_property_stringl(this_ptr, "_password",
Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1);
}
+ if (zend_hash_find(ht, "authentication",
sizeof("authentication"), (void**)&tmp) == SUCCESS &&
+ Z_TYPE_PP(tmp) == IS_LONG &&
+ Z_LVAL_PP(tmp) == SOAP_AUTHENTICATION_DIGEST) {
+ add_property_null(this_ptr, "_digest");
+ }
}
if (zend_hash_find(ht, "proxy_host", sizeof("proxy_host"),
(void**)&tmp) == SUCCESS &&
Z_TYPE_PP(tmp) == IS_STRING) {
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php