DBG(r, "REQ[%X] start %s()", TO_ADDR(r),__func__);
request_conf = (mod_chxj_req_config *)chxj_get_module_config(r->request_config, &chxj_module);
- if (request_conf && request_conf->spec && request_conf->user_agent && strcmp(request_conf->user_agent, user_agent) == 0) {
- DBG(r, "REQ[%x] Use spec cache.", TO_ADDR(r));
- DBG(r, "REQ[%x] end %s() (Exist spec cache)", TO_ADDR(r), __func__);
- return request_conf->spec;
+ if (user_agent) {
+ request_conf->user_agent = apr_pstrdup(r->pool, user_agent);
+ }
+ else {
+ request_conf->user_agent = "";
}
- request_conf->user_agent = user_agent;
conf = chxj_get_module_config(r->per_dir_config, &chxj_module);
if(! user_agent){
char *tmp;
cookie_t *cookie;
mod_chxj_config *dconf;
+ mod_chxj_req_config *request_conf;
chxjconvrule_entry *entryp;
DBG(r,"REQ[%X] start %s()", TO_ADDR(r),__func__);
dst = apr_pstrcat(r->pool, (char *)*src, NULL);
dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+ request_conf = chxj_get_module_config(r->request_config, &chxj_module);
entryp = chxj_apply_convrule(r, dconf->convrules);
/* again */
spec = chxj_specified_device(r, user_agent);
}
+ else {
+ spec = request_conf->spec;
+ }
/*
* save cookie.
chxj_input_handler(request_rec *r)
{
mod_chxj_config *dconf;
+ mod_chxj_req_config *request_conf;
chxjconvrule_entry *entryp = NULL;
device_table *spec = NULL;
char *post_data = NULL;
apr_pool_create(&pool, r->pool);
dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+ request_conf = chxj_get_module_config(r->request_config, &chxj_module);
user_agent = (char*)apr_table_get(r->headers_in, CHXJ_HTTP_USER_AGENT);
if (!user_agent) {
user_agent = (char*)apr_table_get(r->headers_in, HTTP_USER_AGENT);
}
- spec = chxj_specified_device(r, user_agent);
- entryp = chxj_apply_convrule(r, dconf->convrules);
+ if (user_agent && request_conf->user_agent && strcmp(user_agent, request_conf->user_agent)) {
+ spec = chxj_specified_device(r, user_agent);
+ }
+ else {
+ spec = request_conf->spec;
+ }
+ entryp = chxj_apply_convrule(r, dconf->convrules);
post_data = apr_pstrdup(pool, "");
if (ap_setup_client_block(r, REQUEST_CHUNKED_DECHUNK) == OK) {
return;
}
- spec = chxj_specified_device(r, user_agent);
+ if (user_agent && req_conf->user_agent && strcmp(user_agent, req_conf->user_agent)) {
+ spec = chxj_specified_device(r, user_agent);
+ }
+ else {
+ spec = req_conf->spec;
+ }
entryp = chxj_apply_convrule(r, dconf->convrules);
if (!entryp) {
DBG(r, "REQ[%X] end %s()", TO_ADDR(r),__func__);