dmitry                                   Wed, 01 Feb 2012 11:26:57 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=322992

Log:
Fixed basic HTTP authentication for WSDL sub requests

Changed paths:
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/soap/php_sdl.c
    U   php/php-src/branches/PHP_5_4/NEWS
    U   php/php-src/branches/PHP_5_4/ext/soap/php_sdl.c
    U   php/php-src/trunk/ext/soap/php_sdl.c

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2012-02-01 11:07:56 UTC (rev 322991)
+++ php/php-src/branches/PHP_5_3/NEWS   2012-02-01 11:26:57 UTC (rev 322992)
@@ -33,6 +33,9 @@
 - PDO_Sqlite extension:
   . Add createCollation support. (Damien)

+- SOAP:
+  . Fixed basic HTTP authentication for WSDL sub requests. (Dmitry)
+
 10 Jan 2012, PHP 5.3.9

 - Core:

Modified: php/php-src/branches/PHP_5_3/ext/soap/php_sdl.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/soap/php_sdl.c     2012-02-01 11:07:56 UTC 
(rev 322991)
+++ php/php-src/branches/PHP_5_3/ext/soap/php_sdl.c     2012-02-01 11:26:57 UTC 
(rev 322992)
@@ -242,6 +242,40 @@
        if (!s) return;
        s = strchr(s+3, '/');
        l2 = s - (char*)uri;
+       if (l1 != l2) {
+               /* check for http://...:80/ */
+               if (l1 > 11 &&
+                   ctx->sdl->source[4] == ':' &&
+                   ctx->sdl->source[l1-3] == ':' &&
+                   ctx->sdl->source[l1-2] == '8' &&
+                   ctx->sdl->source[l1-1] == '0') {
+                       l1 -= 3;
+               }
+               if (l2 > 11 &&
+                   uri[4] == ':' &&
+                   uri[l2-3] == ':' &&
+                   uri[l2-2] == '8' &&
+                   uri[l2-1] == '0') {
+                       l2 -= 3;
+               }
+               /* check for https://...:443/ */
+               if (l1 > 13 &&
+                   ctx->sdl->source[4] == 's' &&
+                   ctx->sdl->source[l1-4] == ':' &&
+                   ctx->sdl->source[l1-3] == '4' &&
+                   ctx->sdl->source[l1-2] == '4' &&
+                   ctx->sdl->source[l1-1] == '3') {
+                       l1 -= 4;
+               }
+               if (l2 > 13 &&
+                   uri[4] == 's' &&
+                   uri[l2-4] == ':' &&
+                   uri[l2-3] == '4' &&
+                   uri[l2-2] == '4' &&
+                   uri[l2-1] == '3') {
+                       l2 -= 4;
+               }
+       }
        if (l1 != l2 || memcmp(ctx->sdl->source, uri, l1) != 0) {
                /* another server. clear authentication credentals */
                context = php_libxml_switch_context(NULL TSRMLS_CC);

Modified: php/php-src/branches/PHP_5_4/NEWS
===================================================================
--- php/php-src/branches/PHP_5_4/NEWS   2012-02-01 11:07:56 UTC (rev 322991)
+++ php/php-src/branches/PHP_5_4/NEWS   2012-02-01 11:26:57 UTC (rev 322992)
@@ -16,6 +16,9 @@
   . Fixed bug #60860 (session.save_handler=user without defined function core
     dumps). (Felipe)

+- SOAP:
+  . Fixed basic HTTP authentication for WSDL sub requests. (Dmitry)
+
 19 Jan 2012, PHP 5.4.0 RC6

 - Core:

Modified: php/php-src/branches/PHP_5_4/ext/soap/php_sdl.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/soap/php_sdl.c     2012-02-01 11:07:56 UTC 
(rev 322991)
+++ php/php-src/branches/PHP_5_4/ext/soap/php_sdl.c     2012-02-01 11:26:57 UTC 
(rev 322992)
@@ -242,6 +242,40 @@
        if (!s) return;
        s = strchr(s+3, '/');
        l2 = s - (char*)uri;
+       if (l1 != l2) {
+               /* check for http://...:80/ */
+               if (l1 > 11 &&
+                   ctx->sdl->source[4] == ':' &&
+                   ctx->sdl->source[l1-3] == ':' &&
+                   ctx->sdl->source[l1-2] == '8' &&
+                   ctx->sdl->source[l1-1] == '0') {
+                       l1 -= 3;
+               }
+               if (l2 > 11 &&
+                   uri[4] == ':' &&
+                   uri[l2-3] == ':' &&
+                   uri[l2-2] == '8' &&
+                   uri[l2-1] == '0') {
+                       l2 -= 3;
+               }
+               /* check for https://...:443/ */
+               if (l1 > 13 &&
+                   ctx->sdl->source[4] == 's' &&
+                   ctx->sdl->source[l1-4] == ':' &&
+                   ctx->sdl->source[l1-3] == '4' &&
+                   ctx->sdl->source[l1-2] == '4' &&
+                   ctx->sdl->source[l1-1] == '3') {
+                       l1 -= 4;
+               }
+               if (l2 > 13 &&
+                   uri[4] == 's' &&
+                   uri[l2-4] == ':' &&
+                   uri[l2-3] == '4' &&
+                   uri[l2-2] == '4' &&
+                   uri[l2-1] == '3') {
+                       l2 -= 4;
+               }
+       }
        if (l1 != l2 || memcmp(ctx->sdl->source, uri, l1) != 0) {
                /* another server. clear authentication credentals */
                context = php_libxml_switch_context(NULL TSRMLS_CC);

Modified: php/php-src/trunk/ext/soap/php_sdl.c
===================================================================
--- php/php-src/trunk/ext/soap/php_sdl.c        2012-02-01 11:07:56 UTC (rev 
322991)
+++ php/php-src/trunk/ext/soap/php_sdl.c        2012-02-01 11:26:57 UTC (rev 
322992)
@@ -242,6 +242,40 @@
        if (!s) return;
        s = strchr(s+3, '/');
        l2 = s - (char*)uri;
+       if (l1 != l2) {
+               /* check for http://...:80/ */
+               if (l1 > 11 &&
+                   ctx->sdl->source[4] == ':' &&
+                   ctx->sdl->source[l1-3] == ':' &&
+                   ctx->sdl->source[l1-2] == '8' &&
+                   ctx->sdl->source[l1-1] == '0') {
+                       l1 -= 3;
+               }
+               if (l2 > 11 &&
+                   uri[4] == ':' &&
+                   uri[l2-3] == ':' &&
+                   uri[l2-2] == '8' &&
+                   uri[l2-1] == '0') {
+                       l2 -= 3;
+               }
+               /* check for https://...:443/ */
+               if (l1 > 13 &&
+                   ctx->sdl->source[4] == 's' &&
+                   ctx->sdl->source[l1-4] == ':' &&
+                   ctx->sdl->source[l1-3] == '4' &&
+                   ctx->sdl->source[l1-2] == '4' &&
+                   ctx->sdl->source[l1-1] == '3') {
+                       l1 -= 4;
+               }
+               if (l2 > 13 &&
+                   uri[4] == 's' &&
+                   uri[l2-4] == ':' &&
+                   uri[l2-3] == '4' &&
+                   uri[l2-2] == '4' &&
+                   uri[l2-1] == '3') {
+                       l2 -= 4;
+               }
+       }
        if (l1 != l2 || memcmp(ctx->sdl->source, uri, l1) != 0) {
                /* another server. clear authentication credentals */
                context = php_libxml_switch_context(NULL TSRMLS_CC);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to