/** * Gets the session index from the request * * Cookies have priority over the query * * @return -1 if no session */ static int get_session_index(config_t *config, request_rec *r, int *backup) { array_header *hdrs_arr = ap_table_elts(r->headers_in); table_entry *hdrs = (table_entry *) hdrs_arr->elts; int i; int session; char *uri; for (i = 0; i < hdrs_arr->nelts; ++i) { if (! hdrs[i].key || ! hdrs[i].val) continue; if (strcasecmp(hdrs[i].key, "Cookie")) continue; session = cse_session_from_string(hdrs[i].val, config->session_cookie, backup); if (session >= 0) return session; } if (r->request_config) uri = ap_get_module_config(r->request_config, &caucho_module); if (uri) { if (*config->alt_session_url_prefix) return cse_session_from_string(uri, config->alt_session_url_prefix, backup); else return cse_session_from_string(uri + strlen(config->session_url_prefix), "", backup); } if (*config->alt_session_url_prefix) { return cse_session_from_string(r->uri, config->alt_session_url_prefix, backup); } else return cse_session_from_string(r->uri, config->session_url_prefix, backup); }
/** * Gets the session index from the request * * Cookies have priority over the query * * @return -1 if no session */ static int get_session_index(config_t *config, request_rec *r, int *backup) { const apr_array_header_t *header = apr_table_elts(r->headers_in); const apr_table_entry_t *headers = (const apr_table_entry_t *) header->elts; int i; int session; for (i = 0; i < header->nelts; ++i) { if (! headers[i].key || ! headers[i].val) continue; if (strcasecmp(headers[i].key, "Cookie")) continue; session = cse_session_from_string(headers[i].val, config->session_cookie, backup); if (session >= 0) return session; } return cse_session_from_string(r->uri, config->session_url_prefix, backup); }