Re: ext/soap and http header

From: Date: Mon, 29 Sep 2008 16:15:04 +0000
Subject: Re: ext/soap and http header
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-40782@lists.php.net to get a copy of this message
just curious, why is ext/soap internally duplicating this http stuff instead of using the http stream stuff directly? or did I misunderstand something? Am 29.09.2008 um 10:11 schrieb Dmitry Stogov:
Hi Brian, I think you patch does the things you like properly, but why do we need such ability? I don't see a use-case. In case of accepting this patch, we also need to care about duplicate headers. Thanks. Dmitry. Brian J. France wrote:
After some more testing I needed to tweak the patch and the example, here is version 2. $opts = array('http' => array('header' => 'X-foo: bar')); $ctx = stream_context_create($opts); Brian
--- ext/soap/php_http.c.orig    2008-09-26 05:39:50.000000000 -0700
+++ ext/soap/php_http.c    2008-09-26 06:42:34.000000000 -0700
-391,7 +391,8 @@
    PG(allow_url_fopen) = old_allow_url_fopen;
    if (stream) {
-        zval **cookies, **login, **password;
+        php_stream_context *context = NULL;
+        zval **cookies, **login, **password, **tmpzval = NULL;
      int ret = zend_list_insert(phpurl, le_url);
        add_property_resource(this_ptr, "httpurl", ret);
-638,6 +639,19 @@
            proxy_authentication(this_ptr, &soap_headers TSRMLS_CC);
        }
+        /* get context to check for http headers */
+        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);
+        }
+
+        /* Send http headers from context */
+        if (context &&
+            php_stream_context_get_option(context, "http", "header",
&tmpzval) == SUCCESS &&
+            Z_TYPE_PP(tmpzval) == IS_STRING && Z_STRLEN_PP(tmpzval)) {
+            smart_str_appendl(&soap_headers, Z_STRVAL_PP(tmpzval),
Z_STRLEN_PP(tmpzval));
+        }
+
        /* Send cookies along with request */
        if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_cookies",
sizeof("_cookies"), (void **)&cookies) == SUCCESS) {
            zval **data;
--PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php


Attachment: [application/pkcs7-signature] smime.p7s
« previous php.internals (#40782) next »