238 |
#endif |
#endif |
239 |
|
|
240 |
my_add_cgi_env(req, "SERVER_ADDR", req->local_ip_addr); |
my_add_cgi_env(req, "SERVER_ADDR", req->local_ip_addr); |
241 |
my_add_cgi_env(req, "SERVER_PROTOCOL", req->http_version); |
my_add_cgi_env(req, "SERVER_PROTOCOL", req->http_version_str); |
242 |
my_add_cgi_env(req, "REQUEST_URI", req->request_uri); |
my_add_cgi_env(req, "REQUEST_URI", req->request_uri); |
243 |
|
|
244 |
if (req->path_info) |
if (req->path_info) |
371 |
} |
} |
372 |
} |
} |
373 |
|
|
374 |
|
|
375 |
/* |
/* |
376 |
* Name: init_cgi |
* Name: init_cgi |
377 |
* |
* |
392 |
|
|
393 |
SQUASH_KA(req); |
SQUASH_KA(req); |
394 |
|
|
395 |
if (req->is_cgi == NPH || req->is_cgi == CGI || req->is_cgi == HIC_CGI) { |
if (req->is_cgi == NPH || req->is_cgi == CGI || req->is_cgi == HIC_CGI |
396 |
|
|| req->is_cgi == CGI_ACTION) |
397 |
|
{ |
398 |
if (req->secure && complete_env_ssl(req) == 0) { |
if (req->secure && complete_env_ssl(req) == 0) { |
399 |
return 0; |
return 0; |
400 |
} |
} |
474 |
break; |
break; |
475 |
case 0: |
case 0: |
476 |
/* child */ |
/* child */ |
477 |
if (req->is_cgi == CGI || req->is_cgi == NPH) { |
if (req->is_cgi == CGI || req->is_cgi == NPH || req->is_cgi == CGI_ACTION) |
478 |
|
{ |
479 |
int l; |
int l; |
480 |
char *newpath; |
char *newpath; |
481 |
char *c; |
char *c; |
553 |
char *aargv[CGI_ARGC_MAX + 1]; |
char *aargv[CGI_ARGC_MAX + 1]; |
554 |
create_argv(req, aargv); |
create_argv(req, aargv); |
555 |
execve(req->pathname, aargv, req->cgi_env); |
execve(req->pathname, aargv, req->cgi_env); |
556 |
|
} else if (req->is_cgi == CGI_ACTION) { |
557 |
|
char *aargv[CGI_ARGC_MAX + 2]; |
558 |
|
aargv[0] = req->action; |
559 |
|
create_argv(req, &aargv[1]); |
560 |
|
execve(req->action, aargv, req->cgi_env); |
561 |
} else { |
} else { |
562 |
if (req->is_cgi == INDEXER_CGI) |
if (req->is_cgi == INDEXER_CGI) |
563 |
execl(dirmaker, dirmaker, req->pathname, req->request_uri, |
execl(dirmaker, dirmaker, req->pathname, req->request_uri, |
596 |
req->data_fd = pipes[0]; |
req->data_fd = pipes[0]; |
597 |
|
|
598 |
req->status = PIPE_READ; |
req->status = PIPE_READ; |
599 |
if (req->is_cgi == CGI || req->is_cgi == HIC_CGI) { |
if (req->is_cgi == CGI || req->is_cgi == HIC_CGI || req->is_cgi == CGI_ACTION) |
600 |
|
{ |
601 |
req->cgi_status = CGI_PARSE; /* got to parse cgi header */ |
req->cgi_status = CGI_PARSE; /* got to parse cgi header */ |
602 |
/* for cgi_header... I get half the buffer! */ |
/* for cgi_header... I get half the buffer! */ |
603 |
req->header_line = req->header_end = (req->buffer + BUFFER_SIZE / 2); |
req->header_line = req->header_end = (req->buffer + BUFFER_SIZE / 2); |