wez             Tue Jul 19 15:48:04 2005 EDT

  Modified files:              
    /php-src/ext/soap   php_http.c soap.c 
  Log:
  Remove stale #ifdefs (this is PHP 5 only code).
  Add a stream_context option to the SoapClient constructor; this allows
  generic stream context options to be set without having to add code to the
  SoapClient every time a context option is added.
  
  
http://cvs.php.net/diff.php/php-src/ext/soap/php_http.c?r1=1.73&r2=1.74&ty=u
Index: php-src/ext/soap/php_http.c
diff -u php-src/ext/soap/php_http.c:1.73 php-src/ext/soap/php_http.c:1.74
--- php-src/ext/soap/php_http.c:1.73    Fri Jul  8 05:36:28 2005
+++ php-src/ext/soap/php_http.c Tue Jul 19 15:48:02 2005
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: php_http.c,v 1.73 2005/07/08 09:36:28 dmitry Exp $ */
+/* $Id: php_http.c,v 1.74 2005/07/19 19:48:02 wez Exp $ */
 
 #include "php_soap.h"
 #include "ext/standard/base64.h"
@@ -110,11 +110,9 @@
        php_stream *stream;
        zval **proxy_host, **proxy_port, **tmp;
        char *host;
-#ifdef ZEND_ENGINE_2
        php_stream_context *context = NULL;
        char *name;
        long namelen;
-#endif
        int port;
        int old_error_reporting;
        struct timeval tv;
@@ -141,14 +139,19 @@
        old_error_reporting = EG(error_reporting);
        EG(error_reporting) &= 
~(E_WARNING|E_NOTICE|E_USER_WARNING|E_USER_NOTICE);
 
-#ifdef ZEND_ENGINE_2
+       if (SUCCESS == zend_hash_find(Z_OBJPROP_P(this_ptr),
+                       "_stream_context", sizeof("_stream_context"), 
(void**)&tmp)) {
+               context = php_stream_context_from_zval(*tmp, 0);
+       } else {
+               context = php_stream_context_alloc();
+       }
+
        namelen = spprintf(&name, 0, "%s://%s:%d", (use_ssl && !*use_proxy)? 
"ssl" : "tcp", host, port);
        if (use_ssl) {
                zval **tmp;
 
                if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_local_cert", 
sizeof("_local_cert"), (void **) &tmp) == SUCCESS &&
                    Z_TYPE_PP(tmp) == IS_STRING) {
-                       context = php_stream_context_alloc();
                        php_stream_context_set_option(context, "ssl", 
"local_cert", *tmp);
                        if (zend_hash_find(Z_OBJPROP_P(this_ptr), 
"_passphrase", sizeof("_passphrase"), (void **) &tmp) == SUCCESS &&
                            Z_TYPE_PP(tmp) == IS_STRING) {
@@ -164,9 +167,6 @@
                context,
                NULL, NULL);
        efree(name);
-#else
-       stream = php_stream_sock_open_host(host, port, SOCK_STREAM, timeout, 
NULL);
-#endif
 
        /* SSL & proxy */
        if (stream && *use_proxy && use_ssl) {
@@ -194,7 +194,6 @@
                        }
                        efree(http_headers);
                }
-#ifdef ZEND_ENGINE_2
                /* enable SSL transport layer */
                if (stream) {
                        if (php_stream_xport_crypto_setup(stream, 
STREAM_CRYPTO_METHOD_SSLv23_CLIENT, NULL TSRMLS_CC) < 0 ||
@@ -203,18 +202,8 @@
                                stream = NULL;
                        }
                }
-#endif
        }
 
-#if !defined(ZEND_ENGINE_2) && defined(HAVE_OPENSSL_EXT)
-       if (stream && use_ssl) {
-               /* enable SSL transport layer */
-               if (FAILURE == php_stream_sock_ssl_activate(stream, 1)) {
-                       php_stream_close(stream);
-                       stream = NULL;
-               }
-       }
-#endif
        EG(error_reporting) = old_error_reporting;
        return stream;
 }
@@ -339,23 +328,12 @@
                add_soap_fault(this_ptr, "HTTP", "Unknown protocol. Only http 
and https are allowed.", NULL, NULL TSRMLS_CC);
                return FALSE;
        }
-#ifdef ZEND_ENGINE_2
        if (use_ssl && php_stream_locate_url_wrapper("https://";, NULL, 
STREAM_LOCATE_WRAPPERS_ONLY TSRMLS_CC) == NULL) {
                php_url_free(phpurl);
                if (request != buf) {efree(request);}
                add_soap_fault(this_ptr, "HTTP", "SSL support not available in 
this build", NULL, NULL TSRMLS_CC);
                return FALSE;
        }
-#else
-#ifndef HAVE_OPENSSL_EXT
-       if (use_ssl) {
-               php_url_free(phpurl);
-               if (request != buf) {efree(request);}
-               add_soap_fault(this_ptr, "HTTP", "SSL support not available in 
this build", NULL, NULL TSRMLS_CC);
-               return FALSE;
-       }
-#endif
-#endif
 
        if (phpurl->port == 0) {
                phpurl->port = use_ssl ? 443 : 80;
@@ -687,6 +665,9 @@
                }
                smart_str_free(&soap_headers);
 
+       } else {
+               add_soap_fault(this_ptr, "HTTP", "Failed to create stream??", 
NULL, NULL TSRMLS_CC);
+               return FALSE;
        }
 
        do {
@@ -951,9 +932,7 @@
                        if (digest != NULL) {
                                php_url *new_url  = emalloc(sizeof(php_url));
 
-#ifdef ZEND_ENGINE_2
                                digest->refcount--;
-#endif
                                add_property_zval_ex(this_ptr, "_digest", 
sizeof("_digest"), digest TSRMLS_CC);
 
                                *new_url = *phpurl;
http://cvs.php.net/diff.php/php-src/ext/soap/soap.c?r1=1.153&r2=1.154&ty=u
Index: php-src/ext/soap/soap.c
diff -u php-src/ext/soap/soap.c:1.153 php-src/ext/soap/soap.c:1.154
--- php-src/ext/soap/soap.c:1.153       Wed Jul  6 02:58:44 2005
+++ php-src/ext/soap/soap.c     Tue Jul 19 15:48:02 2005
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: soap.c,v 1.153 2005/07/06 06:58:44 dmitry Exp $ */
+/* $Id: soap.c,v 1.154 2005/07/19 19:48:02 wez Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -2072,6 +2072,14 @@
                        }
                }
 
+               if (zend_hash_find(ht, "stream_context", 
sizeof("stream_context"), (void**)&tmp) == SUCCESS &&
+                               Z_TYPE_PP(tmp) == IS_RESOURCE) {
+                       php_stream_context *context = 
php_stream_context_from_zval(*tmp, 1);
+                       if (context) {
+                               add_property_resource(this_ptr, 
"_stream_context", context->rsrc_id);
+                       }
+               }
+
                if (zend_hash_find(ht, "location", sizeof("location"), 
(void**)&tmp) == SUCCESS &&
                    Z_TYPE_PP(tmp) == IS_STRING) {
                        add_property_stringl(this_ptr, "location", 
Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1);

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

Reply via email to