summaryrefslogtreecommitdiffstats
path: root/src/Net/Connection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Net/Connection.cpp')
-rw-r--r--src/Net/Connection.cpp18
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);