204 |
if (default_document_root) |
if (default_document_root) |
205 |
memcpy( conn->document_root, default_document_root, default_document_root_size + 1); |
memcpy( conn->document_root, default_document_root, default_document_root_size + 1); |
206 |
|
|
207 |
|
if (server_name) |
208 |
|
conn->hostname = server_name; |
209 |
|
|
210 |
/* nonblocking socket */ |
/* nonblocking socket */ |
211 |
if (set_nonblock_fd(conn->fd) == -1) |
if (set_nonblock_fd(conn->fd) == -1) |
212 |
WARN("fcntl: unable to set new socket to non-block"); |
WARN("fcntl: unable to set new socket to non-block"); |
782 |
return -1; |
return -1; |
783 |
} |
} |
784 |
|
|
785 |
|
inline |
786 |
|
static void init_range_stuff( request* req, char* value) |
787 |
|
{ |
788 |
|
unsigned long int p1, p2; |
789 |
|
if (parse_range( value, &p1, &p2) == 0) { |
790 |
|
req->range_start = p1; |
791 |
|
req->range_stop = p2; |
792 |
|
} else { |
793 |
|
req->range_start = 0; |
794 |
|
req->range_stop = 0; |
795 |
|
log_error_time(); |
796 |
|
fprintf(stderr, "bogus range: \"%s\"\n", value); |
797 |
|
send_r_bad_request(req); |
798 |
|
} |
799 |
|
} |
800 |
|
|
801 |
|
inline |
802 |
|
static void init_vhost_stuff( request* req, char* value) |
803 |
|
{ |
804 |
|
virthost* vhost; |
805 |
|
int valuelen; |
806 |
|
|
807 |
|
valuelen = strlen(value); |
808 |
|
|
809 |
|
vhost = find_virthost( value, valuelen); |
810 |
|
|
811 |
|
if ( vhost && ( vhost->ip == NULL || !memcmp( vhost->ip, req->local_ip_addr, vhost->ip_len) )) |
812 |
|
{ |
813 |
|
req->hostname = value; |
814 |
|
memcpy( req->document_root, vhost->document_root, vhost->document_root_len + 1); |
815 |
|
if (vhost->user_dir) |
816 |
|
memcpy( req->user_dir, vhost->user_dir, vhost->user_dir_len + 1); |
817 |
|
|
818 |
|
} else { /* No virtual host found. use defaults */ |
819 |
|
if ( default_document_root) |
820 |
|
memcpy( req->document_root, default_document_root, default_document_root_size + 1); |
821 |
|
} |
822 |
|
} |
823 |
|
|
824 |
/* |
/* |
825 |
* Name: process_option_line |
* Name: process_option_line |
876 |
if (!add_cgi_env(req, "USER_AGENT", value, 1)) |
if (!add_cgi_env(req, "USER_AGENT", value, 1)) |
877 |
return 0; |
return 0; |
878 |
} else if (!memcmp(line, "RANGE", 5)) { |
} else if (!memcmp(line, "RANGE", 5)) { |
879 |
unsigned long int p1, p2; |
init_range_stuff( req, value); |
|
if (parse_range( value, &p1, &p2) == 0) { |
|
|
req->range_start = p1; |
|
|
req->range_stop = p2; |
|
|
} else { |
|
|
req->range_start = 0; |
|
|
req->range_stop = 0; |
|
|
log_error_time(); |
|
|
fprintf(stderr, "bogus range: \"%s\"\n", value); |
|
|
send_r_bad_request(req); |
|
|
} |
|
|
if (!add_cgi_env(req, "RANGE", value, 1)) |
|
|
return 0; |
|
880 |
} else if (!memcmp(line, "HOST", 4)) { |
} else if (!memcmp(line, "HOST", 4)) { |
881 |
virthost* vhost; |
init_vhost_stuff( req, value); |
|
|
|
|
while( (*value) == ' ') value++; |
|
|
|
|
|
vhost = find_virthost( value, 0); |
|
|
if (vhost) fprintf(stderr, "Found Host: %s\n", vhost->host); |
|
|
if (vhost) fprintf(stderr, "Found Host: %s\n", vhost->ip); |
|
|
if (vhost) fprintf(stderr, "Found Host: %s\n", vhost->user_dir); |
|
|
|
|
|
if ( vhost && ( vhost->ip == NULL || !memcmp( vhost->ip, req->local_ip_addr, vhost->ip_len) )) |
|
|
{ |
|
|
memcpy( req->document_root, vhost->document_root, vhost->document_root_len + 1); |
|
|
if (vhost->user_dir) |
|
|
memcpy( req->user_dir, vhost->user_dir, vhost->user_dir_len + 1); |
|
|
|
|
|
} else { /* No virtual host found. use defaults */ |
|
|
if ( default_document_root) |
|
|
memcpy( req->document_root, default_document_root, default_document_root_size + 1); |
|
|
} |
|
882 |
} else { |
} else { |
883 |
if (!add_cgi_env(req, line, value, 1)) |
if (!add_cgi_env(req, line, value, 1)) |
884 |
return 0; |
return 0; |