int network_timeout;
int rfc1918_filter;
int tcp_keepalive;
- int max_requests;
+ int max_script_requests;
+ int max_connections;
int http_keepalive;
int script_timeout;
};
UH_HTTP_VER_1_1,
};
+enum http_user_agent {
+ UH_UA_UNKNOWN,
+ UH_UA_GECKO,
+ UH_UA_CHROME,
+ UH_UA_SAFARI,
+ UH_UA_MSIE,
+ UH_UA_KONQUEROR,
+ UH_UA_OPERA,
+ UH_UA_MSIE_OLD,
+ UH_UA_MSIE_NEW,
+};
+
struct http_request {
enum http_method method;
enum http_version version;
+ enum http_user_agent ua;
int redirect_status;
int content_length;
bool expect_cont;
+ bool connection_close;
uint8_t transfer_chunked;
const struct auth_realm *realm;
};
struct dispatch_handler {
struct list_head list;
+ bool script;
bool (*check_url)(const char *url);
bool (*check_path)(struct path_info *pi, const char *url);
void (*write_cb)(struct client *cl);
void (*close_fds)(struct client *cl);
void (*free)(struct client *cl);
+
+ void *req_data;
+ void (*req_free)(struct client *cl);
+
bool data_blocked;
union {
struct ustream_ssl ssl;
#endif
struct uloop_timeout timeout;
+ int requests;
enum client_state state;
bool tls;