From a5fcddcbbe69e7953c20517a912f987180738873 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 5 Jan 2016 13:46:55 -0500 Subject: [PATCH] Separate out the reply systems within the websocket.[cpp/h] files, and ensure that we close the TCP socket after sending back a reply. --- src/server/WebSocket.cpp | 24 ++++++++++++++++++------ src/server/WebSocket.h | 2 ++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/server/WebSocket.cpp b/src/server/WebSocket.cpp index dc17808..046a95d 100644 --- a/src/server/WebSocket.cpp +++ b/src/server/WebSocket.cpp @@ -65,6 +65,15 @@ void WebSocket::setLastDispatch(QString msg){ //======================= // PRIVATE //======================= +void WebSocket::sendReply(QString msg){ + if(SOCKET!=0){ SOCKET->sendTextMessage(msg); } //Websocket connection + else if(TSOCKET!=0){ + //TCP Socket connection + TSOCKET->write(msg.toUtf8().data()); + TSOCKET->close(); //TCP/REST connections are 1 connection per message. + } +} + void WebSocket::EvaluateREST(QString msg){ //Parse the message into it's elements and proceed to the main data evaluation RestInputStruct IN(msg); @@ -94,8 +103,9 @@ void WebSocket::EvaluateREST(QString msg){ } out.Header << "Accept: text/json"; out.Header << "Content-Type: text/json; charset=utf-8"; - if(SOCKET!=0){ SOCKET->sendTextMessage(out.assembleMessage()); } - else if(TSOCKET!=0){ TSOCKET->write(out.assembleMessage().toUtf8().data()); } + this->sendReply(out.assembleMessage()); +/* if(SOCKET!=0){ SOCKET->sendTextMessage(out.assembleMessage()); } + else if(TSOCKET!=0){ TSOCKET->write(out.assembleMessage().toUtf8().data()); }*/ }else{ EvaluateRequest(IN); } @@ -203,8 +213,9 @@ void WebSocket::EvaluateRequest(const RestInputStruct &REQ){ } } //Return any information - if(SOCKET!=0){ SOCKET->sendTextMessage(out.assembleMessage()); } - else if(TSOCKET!=0){ TSOCKET->write(out.assembleMessage().toUtf8().data()); } + this->sendReply(out.assembleMessage()); + /*if(SOCKET!=0){ SOCKET->sendTextMessage(out.assembleMessage()); } + else if(TSOCKET!=0){ TSOCKET->write(out.assembleMessage().toUtf8().data()); }*/ } // === GENERAL PURPOSE UTILITY FUNCTIONS === @@ -312,6 +323,7 @@ void WebSocket::AppCafeStatusUpdate(QString msg){ //Assemble the output JSON document/text out.Header << "Content-Type: text/json; charset=utf-8"; //REST header info //Now send the message back through the socket - if(SOCKET!=0){ SOCKET->sendTextMessage(out.assembleMessage()); } - else if(TSOCKET!=0){ TSOCKET->write(out.assembleMessage().toUtf8().data()); } + this->sendReply(out.assembleMessage()); +/* if(SOCKET!=0){ SOCKET->sendTextMessage(out.assembleMessage()); } + else if(TSOCKET!=0){ TSOCKET->write(out.assembleMessage().toUtf8().data()); }*/ } diff --git a/src/server/WebSocket.h b/src/server/WebSocket.h index 14857d1..340b296 100644 --- a/src/server/WebSocket.h +++ b/src/server/WebSocket.h @@ -38,6 +38,8 @@ private: AuthorizationManager *AUTHSYSTEM; bool SendAppCafeEvents; + void sendReply(QString msg); + //Main connection comminucations procedure void EvaluateREST(QString); //Text -> Rest/JSON struct void EvaluateRequest(const RestInputStruct&); // Parse Rest/JSON (does auth/events)