db: clarify peer disconnect diagnostics
This commit is contained in:
@@ -2500,7 +2500,8 @@ void CClientManager::ProcessPackets(CPeer * peer)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
sys_err("Unknown header (header: %d handle: %d length: %d)", header, dwHandle, dwLength);
|
sys_err("Unknown header (header=%u packet_handle=%u length=%u peer_handle=%u host=%s recv=%d processed=%d)",
|
||||||
|
header, dwHandle, dwLength, peer->GetHandle(), peer->GetHost(), peer->GetRecvLength(), i);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2886,18 +2887,25 @@ int CClientManager::Process()
|
|||||||
switch (fdwatch_check_event(m_fdWatcher, peer->GetFd(), idx))
|
switch (fdwatch_check_event(m_fdWatcher, peer->GetFd(), idx))
|
||||||
{
|
{
|
||||||
case FDW_READ:
|
case FDW_READ:
|
||||||
if (peer->Recv() < 0)
|
switch (peer->Recv())
|
||||||
{
|
{
|
||||||
sys_err("Recv failed");
|
case -2:
|
||||||
RemovePeer(peer);
|
sys_log(0, "Peer disconnected cleanly. (host=%s peer_handle=%u fd=%d)", peer->GetHost(), peer->GetHandle(), peer->GetFd());
|
||||||
}
|
RemovePeer(peer);
|
||||||
else
|
break;
|
||||||
{
|
|
||||||
if (peer == m_pkAuthPeer)
|
|
||||||
if (g_log)
|
|
||||||
sys_log(0, "AUTH_PEER_READ: size %d", peer->GetRecvLength());
|
|
||||||
|
|
||||||
ProcessPackets(peer);
|
case -1:
|
||||||
|
sys_err("Recv failed (host=%s peer_handle=%u fd=%d)", peer->GetHost(), peer->GetHandle(), peer->GetFd());
|
||||||
|
RemovePeer(peer);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
if (peer == m_pkAuthPeer)
|
||||||
|
if (g_log)
|
||||||
|
sys_log(0, "AUTH_PEER_READ: size %d", peer->GetRecvLength());
|
||||||
|
|
||||||
|
ProcessPackets(peer);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -105,7 +105,10 @@ int CPeerBase::Recv()
|
|||||||
|
|
||||||
if (bytes_read < 0)
|
if (bytes_read < 0)
|
||||||
{
|
{
|
||||||
sys_err("socket_read failed %s", strerror(errno));
|
if (errno == 0)
|
||||||
|
return -2;
|
||||||
|
|
||||||
|
sys_err("socket_read failed: host=%s fd=%d errno=%d (%s)", m_host, m_fd, errno, strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
else if (bytes_read == 0)
|
else if (bytes_read == 0)
|
||||||
|
|||||||
@@ -45,7 +45,10 @@ int socket_read(socket_t desc, char* read_point, size_t space_left)
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (ret == 0) // 정상적으로 접속 끊김
|
if (ret == 0) // 정상적으로 접속 끊김
|
||||||
|
{
|
||||||
|
errno = 0;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef EINTR /* Interrupted system call - various platforms */
|
#ifdef EINTR /* Interrupted system call - various platforms */
|
||||||
if (errno == EINTR)
|
if (errno == EINTR)
|
||||||
|
|||||||
Reference in New Issue
Block a user