comparison src/http/ngx_http_core_module.c @ 164:84036764e215

nginx-0.0.1-2003-10-29-11:30:44 import
author Igor Sysoev <igor@sysoev.ru>
date Wed, 29 Oct 2003 08:30:44 +0000
parents fb61ba77beba
children 894a01c6aea3
comparison
equal deleted inserted replaced
163:fb61ba77beba 164:84036764e215
2 #include <ngx_config.h> 2 #include <ngx_config.h>
3 #include <ngx_core.h> 3 #include <ngx_core.h>
4 #include <ngx_event.h> 4 #include <ngx_event.h>
5 #include <ngx_http.h> 5 #include <ngx_http.h>
6 #include <nginx.h> 6 #include <nginx.h>
7 7 #if __FreeBSD__
8 #include <ngx_freebsd_init.h>
9 #endif
8 10
9 11
10 static void ngx_http_phase_event_handler(ngx_event_t *rev); 12 static void ngx_http_phase_event_handler(ngx_event_t *rev);
11 static void ngx_http_run_phases(ngx_http_request_t *r); 13 static void ngx_http_run_phases(ngx_http_request_t *r);
12 14
29 static char *ngx_set_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); 31 static char *ngx_set_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
30 static char *ngx_set_server_name(ngx_conf_t *cf, ngx_command_t *cmd, 32 static char *ngx_set_server_name(ngx_conf_t *cf, ngx_command_t *cmd,
31 void *conf); 33 void *conf);
32 static char *ngx_set_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); 34 static char *ngx_set_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
33 35
36 static char *ngx_http_lowat_check(ngx_conf_t *cf, void *post, void *data);
37
38 static ngx_conf_post_t ngx_http_lowat_post = { ngx_http_lowat_check } ;
39
34 40
35 static ngx_command_t ngx_http_core_commands[] = { 41 static ngx_command_t ngx_http_core_commands[] = {
36 42
37 {ngx_string("server"), 43 {ngx_string("server"),
38 NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS, 44 NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
149 ngx_conf_set_msec_slot, 155 ngx_conf_set_msec_slot,
150 NGX_HTTP_LOC_CONF_OFFSET, 156 NGX_HTTP_LOC_CONF_OFFSET,
151 offsetof(ngx_http_core_loc_conf_t, send_timeout), 157 offsetof(ngx_http_core_loc_conf_t, send_timeout),
152 NULL}, 158 NULL},
153 159
160 {ngx_string("send_lowat"),
161 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
162 ngx_conf_set_size_slot,
163 NGX_HTTP_LOC_CONF_OFFSET,
164 offsetof(ngx_http_core_loc_conf_t, send_lowat),
165 &ngx_http_lowat_post},
166
154 {ngx_string("keepalive_timeout"), 167 {ngx_string("keepalive_timeout"),
155 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 168 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
156 ngx_conf_set_msec_slot, 169 ngx_conf_set_msec_slot,
157 NGX_HTTP_LOC_CONF_OFFSET, 170 NGX_HTTP_LOC_CONF_OFFSET,
158 offsetof(ngx_http_core_loc_conf_t, keepalive_timeout), 171 offsetof(ngx_http_core_loc_conf_t, keepalive_timeout),
502 ngx_log_debug(r->connection->log, "RESET http delay"); 515 ngx_log_debug(r->connection->log, "RESET http delay");
503 return NGX_DECLINED; 516 return NGX_DECLINED;
504 } 517 }
505 518
506 #endif 519 #endif
520
521
522 ngx_table_elt_t *ngx_http_add_header(void *header,
523 ngx_http_header_t *http_headers)
524 {
525 int i, j;
526 char *prev;
527 ngx_table_t *headers;
528 ngx_table_elt_t *h, *new;
529
530 headers = *(ngx_table_t **) header;
531
532 prev = headers->elts;
533
534 if (!(new = ngx_push_table(headers))) {
535 return NULL;
536 }
537
538 if (prev == headers->elts) {
539 return new;
540 }
541
542 h = headers->elts;
543 for (i = 0; i < headers->nelts; i++) {
544 if (h[i].key.len == 0) {
545 continue;
546 }
547
548 for (j = 0; http_headers[j].name.len != 0; j++) {
549 if (http_headers[j].name.len != h[i].key.len) {
550 continue;
551 }
552
553 if (ngx_strcasecmp(http_headers[j].name.data, h[i].key.data) == 0) {
554 *((ngx_table_elt_t **)
555 ((char *) &header + http_headers[j].offset)) = &h[i];
556 break;
557 }
558 }
559 }
560
561 return new;
562 }
507 563
508 564
509 static int ngx_http_core_init(ngx_cycle_t *cycle) 565 static int ngx_http_core_init(ngx_cycle_t *cycle)
510 { 566 {
511 #if 0 567 #if 0
850 */ 906 */
851 907
852 lcf->client_body_timeout = NGX_CONF_UNSET; 908 lcf->client_body_timeout = NGX_CONF_UNSET;
853 lcf->sendfile = NGX_CONF_UNSET; 909 lcf->sendfile = NGX_CONF_UNSET;
854 lcf->send_timeout = NGX_CONF_UNSET; 910 lcf->send_timeout = NGX_CONF_UNSET;
911 lcf->send_lowat = NGX_CONF_UNSET;
855 lcf->discarded_buffer_size = NGX_CONF_UNSET; 912 lcf->discarded_buffer_size = NGX_CONF_UNSET;
856 lcf->keepalive_timeout = NGX_CONF_UNSET; 913 lcf->keepalive_timeout = NGX_CONF_UNSET;
857 lcf->lingering_time = NGX_CONF_UNSET; 914 lcf->lingering_time = NGX_CONF_UNSET;
858 lcf->lingering_timeout = NGX_CONF_UNSET; 915 lcf->lingering_timeout = NGX_CONF_UNSET;
859 916
923 980
924 ngx_conf_merge_msec_value(conf->client_body_timeout, 981 ngx_conf_merge_msec_value(conf->client_body_timeout,
925 prev->client_body_timeout, 10000); 982 prev->client_body_timeout, 10000);
926 ngx_conf_merge_value(conf->sendfile, prev->sendfile, 0); 983 ngx_conf_merge_value(conf->sendfile, prev->sendfile, 0);
927 ngx_conf_merge_msec_value(conf->send_timeout, prev->send_timeout, 10000); 984 ngx_conf_merge_msec_value(conf->send_timeout, prev->send_timeout, 10000);
985 ngx_conf_merge_size_value(conf->send_lowat, prev->send_lowat, 0);
928 ngx_conf_merge_size_value(conf->discarded_buffer_size, 986 ngx_conf_merge_size_value(conf->discarded_buffer_size,
929 prev->discarded_buffer_size, 1500); 987 prev->discarded_buffer_size, 1500);
930 ngx_conf_merge_msec_value(conf->keepalive_timeout, 988 ngx_conf_merge_msec_value(conf->keepalive_timeout,
931 prev->keepalive_timeout, 70000); 989 prev->keepalive_timeout, 70000);
932 ngx_conf_merge_msec_value(conf->lingering_time, 990 ngx_conf_merge_msec_value(conf->lingering_time,
1061 ngx_log_create_errlog(cf->cycle, &value[1]), 1119 ngx_log_create_errlog(cf->cycle, &value[1]),
1062 NGX_CONF_ERROR); 1120 NGX_CONF_ERROR);
1063 1121
1064 return NGX_CONF_OK; 1122 return NGX_CONF_OK;
1065 } 1123 }
1124
1125
1126 static char *ngx_http_lowat_check(ngx_conf_t *cf, void *post, void *data)
1127 {
1128 int *np = data;
1129
1130 #if (HAVE_LOWAT_EVENT)
1131
1132 if (*np >= ngx_freebsd_net_inet_tcp_sendspace) {
1133 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
1134 "\"send_lowat\" must be less than %d "
1135 "(sysctl net.inet.tcp.sendspace)",
1136 ngx_freebsd_net_inet_tcp_sendspace);
1137
1138 return NGX_CONF_ERROR;
1139 }
1140
1141 #else
1142
1143 ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
1144 "\"send_lowat\" is not supported, ignored");
1145
1146 #endif
1147
1148 return NGX_CONF_OK;
1149 }