webroar 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +48 -1
- data/README +11 -14
- data/Rakefile +1 -1
- data/conf/mime_type.yml +172 -166
- data/conf/server_internal_config.yml +30 -8
- data/doc/user-guide.html +294 -153
- data/doc/user-guide.txt +9 -13
- data/lib/command_runner.rb +1 -0
- data/lib/dependencies.rb +18 -15
- data/lib/installer.rb +115 -50
- data/src/admin_panel/app/controllers/admin_controller.rb +1 -15
- data/src/admin_panel/app/controllers/application_controller.rb +2 -2
- data/src/admin_panel/app/controllers/application_specification_controller.rb +2 -1
- data/src/admin_panel/app/controllers/headers_controller.rb +73 -0
- data/src/admin_panel/app/controllers/mail_specification_controller.rb +10 -0
- data/src/admin_panel/app/controllers/server_specification_controller.rb +14 -0
- data/src/admin_panel/app/helpers/admin_helper.rb +0 -85
- data/src/admin_panel/app/models/app.rb +1 -1
- data/src/admin_panel/app/models/application_specification.rb +33 -25
- data/src/admin_panel/app/models/headers.rb +116 -0
- data/src/admin_panel/app/models/mail_specification.rb +20 -5
- data/src/admin_panel/app/models/server_specification.rb +2 -7
- data/src/admin_panel/app/views/admin/configuration.html.erb +10 -5
- data/src/admin_panel/app/views/exceptions/_exception_list_partial.html.erb +4 -4
- data/src/admin_panel/app/views/graph/_graph_page.html.erb +3 -0
- data/src/admin_panel/app/views/headers/_add_expires_text_box.html.erb +35 -0
- data/src/admin_panel/app/views/headers/_expires_by_type_form.html.erb +65 -0
- data/src/admin_panel/app/views/headers/_headers_table.html.erb +113 -0
- data/src/admin_panel/app/views/mail_specification/_current_spec.html.erb +168 -0
- data/src/admin_panel/app/views/{admin → server_specification}/_add_div.html.erb +1 -1
- data/src/admin_panel/config/initializers/application_constants.rb +6 -0
- data/src/admin_panel/lib/control.rb +6 -3
- data/src/admin_panel/lib/scgi.rb +74 -21
- data/src/admin_panel/lib/yaml_writer.rb +51 -17
- data/src/admin_panel/public/javascripts/application.js +20 -1
- data/src/head/wr_access_log.c +2 -2
- data/src/head/wr_application.c +294 -236
- data/src/head/wr_application.h +8 -8
- data/src/head/wr_configurator.c +451 -517
- data/src/head/wr_configurator.h +10 -115
- data/src/head/wr_connection.c +26 -25
- data/src/head/wr_connection.h +2 -3
- data/src/head/wr_controller.c +110 -93
- data/src/head/wr_controller.h +6 -6
- data/src/head/wr_main.c +31 -24
- data/src/head/wr_request.c +70 -93
- data/src/head/wr_request.h +0 -4
- data/src/head/wr_resolver.c +21 -15
- data/src/head/wr_resolver.h +2 -2
- data/src/head/wr_server.c +36 -26
- data/src/head/wr_server.h +5 -5
- data/src/head/wr_worker.c +551 -512
- data/src/head/wr_worker.h +33 -20
- data/src/helper/wr_config.c +316 -0
- data/src/helper/wr_config.h +235 -0
- data/src/helper/wr_helper.h +1 -5
- data/src/helper/wr_logger.c +4 -4
- data/src/helper/wr_scgi.c +3 -4
- data/src/helper/wr_scgi.h +2 -0
- data/src/helper/wr_string.h +2 -2
- data/src/helper/wr_util.c +3 -1
- data/src/helper/wr_util.h +0 -0
- data/src/helper/wr_yaml_parser.c +30 -0
- data/src/helper/wr_yaml_parser.h +1 -0
- data/src/ruby_lib/exception_tracker/instrumentation/action_controller.rb +2 -1
- data/src/ruby_lib/mailer/smtpmail.rb +7 -4
- data/src/ruby_lib/profiler/instrumentation/action_controller.rb +2 -1
- data/src/ruby_lib/profiler/instrumentation/active_record.rb +3 -0
- data/src/ruby_lib/rack/adapter/rails.rb +14 -7
- data/src/ruby_lib/ruby_interface/client.rb +1 -1
- data/src/ruby_lib/ruby_interface/version.rb +2 -2
- data/src/ruby_lib/webroar_app_loader.rb +4 -2
- data/src/worker/wkr_controller.c +200 -140
- data/src/worker/wkr_http.c +14 -28
- data/src/worker/wkr_http.h +4 -4
- data/src/worker/wkr_http_request.c +12 -11
- data/src/worker/wkr_http_request.h +7 -8
- data/src/worker/wkr_http_response.c +10 -14
- data/src/worker/wkr_http_response.h +0 -1
- data/src/worker/wkr_main.c +74 -140
- data/src/worker/wkr_static.c +295 -108
- data/src/worker/wkr_static.h +20 -7
- data/src/worker/worker.c +245 -70
- data/src/worker/worker.h +46 -34
- data/tasks/compile.rake +128 -175
- data/tasks/test.rake +345 -469
- data/test/spec/webroar_command_spec.rb +23 -0
- metadata +173 -43
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/README +0 -34
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/Rakefile +0 -13
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/init.rb +0 -5
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/lib/action_mailer_tls.rb +0 -16
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/lib/smtp_tls.rb +0 -123
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/test/tls_test.rb +0 -42
- data/src/head/wr_config.h +0 -165
- data/src/ruby_lib/mailer/action_mailer_tls.rb +0 -16
- data/src/ruby_lib/mailer/smtp_tls.rb +0 -123
data/src/head/wr_configurator.h
CHANGED
|
@@ -21,129 +21,24 @@
|
|
|
21
21
|
|
|
22
22
|
#include<wr_helper.h>
|
|
23
23
|
|
|
24
|
-
/** Configuration parameter macros */
|
|
25
|
-
#define WR_CONF_SVR_PORT "Server Specification/port"
|
|
26
|
-
#define WR_CONF_SVR_MAX_WKR "Server Specification/max_worker"
|
|
27
|
-
#define WR_CONF_SVR_MIN_WKR "Server Specification/min_worker"
|
|
28
|
-
#define WR_CONF_SVR_LOG_LEVEL "Server Specification/log_level"
|
|
29
|
-
#define WR_CONF_SVR_ACCESS_LOG "Server Specification/access_log"
|
|
30
|
-
|
|
31
|
-
#define WR_CONF_SVR_SSL_SUPPORT "Server Specification/SSL Specification/ssl_support"
|
|
32
|
-
|
|
33
|
-
#ifdef HAVE_GNUTLS
|
|
34
|
-
#define WR_CONF_SVR_SSL_CERTIFICATE "Server Specification/SSL Specification/certificate_file"
|
|
35
|
-
#define WR_CONF_SVR_SSL_KEY "Server Specification/SSL Specification/key_file"
|
|
36
|
-
#define WR_CONF_SVR_SSL_PORT "Server Specification/SSL Specification/ssl_port"
|
|
37
|
-
#endif
|
|
38
|
-
|
|
39
|
-
#define WR_CONF_APP_SPEC "Application Specification"
|
|
40
|
-
#define WR_CONF_APP_NAME "name"
|
|
41
|
-
#define WR_CONF_APP_BASE_URI "baseuri"
|
|
42
|
-
#define WR_CONF_APP_PATH "path"
|
|
43
|
-
#define WR_CONF_APP_TYPE "type"
|
|
44
|
-
#define WR_CONF_APP_ANALYTICS "analytics"
|
|
45
|
-
#define WR_CONF_APP_USER "run_as_user"
|
|
46
|
-
#define WR_CONF_APP_ENV "environment"
|
|
47
|
-
#define WR_CONF_APP_LOG_LEVEL "log_level"
|
|
48
|
-
#define WR_CONF_APP_MAX_WKR "max_worker"
|
|
49
|
-
#define WR_CONF_APP_MIN_WKR "min_worker"
|
|
50
|
-
#define WR_CONF_APP_HOST_NAMES "host_names"
|
|
51
|
-
|
|
52
|
-
#define WR_CONF_MAX_LEN_APP_NAME 30
|
|
53
|
-
#define WR_CONF_MAX_LEN_USR_NAME 30
|
|
54
|
-
|
|
55
|
-
// using 'AF_UNIX' macro to identify UDS support.
|
|
56
|
-
//#define WR_CONF_UDS 1
|
|
57
|
-
|
|
58
|
-
typedef enum wr_host_type_e{
|
|
59
|
-
WR_HOST_TPE_INVALID = 0,
|
|
60
|
-
WR_HOST_TYPE_STATIC = 1,
|
|
61
|
-
WR_HOST_TYPE_WILDCARD_IN_START = 2,
|
|
62
|
-
WR_HOST_TYPE_WILDCARD_IN_END = 4,
|
|
63
|
-
WR_HOST_TYPE_WILDCARD_IN_START_END = 8,
|
|
64
|
-
}wr_host_type_t;
|
|
65
|
-
|
|
66
|
-
typedef struct wr_host_name_s wr_host_name_t;
|
|
67
|
-
struct wr_host_name_s {
|
|
68
|
-
wr_str_t name;
|
|
69
|
-
wr_host_type_t type;
|
|
70
|
-
wr_host_name_t *next;
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
#define WR_SVR_ACCESS_LOG 1
|
|
74
|
-
#define WR_SVR_SSL_SUPPORT 2
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
/** server_configuration structure */
|
|
78
|
-
typedef struct {
|
|
79
|
-
wr_u_int port; /**< Server port*/
|
|
80
|
-
wr_u_short min_worker; /**< Default number of minimum workers */
|
|
81
|
-
wr_u_short max_worker; /**< Default number of maximum workers */
|
|
82
|
-
LOG_SEVERITY log_level; /**< Logging level */
|
|
83
|
-
//If WR_CONF_UDS is 1 'contol_sock_path' has UDS sock path
|
|
84
|
-
//If WR_CONF_UDS is 0 'port' has Internet socket port
|
|
85
|
-
wr_u_short ctl_port; /**< Server control port*/
|
|
86
|
-
wr_str_t sock_path; /**< Server control socket path in case of UNIX domain socket*/
|
|
87
|
-
#ifdef HAVE_GNUTLS
|
|
88
|
-
|
|
89
|
-
wr_str_t certificate; /**< Certificate path */
|
|
90
|
-
wr_str_t key; /**< Key path */
|
|
91
|
-
wr_u_short ssl_port; /**< SSL listening port */
|
|
92
|
-
#endif
|
|
93
|
-
|
|
94
|
-
short flag;
|
|
95
|
-
}wr_svr_conf_t;
|
|
96
|
-
|
|
97
|
-
/** application_configuration structure */
|
|
98
|
-
typedef struct wr_app_conf_s wr_app_conf_t;
|
|
99
|
-
struct wr_app_conf_s {
|
|
100
|
-
wr_str_t name; /**< Application name */
|
|
101
|
-
wr_str_t path; /**< Application path */
|
|
102
|
-
wr_str_t env; /**< Application environment */
|
|
103
|
-
wr_str_t type; /**< Application type {rails, merb etc.}*/
|
|
104
|
-
short analytics; /**< analytics flag {enabled/disabled} */
|
|
105
|
-
wr_str_t baseuri; /**< Application baseuri */
|
|
106
|
-
wr_u_short min_worker; /**< Minimum number of workers required */
|
|
107
|
-
wr_u_short max_worker; /**< Maximum number of workers */
|
|
108
|
-
LOG_SEVERITY log_level; /**< Logging level */
|
|
109
|
-
short cuid; /**< User id */
|
|
110
|
-
short cgid; /**< Group id */
|
|
111
|
-
wr_host_name_t *host_name_list;
|
|
112
|
-
wr_app_conf_t *next;
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
typedef struct wr_conf_s wr_conf_t;
|
|
116
24
|
/** Remove application_configuration from configuration */
|
|
117
|
-
int wr_app_conf_remove(
|
|
25
|
+
int wr_app_conf_remove(const char *app_name);
|
|
118
26
|
/** Read application configuration of specified application name */
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
|
|
122
|
-
/** Replace the application configuration */
|
|
123
|
-
int wr_conf_app_replace(wr_conf_t *conf, wr_app_conf_t *app_conf);
|
|
27
|
+
config_application_list_t* wr_conf_app_read(const char *app_name, char* err_msg, int flag);
|
|
28
|
+
/** Update application configuration with new parameters */
|
|
29
|
+
int wr_conf_app_update(config_application_list_t *app);
|
|
124
30
|
/** Destroy application configuration */
|
|
125
|
-
void wr_conf_app_free(
|
|
31
|
+
void wr_conf_app_free(config_application_list_t* app);
|
|
126
32
|
|
|
127
|
-
/** configuration structure */
|
|
128
|
-
struct wr_conf_s {
|
|
129
|
-
wr_svr_conf_t *server; /**< Server configuration */
|
|
130
|
-
wr_app_conf_t *apps; /**< Application configuration */
|
|
131
|
-
wr_str_t wr_root_path; /**< WebROaR root path */
|
|
132
|
-
wr_str_t wkr_exe_path; /**< worker's executable path*/
|
|
133
|
-
wr_str_t ruby_lib_path; /**< Ruby library path */
|
|
134
|
-
wr_str_t config_file_path; /**< Configuration file path */
|
|
135
|
-
wr_str_t admin_panel_path; /**< Admin Panel path */
|
|
136
|
-
short uds; /**< UNIX domain socket flag(controlling flag) */
|
|
137
|
-
};
|
|
138
33
|
|
|
139
34
|
/** Read 'config.yml' file and fill configuration data structure */
|
|
140
|
-
|
|
35
|
+
int wr_conf_read();
|
|
141
36
|
/** Destroy configuration data structure */
|
|
142
|
-
void wr_conf_free(
|
|
37
|
+
void wr_conf_free();
|
|
143
38
|
/** Display configuration data structure */
|
|
144
|
-
void wr_conf_display(
|
|
39
|
+
void wr_conf_display();
|
|
145
40
|
/** Add Admin Panel to configuration data structure */
|
|
146
|
-
int wr_conf_admin_panel_add(
|
|
41
|
+
int wr_conf_admin_panel_add();
|
|
147
42
|
/** Add the configuration for static content server */
|
|
148
|
-
int wr_conf_static_server_add(
|
|
43
|
+
int wr_conf_static_server_add();
|
|
149
44
|
#endif /*WR_CONFIGURATOR_H_*/
|
data/src/head/wr_connection.c
CHANGED
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
* along with WebROaR. If not, see <http://www.gnu.org/licenses/>.
|
|
18
18
|
*/
|
|
19
19
|
#include <wr_request.h>
|
|
20
|
-
|
|
20
|
+
|
|
21
|
+
extern config_t *Config;
|
|
21
22
|
|
|
22
23
|
// Connection count
|
|
23
24
|
static unsigned int wr_conn_count = 0;
|
|
@@ -39,7 +40,8 @@ static wr_http_status_t http_status [] ={
|
|
|
39
40
|
{413, "413 Request Entity Too Large", "The request entity is too large"},
|
|
40
41
|
{414, "414 Request-URI Too Large", "The request URI is too large"},
|
|
41
42
|
{500, "500 Internal Server Error", "The server encountered an unexpected condition which prevented it from fulfilling the request."},
|
|
42
|
-
{501, "501 Not Implemented", "The server does not support the functionality required to fulfill the request."}
|
|
43
|
+
{501, "501 Not Implemented", "The server does not support the functionality required to fulfill the request."},
|
|
44
|
+
{503, "503 Service Unavailable", "The server is currently unable to handle the request due to a temporary overloading or maintenance of the server."}
|
|
43
45
|
};
|
|
44
46
|
|
|
45
47
|
#define WR_RESP_BODY "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\r\n\
|
|
@@ -92,7 +94,7 @@ void wr_conn_after_write_cb(ebb_connection *connection) {
|
|
|
92
94
|
wr_conn_after_write_cb);
|
|
93
95
|
} else if(conn->resp_to_write <= 0) {
|
|
94
96
|
LOG_DEBUG(DEBUG,"response to write is less than 1 keep alive =%d", conn->keep_alive);
|
|
95
|
-
if(!
|
|
97
|
+
if(!(SERVER_KEEP_ALIVE & Config->Server.flag) || !conn->keep_alive) {
|
|
96
98
|
// Close ebb_connection if there is no any pending request
|
|
97
99
|
LOG_DEBUG(DEBUG,"Closing Connection %d ...", conn->id);
|
|
98
100
|
ebb_connection_schedule_close(connection);
|
|
@@ -108,9 +110,6 @@ void wr_req_parse_err_cb(ebb_connection* connection) {
|
|
|
108
110
|
LOG_DEBUG(DEBUG,"Connection id = %d",conn->id);
|
|
109
111
|
conn->keep_alive = 0;
|
|
110
112
|
wr_req_invalid(conn, WR_HTTP_STATUS_400);
|
|
111
|
-
// if(conn->resp_to_write == 0)
|
|
112
|
-
// conn->resp_to_write = 1;
|
|
113
|
-
// wr_server_err_response(conn, WR_HTTP_STATUS_400);
|
|
114
113
|
}
|
|
115
114
|
|
|
116
115
|
/** The ebb connection goes timeout */
|
|
@@ -147,29 +146,25 @@ void wr_conn_close_cb(ebb_connection* connection) {
|
|
|
147
146
|
}
|
|
148
147
|
}
|
|
149
148
|
|
|
150
|
-
/********************************************************
|
|
151
|
-
* Connection Function Definition *
|
|
152
|
-
********************************************************/
|
|
153
|
-
|
|
154
149
|
/** Create new Connection */
|
|
155
150
|
wr_conn_t* wr_conn_new(wr_svr_t *server) {
|
|
156
151
|
LOG_FUNCTION
|
|
157
152
|
wr_conn_t* a_connection = wr_malloc(wr_conn_t);
|
|
158
|
-
|
|
153
|
+
|
|
159
154
|
if(a_connection == NULL) {
|
|
160
155
|
LOG_DEBUG(SEVERE, "Error a_connection is null. Returning ...");
|
|
161
156
|
return NULL;
|
|
162
157
|
}
|
|
163
158
|
ebb_connection *connection = wr_malloc(ebb_connection);
|
|
164
|
-
|
|
159
|
+
|
|
165
160
|
if(connection == NULL) {
|
|
166
161
|
free(a_connection);
|
|
167
162
|
LOG_DEBUG(SEVERE, "Error connection is null. Returning ...");
|
|
168
163
|
return NULL;
|
|
169
164
|
}
|
|
170
|
-
|
|
165
|
+
|
|
171
166
|
ebb_connection_init(connection);
|
|
172
|
-
|
|
167
|
+
|
|
173
168
|
a_connection->id = ++wr_conn_count;
|
|
174
169
|
a_connection->resp_to_write = 0;
|
|
175
170
|
a_connection->ebb_conn = connection;
|
|
@@ -184,10 +179,15 @@ wr_conn_t* wr_conn_new(wr_svr_t *server) {
|
|
|
184
179
|
connection->on_close = wr_conn_close_cb;
|
|
185
180
|
connection->on_timeout = wr_conn_timeout_cb;
|
|
186
181
|
connection->on_request_parse_error = wr_req_parse_err_cb;
|
|
187
|
-
|
|
182
|
+
|
|
188
183
|
return a_connection;
|
|
189
184
|
}
|
|
190
185
|
|
|
186
|
+
|
|
187
|
+
/********************************************************
|
|
188
|
+
* Connection Function Definition *
|
|
189
|
+
********************************************************/
|
|
190
|
+
|
|
191
191
|
/** Destroy Connection */
|
|
192
192
|
void wr_conn_free(wr_conn_t *conn) {
|
|
193
193
|
LOG_FUNCTION
|
|
@@ -251,22 +251,22 @@ ebb_connection* wr_new_conn_cb(ebb_server* server, struct sockaddr_in* addr) {
|
|
|
251
251
|
/** Response generated by Server */
|
|
252
252
|
void wr_conn_err_resp(wr_conn_t *conn, wr_resp_status_t resp_code) {
|
|
253
253
|
LOG_FUNCTION
|
|
254
|
-
char response_body[
|
|
255
|
-
char response_buff[
|
|
254
|
+
char response_body[STR_SIZE512];
|
|
255
|
+
char response_buff[STR_SIZE512*2];
|
|
256
256
|
size_t body_len, buff_len;
|
|
257
257
|
|
|
258
258
|
LOG_DEBUG(DEBUG, "response code = %s",http_status[resp_code].phrase);
|
|
259
259
|
conn->keep_alive = 0;
|
|
260
260
|
|
|
261
|
-
char current_date[
|
|
262
|
-
get_time(current_date,
|
|
261
|
+
char current_date[STR_SIZE64];
|
|
262
|
+
get_time(current_date, STR_SIZE64);
|
|
263
263
|
|
|
264
264
|
switch(resp_code) {
|
|
265
265
|
case WR_HTTP_STATUS_100:
|
|
266
266
|
body_len = 0;
|
|
267
267
|
buff_len = sprintf(response_buff, WR_RESP_HEADERS,
|
|
268
|
-
http_status[resp_code].phrase, current_date,
|
|
269
|
-
|
|
268
|
+
http_status[resp_code].phrase, current_date, Config->Server.name.str,
|
|
269
|
+
Config->Server.version.str, body_len, http_status[resp_code].message);
|
|
270
270
|
break;
|
|
271
271
|
case WR_HTTP_STATUS_400:
|
|
272
272
|
case WR_HTTP_STATUS_403:
|
|
@@ -277,21 +277,22 @@ void wr_conn_err_resp(wr_conn_t *conn, wr_resp_status_t resp_code) {
|
|
|
277
277
|
case WR_HTTP_STATUS_414:
|
|
278
278
|
case WR_HTTP_STATUS_500:
|
|
279
279
|
case WR_HTTP_STATUS_501:
|
|
280
|
+
case WR_HTTP_STATUS_503:
|
|
280
281
|
if(conn->req && conn->req->resp_buf_len > 0) {
|
|
281
282
|
body_len = sprintf(response_body, WR_RESPONSE_ERR_BODY,
|
|
282
283
|
http_status[resp_code].phrase,http_status[resp_code].phrase+4,
|
|
283
284
|
http_status[resp_code].message,
|
|
284
285
|
conn->req->resp_buf,
|
|
285
|
-
|
|
286
|
+
Config->Server.name.str, Config->Server.version.str);
|
|
286
287
|
} else {
|
|
287
288
|
body_len = sprintf(response_body, WR_RESP_BODY,
|
|
288
289
|
http_status[resp_code].phrase,http_status[resp_code].phrase+4,
|
|
289
|
-
http_status[resp_code].message,
|
|
290
|
+
http_status[resp_code].message,Config->Server.name.str, Config->Server.version.str);
|
|
290
291
|
}
|
|
291
292
|
|
|
292
293
|
buff_len = sprintf(response_buff, WR_RESP_HEADERS,
|
|
293
294
|
http_status[resp_code].phrase, current_date,
|
|
294
|
-
|
|
295
|
+
Config->Server.name.str, Config->Server.version.str, body_len, response_body);
|
|
295
296
|
break;
|
|
296
297
|
}
|
|
297
298
|
|
|
@@ -299,7 +300,7 @@ void wr_conn_err_resp(wr_conn_t *conn, wr_resp_status_t resp_code) {
|
|
|
299
300
|
|
|
300
301
|
if(conn->req) {
|
|
301
302
|
wr_req_t* req = conn->req;
|
|
302
|
-
if(
|
|
303
|
+
if(Config->Server.flag & SERVER_ACCESS_LOG) {
|
|
303
304
|
req->resp_body_len = body_len;
|
|
304
305
|
req->resp_code = http_status[resp_code].code;
|
|
305
306
|
wr_access_log(req);
|
data/src/head/wr_connection.h
CHANGED
|
@@ -35,8 +35,6 @@ typedef struct {
|
|
|
35
35
|
wr_str_list_t *resp;
|
|
36
36
|
}wr_conn_t;
|
|
37
37
|
|
|
38
|
-
/** Create new Connection */
|
|
39
|
-
wr_conn_t* wr_conn_new(wr_svr_t*);
|
|
40
38
|
/** Destroy Connection */
|
|
41
39
|
void wr_conn_free(wr_conn_t*);
|
|
42
40
|
/** Add response to Connection */
|
|
@@ -59,7 +57,8 @@ typedef enum {
|
|
|
59
57
|
WR_HTTP_STATUS_413 ,
|
|
60
58
|
WR_HTTP_STATUS_414 ,
|
|
61
59
|
WR_HTTP_STATUS_500 ,
|
|
62
|
-
WR_HTTP_STATUS_501
|
|
60
|
+
WR_HTTP_STATUS_501 ,
|
|
61
|
+
WR_HTTP_STATUS_503
|
|
63
62
|
}wr_resp_status_t;
|
|
64
63
|
|
|
65
64
|
/** Response generated by Server */
|