Changes with Apache 2.3.0
[Remove entries to the current 2.0 and 2.2 section below, when backported]
+ *) mod_isapi: Return 0 (failure) for more of the various ap_pass_brigade
+ attempts to stream the response at the client. PR 30022 [William Rowe]
+
*) mod_isapi: Ensure we walk through all the methods the developer may have
employed to report their HTTP status result code.
PR 16637, 30033. [Matt Lewandowsky <matt iamcode.net>, William Rowe]
*size_arg, ERROR_WRITE_FAULT);
}
}
- return (rv == OK);
+ return (rv == APR_SUCCESS);
}
int APR_THREAD_FUNC ServerSupportFunction(isapi_cid *cid,
conn_rec *c = r->connection;
char *buf_data = (char*)buf_ptr;
request_rec *subreq;
+ apr_status_t rv;
switch (HSE_code) {
case HSE_REQ_SEND_URL_REDIRECT_RESP:
APR_BRIGADE_INSERT_TAIL(bb, b);
b = apr_bucket_flush_create(c->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(bb, b);
- ap_pass_brigade(cid->r->output_filters, bb);
+ rv = ap_pass_brigade(cid->r->output_filters, bb);
cid->response_sent = 1;
+ return (rv == APR_SUCCESS);
}
- return 1;
}
case HSE_REQ_DONE_WITH_SESSION:
HSE_TF_INFO *tf = (HSE_TF_INFO*)buf_data;
apr_uint32_t sent = 0;
apr_ssize_t ate = 0;
- apr_status_t rv;
apr_bucket_brigade *bb;
apr_bucket *b;
apr_file_t *fd;
b = apr_bucket_flush_create(c->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(bb, b);
- ap_pass_brigade(r->output_filters, bb);
+ rv = ap_pass_brigade(r->output_filters, bb);
cid->response_sent = 1;
/* Use tf->pfnHseIO + tf->pContext, or if NULL, then use cid->fnIOComplete
}
}
}
- return (rv == OK);
+ return (rv == APR_SUCCESS);
}
case HSE_REQ_REFRESH_ISAPI_ACL:
APR_BRIGADE_INSERT_TAIL(bb, b);
b = apr_bucket_flush_create(c->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(bb, b);
- ap_pass_brigade(cid->r->output_filters, bb);
+ rv = ap_pass_brigade(cid->r->output_filters, bb);
cid->response_sent = 1;
}
- return 1;
+ return (rv == APR_SUCCESS);
}
case HSE_REQ_CLOSE_CONNECTION: /* Added after ISAPI 4.0 */
rv = ap_pass_brigade(r->output_filters, bb);
cid->response_sent = 1;
- return OK; /* NOT r->status or cid->r->status, even if it has changed. */
+ return (rv == APR_SUCCESS);
+ /* NOT r->status or cid->r->status, even if it has changed. */
}
/* As the client returned no error, and if we did not error out