diff --git a/examples/protocols/http_server/ws_echo_server/main/ws_echo_server.c b/examples/protocols/http_server/ws_echo_server/main/ws_echo_server.c index c8789f73f3..a9823a4a30 100644 --- a/examples/protocols/http_server/ws_echo_server/main/ws_echo_server.c +++ b/examples/protocols/http_server/ws_echo_server/main/ws_echo_server.c @@ -55,9 +55,16 @@ static void ws_async_send(void *arg) static esp_err_t trigger_async_send(httpd_handle_t handle, httpd_req_t *req) { struct async_resp_arg *resp_arg = malloc(sizeof(struct async_resp_arg)); + if (resp_arg == NULL) { + return ESP_ERR_NO_MEM; + } resp_arg->hd = req->handle; resp_arg->fd = httpd_req_to_sockfd(req); - return httpd_queue_work(handle, ws_async_send, resp_arg); + esp_err_t ret = httpd_queue_work(handle, ws_async_send, resp_arg); + if (ret != ESP_OK) { + free(resp_arg); + } + return ret; } /*