2005-05-26 05:06:32 +04:00
/*
Unix SMB / CIFS implementation .
Copyright ( C ) Andrew Tridgell 2005
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*/
# include "request.h"
# include "smbd/process_model.h"
/*
context of one open web connection
*/
struct websrv_context {
2005-05-27 04:29:58 +04:00
struct task_server * task ;
2005-05-26 05:06:32 +04:00
struct stream_connection * conn ;
struct {
2005-05-27 15:57:14 +04:00
BOOL tls_detect ;
BOOL tls_first_char ;
uint8_t first_byte ;
2005-05-26 05:06:32 +04:00
DATA_BLOB partial ;
BOOL end_of_headers ;
char * url ;
unsigned content_length ;
BOOL post_request ;
const char * content_type ;
const char * query_string ;
const char * user_agent ;
const char * referer ;
const char * host ;
const char * accept_encoding ;
2005-05-27 04:29:58 +04:00
const char * accept_language ;
const char * accept_charset ;
const char * cookie ;
const char * session_key ;
2005-05-26 05:06:32 +04:00
} input ;
struct {
2005-05-27 15:57:14 +04:00
BOOL output_pending ;
2005-05-26 05:06:32 +04:00
DATA_BLOB content ;
int fd ;
unsigned nsent ;
int response_code ;
const char * * headers ;
} output ;
2005-05-27 15:57:14 +04:00
void * tls_session ;
2005-05-27 04:29:58 +04:00
struct session_data * session ;
2005-05-26 05:06:32 +04:00
} ;
2005-05-27 04:29:58 +04:00
2005-05-27 15:57:14 +04:00
/*
context for long term storage in the web server , to support session [ ]
and application [ ] data . Stored in task - > private .
*/
struct esp_data {
struct session_data {
struct session_data * next , * prev ;
struct esp_data * edata ;
const char * id ;
struct MprVar * data ;
struct timed_event * te ;
int lifetime ;
} * sessions ;
struct MprVar * application_data ;
void * tls_data ;
} ;