static int core_input_filter(ap_filter_t *f, ap_bucket_brigade *b)
{
-/* XXX this needs to be moved to a common header file, but this is an ugly
- * hack just for today.
- */
-#define ASCII_LF '\012'
char *buff;
- apr_ssize_t length = HUGE_STRING_LEN, templen = 0;
+ apr_ssize_t length = HUGE_STRING_LEN;
apr_socket_t *csock = NULL;
apr_status_t rv;
ap_bucket *e;
rv = apr_recv(csock, buff, &length);
if (rv == APR_SUCCESS) {
if (length > 0) {
- templen = length - 1;
- while (buff[templen] != ASCII_LF) {
- rv = apr_recv(csock, buff + templen + 1, &length);
- templen += length;
- }
-
/* This should probably be a pool bucket, but using a transient is
* actually okay here too. We know the pool we are using will always
* be available as long as the connection is open.
*/
- e = ap_bucket_create_transient(buff, templen + 1);
+ e = ap_bucket_create_transient(buff, length);
AP_BRIGADE_INSERT_TAIL(b, e);
}
else {
}
}
else {
- /* XXX need to trigger error processing */
- /* leave the brigade empty for now; return error code
- * in the future */
+ return rv;
}
- return templen;
+ return APR_SUCCESS;
}
/* Default filter. This filter should almost always be used. Its only job
* is to send the headers if they haven't already been sent, and then send