diff options
Diffstat (limited to 'src/Net/Connection.cpp')
-rw-r--r-- | src/Net/Connection.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/Net/Connection.cpp b/src/Net/Connection.cpp index 19e7bf1..d069fc9 100644 --- a/src/Net/Connection.cpp +++ b/src/Net/Connection.cpp @@ -22,6 +22,8 @@ #include <cstring> #include <sys/socket.h> +#include <iostream> + namespace Mad { namespace Net { @@ -49,14 +51,14 @@ void Connection::packetHeaderReceiveHandler(const void *data, unsigned long leng if(length != sizeof(Packet::Data)) { // TODO: Error - disconnect(); + doDisconnect(); return; } header = *reinterpret_cast<const Packet::Data*>(data); if(header.length == 0) { - signal(this, Packet(header.type, header.requestId)); + signal(this, Packet(static_cast<Packet::Type>(header.type), header.requestId)); enterReceiveLoop(); } @@ -72,11 +74,11 @@ void Connection::packetDataReceiveHandler(const void *data, unsigned long length if(length != header.length) { // TODO: Error - disconnect(); + doDisconnect(); return; } - signal(this, Packet(header.type, header.requestId, data, length)); + signal(this, Packet(static_cast<Packet::Type>(header.type), header.requestId, data, length)); enterReceiveLoop(); } @@ -95,7 +97,7 @@ void Connection::doReceive() { return; // TODO: Error - disconnect(); + doDisconnect(); return; } @@ -142,7 +144,7 @@ void Connection::doSend() { return; // TODO: Error - disconnect(); + doDisconnect(); return; } @@ -166,11 +168,11 @@ bool Connection::rawSend(const unsigned char *data, unsigned long length) { return true; } -void Connection::disconnect() { +void Connection::doDisconnect() { if(!isConnected()) return; - gnutls_bye(session, GNUTLS_SHUT_RDWR); + gnutls_bye(session, GNUTLS_SHUT_WR); shutdown(sock, SHUT_RDWR); close(sock); |