void parse_request_header(int client_fd, Request *request) { size_t n; rio_t client_rio; char buffer[MAXLINE]; rio_readinitb(&client_rio, client_fd); copy_single_line_str(&client_rio, request->request_str); copy_single_line_str(&client_rio, request->host_str); #ifdef DEBUG printf("request str:%s", request->request_str); printf("host str: %s", request->host_str); #endif while ((n = rio_readlineb(&client_rio, buffer, MAXLINE)) != 0) { #ifdef DEBUG printf("%s", buffer); #endif if (!strcmp(buffer, "\r\n")) { break; } } }
/* * parse_request_header - parse request header extract useful information */ void parse_request_header(int client_fd, Request *request) { size_t n; rio_t client_rio; char buffer[MAXLINE]; rio_readinitb(&client_rio, client_fd); copy_single_line_str(&client_rio, request->request_str); copy_single_line_str(&client_rio, request->host_str); #ifdef DEBUG printf("request str:%s", request->request_str); printf("host str: %s", request->host_str); #endif request->cookie_size = 0; request->user_agent_size = 0; while ((n = rio_readlineb(&client_rio, buffer, MAXLINE)) != 0) { /* store cookie info for later use */ if (strstr(buffer, "Cookie:") != NULL) { strncpy(request->cookie, buffer, n); request->cookie_size = n; } /* store user-agent info for later use */ if (strstr(buffer, "User-Agent:") != NULL) { strncpy(request->user_agent, buffer, n); request->user_agent_size = n; } #ifdef DEBUG printf("%s", buffer); #endif if (!strcmp(buffer, "\r\n")) { break; } } }