From 73f37c25e822864d9a07d1c61c0372a3b432e524 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Fri, 1 May 2020 14:10:35 +0900 Subject: [PATCH 2/2] Revert dsp_message and app_message to original --- cwebsocket/src/cwebsocket/client.c | 39 +++++++----------------------- cwebsocket/src/cwebsocket/client.h | 5 ++-- cwebsocket/src/cwebsocket/common.h | 20 +++------------ 3 files changed, 15 insertions(+), 49 deletions(-) diff --git a/cwebsocket/src/cwebsocket/client.c b/cwebsocket/src/cwebsocket/client.c index 50747f0..082b451 100755 --- a/cwebsocket/src/cwebsocket/client.c +++ b/cwebsocket/src/cwebsocket/client.c @@ -827,14 +827,14 @@ int cwebsocket_client_read_data(cwebsocket_client *websocket) { if(websocket->subprotocol != NULL && websocket->subprotocol->onmessage != NULL) { #ifdef ENABLE_THREADS - cwebsocket_dsp_message *message = malloc(sizeof(cwebsocket_dsp_message)); + cwebsocket_message *message = malloc(sizeof(cwebsocket_message)); if(message == NULL) { WS_DEBUG("client_read_data: text message out of memory"); cwebsocket_client_close(websocket, 1009, "out of memory"); free(payload); return -1; } - memset(message, 0, sizeof(cwebsocket_dsp_message)); + memset(message, 0, sizeof(cwebsocket_message)); message->opcode = frame.opcode; message->payload_len = payload_length; message->payload = payload; @@ -859,7 +859,7 @@ int cwebsocket_client_read_data(cwebsocket_client *websocket) { free(payload); return bytes_read; #else - cwebsocket_dsp_message message = {0}; + cwebsocket_message message = {0}; message.opcode = frame.opcode; message.payload_len = payload_length; message.payload = payload; @@ -890,7 +890,7 @@ int cwebsocket_client_read_data(cwebsocket_client *websocket) { if(websocket->subprotocol->onmessage != NULL) { #ifdef ENABLE_THREADS - cwebsocket_dsp_message *message = malloc(sizeof(cwebsocket_dsp_message)); + cwebsocket_message *message = malloc(sizeof(cwebsocket_message)); if(message == NULL) { WS_DEBUG("client_read_data: binary message out of memory"); cwebsocket_client_close(websocket, 1009, "out of memory"); @@ -919,7 +919,7 @@ int cwebsocket_client_read_data(cwebsocket_client *websocket) { free(payload); return bytes_read; #else - cwebsocket_dsp_message message; + cwebsocket_message message; message.opcode = frame.opcode; message.payload_len = payload_length; message.payload = payload; @@ -1198,41 +1198,20 @@ void cwebsocket_client_onopen(cwebsocket_client *websocket) { } } -void cwebsocket_client_onmessage(cwebsocket_client *websocket, cwebsocket_dsp_message *message) { +void cwebsocket_client_onmessage(cwebsocket_client *websocket, cwebsocket_message *message) { if(websocket->subprotocol != NULL && websocket->subprotocol->onmessage != NULL) { - uint64_t len; - websocket->message.opcode = message->opcode; - - for (len = 0; len < message->payload_len; len += MAX_CHUNK_SIZE){ - if (len + MAX_CHUNK_SIZE > message->payload_len){ - websocket->message.chunk_len = (message->payload_len - len); - memcpy(websocket->message.payload, &message->payload[len], (message->payload_len - len)); - websocket->message.payload[(message->payload_len - len)] = '\0'; - } else { - websocket->message.chunk_len = MAX_CHUNK_SIZE; - memcpy(websocket->message.payload, &message->payload[len], MAX_CHUNK_SIZE); - websocket->message.payload[MAX_CHUNK_SIZE] = '\0'; - } - websocket->message.chunk_pos = len; - websocket->message.payload_len = message->payload_len; - websocket->subprotocol->onmessage(websocket); - } + websocket->subprotocol->onmessage(websocket, message); } } void cwebsocket_client_onclose(cwebsocket_client *websocket, int code, const char *message) { if(websocket->subprotocol != NULL && websocket->subprotocol->onclose != NULL) { - strncpy(websocket->message.payload, message, MAX_CHUNK_SIZE); - websocket->code = code; - websocket->message.payload_len = strlen(message); - websocket->subprotocol->onclose(websocket); + websocket->subprotocol->onclose(websocket, code, message); } } void cwebsocket_client_onerror(cwebsocket_client *websocket, const char *error) { if(websocket->subprotocol != NULL && websocket->subprotocol->onerror != NULL) { - strncpy(websocket->message.payload, error, MAX_CHUNK_SIZE); - websocket->message.payload_len = strlen(error); - websocket->subprotocol->onerror(websocket); + websocket->subprotocol->onerror(websocket, error); } } diff --git a/cwebsocket/src/cwebsocket/client.h b/cwebsocket/src/cwebsocket/client.h index d11dc0b..1bad957 100755 --- a/cwebsocket/src/cwebsocket/client.h +++ b/cwebsocket/src/cwebsocket/client.h @@ -91,7 +91,6 @@ typedef struct _cwebsocket { pthread_mutex_t lock; pthread_mutex_t write_lock; #endif - cwebsocket_app_message message; int code; size_t subprotocol_len; cwebsocket_subprotocol *subprotocol; @@ -100,7 +99,7 @@ typedef struct _cwebsocket { typedef struct { cwebsocket_client *socket; - cwebsocket_dsp_message *message; + cwebsocket_message *message; } cwebsocket_client_thread_args; // "public" @@ -223,7 +222,7 @@ int cwebsocket_client_read(cwebsocket_client *websocket, void *buf, int len); int cwebsocket_client_write(cwebsocket_client *websocket, void *buf, int len); void cwebsocket_client_onopen(cwebsocket_client *websocket); -void cwebsocket_client_onmessage(cwebsocket_client *websocket, cwebsocket_dsp_message *message); +void cwebsocket_client_onmessage(cwebsocket_client *websocket, cwebsocket_message *message); void cwebsocket_client_onclose(cwebsocket_client *websocket, int code, const char *message); void cwebsocket_client_onerror(cwebsocket_client *websocket, const char *error); diff --git a/cwebsocket/src/cwebsocket/common.h b/cwebsocket/src/cwebsocket/common.h index faeb8ff..1141639 100644 --- a/cwebsocket/src/cwebsocket/common.h +++ b/cwebsocket/src/cwebsocket/common.h @@ -108,8 +108,6 @@ extern "C" { #endif -#define MAX_CHUNK_SIZE 256 - typedef int ssize_t; typedef enum { @@ -136,30 +134,20 @@ typedef struct { uint32_t opcode; uint64_t payload_len; char *payload; -} cwebsocket_dsp_message; - -typedef struct { - uint32_t opcode; - uint64_t payload_len; - uint64_t chunk_len; - uint64_t chunk_pos; - char payload[MAX_CHUNK_SIZE + 1]; -} cwebsocket_app_message; +} cwebsocket_message; typedef struct { char *name; void (*onopen)(void *arg); - void (*onmessage)(void *arg); - void (*onclose)(void *arg); - void (*onerror)(void *arg); + void (*onmessage)(void *arg, cwebsocket_message *message); + void (*onclose)(void *arg, int code, const char *message); + void (*onerror)(void *arg, const char *error); } cwebsocket_subprotocol; char* cwebsocket_create_key_challenge_response(const char *seckey); char* cwebsocket_base64_encode(const unsigned char *input, int length); void cwebsocket_print_frame(cwebsocket_frame *frame); -void ws_thread_new( const char *pcName, void( *pxThread )( void *pvParameters ), void *pvArg, int iStackSize, int iPriority); - #ifdef __cplusplus } #endif -- 2.37.1