void process_rq(char* rq , int fd) { char cmd[BUFSIZ] , arg[BUFSIZ] ; if(fork() != 0) return ; strcpy(arg , "./"); if(sscanf(rq , "%s %s" , cmd , arg+2) != 2) return ; if(strcmp(cmd , "GET") != 0) { if(strcmp(cmd , "HEAD") != 0) cannot_do(fd); else if(not_exist(arg)) do_404(arg , fd); else { if(isadir(arg)) { strcat(arg , "index.html"); printf("modified arg : %s\n" ,arg); if(not_exist(arg)) do_404(arg , fd); } do_process_head(arg , fd); } } else if(not_exist(arg)) do_404(arg , fd); else if(isadir(arg)) do_ls(arg , fd); else if(ends_in_cgi(arg)) do_exec(arg ,fd); else do_cat(arg , fd); }
void dispatcher(Request *req, char *result) { if ( strcmp(req->http_verb,"GET") != 0 ) { logger_info("Do not implement this operation yet\n"); do_501(result); } else if (not_exist(req->path)) { printf("Can't find request path %s\n", req->path); do_404(req->path, result); } else { printf("Find request path %s\n", req->path); do_cat_file(req->path, result); } }
extern void process_rq(char *request, int sock_fd) { char cmd[BUFSIZ], arg[BUFSIZ]; strcpy(arg, "./"); sscanf(request, "%s %s", cmd, arg + 2); if (fork() != 0) return ; if (strcmp(cmd, "GET") != 0) { cannot_do(sock_fd); } else if (not_exist(arg)) { do_404(arg, sock_fd); } else if (is_dir(arg)) { do_ls(arg, sock_fd); } else if (ends_in_cgi(arg)) { do_exec(arg, sock_fd); } else { do_cat(arg, sock_fd); } }
/* ------------------------------------------------------ * process_rq( char *rq, int fd ) do what the request asks for and write reply to fd handles request in a new process rq is HTTP command: GET /foo/bar.html HTTP/1.0 ------------------------------------------------------ */ process_rq( char *rq, int fd) { char cmd[BUFSIZ], arg[BUFSIZ]; if ( sscanf(rq, "%s%s", cmd, arg) != 2 ) return; sanitize(arg); printf("sanitized version is %s\n", arg); if ( strcmp(cmd,"GET") != 0 ) not_implemented(); else if ( built_in(arg, fd) ) ; else if ( not_exist( arg ) ) do_404(arg, fd); else if ( isadir( arg ) ) do_ls( arg, fd ); else do_cat( arg, fd ); }
void process_rq(char *rq, int fd) { char cmd[BUFSIZ], arg[BUFSIZ]; if (fork() != 0) return; strcpy(arg, "./"); if (sscanf(rq, "%s%s", cmd, arg+2) != 2) return; if (strcmp(cmd, "GET") != 0) cannot_do(fd); else if (not_exist(arg)) do_404(arg, fd); else if (isadir(arg)) do_ls(arg, fd); else if (ends_in_cgi(arg)) do_exec(arg, fd); else do_cat(arg, fd); }
process_rq( char *rq, int fd ) { char cmd[BUFSIZ], arg[BUFSIZ]; /* create a new process and return if not the child */ if ( fork() != 0 ) return; strcpy(arg, "./"); /* precede args with ./ */ if ( sscanf(rq, "%s%s", cmd, arg+2) != 2 ) return; if ( strcmp(cmd,"GET") != 0 ) cannot_do(fd); else if ( not_exist( arg ) ) do_404(arg, fd ); else if ( isadir( arg ) ) do_ls( arg, fd ); else if ( ends_in_cgi( arg ) ) do_exec( arg, fd ); else do_cat( arg, fd ); }