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