httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Justin Erenkrantz <jerenkra...@ebuilt.com>
Subject Disconnect between bucket and filter enums?
Date Mon, 23 Jul 2001 08:19:56 GMT
One last warning concerning modules/http/http_protocol.c.  No patch 
as I'm not sure which enum is right.

"http_protocol.c", line 502: warning: enum type mismatch: arg #4
"http_protocol.c", line 593: warning: enum type mismatch: arg #4
"http_protocol.c", line 642: warning: enum type mismatch: arg #4

Those lines concern the mode variable into the bucket read functions.
apr_util has BLOCK_READ and NONBLOCK_READ.  The filters have similar 
(but not exactly the same) names and honor a third value PEEK.  IIRC, 
most compilers start enums at 0 - so I doubt the mismatch is hurting 
us as long as we don't pass PEEK to the buckets.  It does look like 
the filter code (ap_http_filter) is using the PEEK enum for 
keepalive/pipelining detection (not being passed to the buckets 
though).  Since we are using the PEEK value, I don't think we can 
just toss the ap_input_mode_t enum.

Here are the relevant enums:

typedef enum {
    APR_BLOCK_READ,
    APR_NONBLOCK_READ
} apr_read_type_e;

typedef enum {
    /** The filter shouldn't return until data is received or EOF is hit
     *  or an error occurs. */
    AP_MODE_BLOCKING,
    /** The filter should process any available data/status as normal,
     *  but will not wait for additional data. */
    AP_MODE_NONBLOCKING,
    /** The filter should return ::APR_SUCCESS if data is available or
     *  ::APR_EOF otherwise.  The filter must not return any buckets of
     *  data.  Data returned on a subsequent call, when mode is
     *  ::AP_MODE_BLOCKING or ::AP_MODE_NONBLOCKING. */
    AP_MODE_PEEK
} ap_input_mode_t;

I'll let someone who is more familiar with the bucket code and who has
httpd commit access figure this out if they want to.  =)  -- justin


Mime
View raw message