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