Garrett Rooney wrote:
On 9/23/06, Henry Jen <[EMAIL PROTECTED]> wrote:
Hi,

apr_brigade_length with readall set to 1 will try to read from a bucket
with length -1 to determine the value.

Currently, if apr_bucket_read with the bucket of length -1 returns other
than APR_SUCCESS, the length returned is undefined.

In case of a socket bucket with a nonblocking socket, the return status
could be EAGAIN and the length is still useful to determine value
available at the moment. A use case, for example, is waiting for a
certain amount of data to be available.

I would propose to return the value up-to-date is better than undefined.
The application can decide whether the value is meaningful with the
returned status. Does this make sense?

Attached is a simple path specifying the length.

Is total going to be the correct value in that case?  I know in
apr_file_read you can get stuff in *len even if an error has occurred,
can that occur with apr_bucket_read?  If so, it seems like you'd want
*length = total + *len, or something like that.


It may not be accurate, but it is what you can get from the brigade for sure.

In the socket example, you are not likely to get an length back when there is an error. Even you do have a length, the data read was discarded so that it won't be in the brigade.

Given that, I think not adding the *len value might be a better solution.

Cheers,
Henry



Reply via email to