On Tue, Nov 3, 2015 at 5:40 PM, Gregg Smith <g...@gknw.net> wrote:

> On 11/3/2015 6:33 AM, ic...@apache.org wrote:
>
>> Author: icing
>> Date: Tue Nov  3 14:33:11 2015
>> New Revision: 1712300
>>
>> URL: http://svn.apache.org/viewvc?rev=1712300&view=rev
>> Log:
>> rework of output handling on stream/session close, rework of cleartext
>> (http:) output to pass buckets to core filters, splitting of stream/io
>> memory pools for stability and less sync
>>
>> Added:
>>      httpd/httpd/trunk/modules/http2/h2_bucket_eoc.c
>>      httpd/httpd/trunk/modules/http2/h2_bucket_eoc.h
>>      httpd/httpd/trunk/modules/http2/h2_bucket_eos.c
>>      httpd/httpd/trunk/modules/http2/h2_bucket_eos.h
>> Modified:
>>
> ...
>
>>      httpd/httpd/trunk/modules/http2/h2_util.c
>>
>> Added: httpd/httpd/trunk/modules/http2/h2_bucket_eoc.c
>> URL:
>> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_bucket_eoc.c?rev=1712300&view=auto
>>
>> ==============================================================================
>>
> ...
>
>> +
>> +AP_DECLARE(apr_bucket *) h2_bucket_eoc_make(apr_bucket *b,
>> +                                            h2_session *session)
>>
>
> No :) we cannot export with AP_DELARE in modules on Windows because we
> need to keep them separate from the AP_DECLARE functions we are going to be
> importing from core.
>
> .\h2_util.c(727) : error C2491: 'h2_transfer_brigade' : definition of
> dllimport function not allowed
> .\h2_bucket_eos.c(60) : error C2491: 'h2_bucket_eos_make' : definition of
> dllimport function not allowed
> .\h2_bucket_eos.c(74) : error C2491: 'h2_bucket_eos_create' : definition
> of dllimport function not allowed
> .\h2_bucket_eos.c(101) : error C2491: 'ap_bucket_type_h2_eos' : definition
> of dllimport data not allowed
> .\h2_bucket_eoc.c(60) : error C2491: 'h2_bucket_eoc_make' : definition of
> dllimport function not allowed
> .\h2_bucket_eoc.c(74) : error C2491: 'h2_bucket_eoc_create' : definition
> of dllimport function not allowed
> .\h2_bucket_eoc.c(101) : error C2491: 'ap_bucket_type_h2_eoc' : definition
> of dllimport data not allowed
>
> If we take a page from other modules (mod_dav/proxy/ssl) we can see the
> need to come up with an private set of declares.
> I have the attached patch ready to commit.
>
>>
Precisely, but understand that anytime you introduce a module export (al la
mod_dav.so) you create a hard load-order dependency on httpd, something we
attempted to eliminate in httpd 2.0 and forwards.  This is why the use of
optional functions, hook registration and so forth is preferred.


> +AP_DECLARE_DATA const apr_bucket_type_t ap_bucket_type_h2_eoc = {
>> +    "H2EOC", 5, APR_BUCKET_METADATA,
>> +    bucket_destroy,
>> +    bucket_read,
>> +    apr_bucket_setaside_noop,
>> +    apr_bucket_split_notimpl,
>> +    apr_bucket_shared_copy
>> +};
>> +
>>
>
> >>> Nit <<<
> Should we really be declaring anything for export with an ap_* in a
> loadable module? I thought the ap_* name was reserved for core only, I may
> be wrong.
>

No issue, the httpd project defines the ap_* namespace.

Bill

Reply via email to