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
>>
>>
> 

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to