close fd if there is a client receive error

pull/3/head
Tom Early 2 years ago
parent 38e3882441
commit a726c9ee22

@ -21,7 +21,7 @@
#include "DVFramePacket.h" #include "DVFramePacket.h"
// default constructor // default constructor
CDvFramePacket::CDvFramePacket() CDvFramePacket::CDvFramePacket() : CPacket()
{ {
memset(m_TCPack.dstar, 0, sizeof(m_TCPack.dstar)); memset(m_TCPack.dstar, 0, sizeof(m_TCPack.dstar));
memset(m_uiDvData, 0, sizeof(m_uiDvData)); memset(m_uiDvData, 0, sizeof(m_uiDvData));

@ -139,7 +139,7 @@ bool CTCSocket::receive(int fd, STCPacket *packet)
if (0 == n) if (0 == n)
{ {
std::cerr << "recv(): Module '" << GetMod(fd) << "' has been closed on the server" << std::endl; std::cerr << "recv(): Module '" << GetMod(fd) << "' has been closed from the other side" << std::endl;
Close(fd); Close(fd);
return true; return true;
} }
@ -435,6 +435,7 @@ bool CTCClient::Receive(std::queue<std::unique_ptr<STCPacket>> &queue, int ms)
if (receive(pfd.fd, p_tcpack.get())) if (receive(pfd.fd, p_tcpack.get()))
{ {
p_tcpack.reset(); p_tcpack.reset();
Close(pfd.fd);
} }
else else
{ {

Loading…
Cancel
Save

Powered by TurnKey Linux.