In my module I do not modify any data sended from server to client.
Unfortunatelly when I am using ap_r* then firstly are sended data and then
HTTP relevant code.
Sample code is:
/*
* Procedure for sending data from server to client side
* Instead of ap_rvputs like functions should be used following procedure
* especially for SecMCJ issue
*/
apr_status_t send_data_to_client(request_rec *r, char * data_to_send, int
length_data)
{
//apr_status_t rv;
apr_bucket_brigade * bb =
apr_brigade_create(r->pool,r->connection->bucket_alloc);
apr_bucket * b =
apr_bucket_immortal_create(data_to_send,length_data,r->connection->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(bb,b);
ap_pass_brigade(r->connection->output_filters,bb);
//apr_bucket_destroy(b);
//apr_brigade_destroy(bb);
return OK;
}
/*
* <Location /USSW/secmcj>
* SetHandler ussw-secmcj
* allow from all
* Satisfy any
* </Location>
*/
int udsc_secmcj_handler(request_rec *r)
{
secmcj_body = apr_pstrcat(r->pool,
"sessionID=",
apr_psprintf(r->pool, "%lu", pSession->us.udsc_sessionid),
"&requestNr=", pSession->session_id,
*request_body == '&' ? "" : "&",
request_body,
NULL);
/* now post the data to usmw /secmcj */
ap_log_error(APLOG_MARK, APLOG_NOERRNO | APLOG_DEBUG, 0, r->server,
"secmcj body: %s",secmcj_body);
/* now return the response to the client (secmcj class) */
ap_log_error(APLOG_MARK, APLOG_NOERRNO | APLOG_DEBUG, 0, r->server,
"secmcj body receive: %s",response_body);
r->content_type = "text/plain";
/* added because of JRE 1.4 SE SSL problem */
bodylen = strlen(response_body);
ap_set_content_length(r, bodylen);
ap_send_http_header(r);
if (r->header_only)
{
ap_log_error(APLOG_MARK,APLOG_NOERRNO | APLOG_DEBUG, 0, r->server,
"HEADER ONLY");
return OK;
}
ap_log_error(APLOG_MARK, APLOG_NOERRNO | APLOG_DEBUG, 0, r->server,
"before any sending. Length is:%d",bodylen);
send_data_to_client(r,response_body, bodylen);
return OK;
}
best regards
Petr
Nick Kew napsal(a):
> Petr Hracek wrote:
>
>> I have found mod_nntp_like where is mention in
>> ap_pass_brigade(c->output_filters,bb);
>> and in smtp_core is usage the same.
>>
>
> Those are protocol modules. So anything-HTTP is not relevant to them.
>
> Unfortunatelly when I am using ap_pass_brigade(r->output_filter,bb);
>> then it is not working. Web page is not show.
>>
>
> Do you need to use anything more complex than the ap_r* family
> (ap_rputs, etc)? If so (and if what Graham already told you isn't
> enough) you might want my book - details at http://www.apachetutor.org/
>
>