Re: ext/soap and http header

From: Date: Mon, 29 Sep 2008 16:32:43 +0000
Subject: Re: ext/soap and http header
References: 1 2 3 4  Groups: php.internals 
Request: Send a blank email to internals+get-40785@lists.php.net to get a copy of this message
David Zülke wrote: > just curious, why is ext/soap internally duplicating this http stuff > instead of using the http stream stuff directly? or did I misunderstand > something? good question. :) As I remember php streams weren't able to do all necessary things which were necessary for ext/soap, but probably they can be reused now. Thanks. Dmitry. > > > 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 >> >> >

« previous php.internals (#40785) next »