From 575f2e424a17737111786227103a428fb5c20396 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期一, 12 十月 2020 18:15:27 +0800 Subject: [PATCH] req_rep --- src/socket/net_mod_server_socket.c | 28 ++++++++++++++++------------ 1 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/socket/net_mod_server_socket.c b/src/socket/net_mod_server_socket.c index 4e574d8..198894b 100644 --- a/src/socket/net_mod_server_socket.c +++ b/src/socket/net_mod_server_socket.c @@ -88,18 +88,21 @@ int n; net_mod_request_head_t request_head; net_mod_response_head_t response_head; - void *buf, *recv_buf; + void *recv_buf; + static void *buf; int recv_size; - size_t max_buf = 8096; - - buf = malloc(max_buf); + static size_t max_buf = 1024; if(buf == NULL) { - err_exit(errno, "process_client malloc"); + buf = malloc(max_buf); + if(buf == NULL) { + err_exit(errno, "process_client malloc"); + } } + + if ((n = rio_readnb(rio, &request_head, sizeof(net_mod_request_head_t))) != sizeof(net_mod_request_head_t)) { - free(buf); return -1; } @@ -112,15 +115,16 @@ } if ((n = rio_readnb(rio, buf, request_head.content_length)) != request_head.content_length ) { - free(buf); return -1; } - shmModSocket.sendandrecv(buf, request_head.content_length, request_head.key, &recv_buf, &recv_size); - response_head.content_length = recv_size; - Rio_writen(connfd, &response_head, sizeof(response_head)); - Rio_writen(connfd, recv_buf, recv_size); - free(buf); + if(request_head.mod == REQ_REP) { + shmModSocket.sendandrecv(buf, request_head.content_length, request_head.key, &recv_buf, &recv_size); + response_head.content_length = recv_size; + Rio_writen(connfd, &response_head, sizeof(response_head)); + Rio_writen(connfd, recv_buf, recv_size); + } + return 0; } -- Gitblit v1.8.0