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

