fix(http): response len
This commit is contained in:
@@ -274,9 +274,9 @@ size_t http_response_builder(char **response, cws_http_status_e status, char *co
|
||||
char *status_code = http_status_string(status);
|
||||
|
||||
size_t header_len = http_header_len(status_code, content_type, body_len_bytes);
|
||||
size_t total_len = header_len + body_len_bytes + 1;
|
||||
size_t total_len = header_len + body_len_bytes;
|
||||
|
||||
*response = malloc(total_len);
|
||||
*response = malloc(total_len + 1);
|
||||
if (*response == NULL) {
|
||||
return 0;
|
||||
}
|
||||
@@ -288,6 +288,8 @@ size_t http_response_builder(char **response, cws_http_status_e status, char *co
|
||||
memcpy(*response + header_len, body, body_len_bytes);
|
||||
}
|
||||
|
||||
(*response)[total_len] = '\0';
|
||||
|
||||
return total_len;
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,9 @@ static int cws_read_data(int sockfd, string_s *str) {
|
||||
memset(tmp, 0, sizeof tmp);
|
||||
|
||||
int bytes = sock_readall(sockfd, tmp, sizeof(tmp));
|
||||
if (bytes < 0) {
|
||||
return -1;
|
||||
}
|
||||
string_append(str, tmp);
|
||||
|
||||
return bytes;
|
||||
@@ -139,7 +142,7 @@ void cws_server_close_client(int epfd, int client_fd) {
|
||||
|
||||
cws_server_ret cws_epoll_add(int epfd, int sockfd) {
|
||||
struct epoll_event event;
|
||||
event.events = EPOLLIN | EPOLLET;
|
||||
event.events = EPOLLIN;
|
||||
event.data.fd = sockfd;
|
||||
const int status = epoll_ctl(epfd, EPOLL_CTL_ADD, sockfd, &event);
|
||||
|
||||
@@ -167,9 +170,7 @@ cws_server_ret cws_server_handle_client_data(int epfd, int client_fd) {
|
||||
|
||||
size_t total_bytes = cws_read_data(client_fd, data);
|
||||
if (total_bytes <= 0) {
|
||||
if (data) {
|
||||
string_free(data);
|
||||
}
|
||||
cws_server_close_client(epfd, client_fd);
|
||||
|
||||
return CWS_SERVER_CLIENT_DISCONNECTED_ERROR;
|
||||
@@ -187,6 +188,7 @@ cws_server_ret cws_server_handle_client_data(int epfd, int client_fd) {
|
||||
cws_http_send_response(request, HTTP_OK);
|
||||
|
||||
cws_http_free(request);
|
||||
cws_server_close_client(epfd, client_fd);
|
||||
|
||||
return CWS_SERVER_OK;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user