ssize_t http_write_request (int fd, Http_request *request) { char str[1024]; /* FIXME: buffer overflow */ ssize_t n = 0; size_t m; m = sprintf (str, "%s %s HTTP/%d.%d\r\n", http_method_to_string (request->method), request->uri, request->major_version, request->minor_version); m = write_all (fd, str, m); log_verbose ("http_write_request: %s", str); if (m == -1) { log_error ("http_write_request: write error: %s", strerror (errno)); return -1; } n += m; m = http_write_header (fd, request->header); if (m == -1) { return -1; } n += m; return n; }
void http_request_print(HttpRequest* request) { printf("HTTP Request\n"); printf("- Version: %s\n", http_version_to_string(request->version)); printf("- Method: %s\n", http_method_to_string(request->method)); printf("- URI: %s\n", (request->uri ? request->uri : "<none>")); printf("- Headers (%zu):\n", request->num_headers); for(size_t i=0; i<request->num_headers; ++i) { printf(" %s: %s\n", request->headers[i].key, request->headers[i].value); } printf("- Body: %s\n", (request->body ? request->body : "<none>")); }