void CTraverseBySourceExchange::SendPacket() { m_bFailed = m_dwState & NAT_E_NOPEER; try { if(!m_bFailed && (m_dwState&NAT_S_SYNC)==0 && time(NULL)-m_SendReqTime > 5) // 5 seconds { // failed to connect if(m_nSendReqCount > 12) { m_dwState|=NAT_E_TIMEOUT; if(m_nSendReqCount>23) Failed(); m_nSendReqCount++; } else { if(m_nSendReqCount==0) _AddLogLine(false, _T("Begin to connect %s."), UserHashToString(m_UserHash)); SendConnectReq(); } } if(m_bFailed) { if(m_Sock)// && pClientSock->client) { //m_Sock->m_bUseNat = false; } if(m_dwState & NAT_E_NOPEER) { _AddLogLine(false, _T("Unconnected NatSock was deleted. server return E_NOPEER. %s."), UserHashToString(m_UserHash)); } else { _AddLogLine(false, _T("Unconnected NatSock was deleted. time out. %s."), UserHashToString(m_UserHash)); } } if(m_dwState & NAT_S_SYNC && time(NULL)-m_SendPingTime >4) { if(m_nPassivePing> 15) { _AddLogLine(false, _T("Passive Unconnected NatSock was deleted. timeout. %s."), UserHashToString(m_UserHash)); Failed(); } else { SendPingPacket(); } } } catch(...) { // the CAsyncSocketEx maybe is deleted Failed(); } }
void CTraverseByBuddy::SendPacket() { try { if(!m_bFailed && (m_dwState&NAT_S_SYNC)==0 && time(NULL)-m_SendReqTime > 10) { // failed to connect if(m_nSendReqCount>60) { m_dwState|=NAT_E_TIMEOUT; if(m_nSendReqCount>70) Failed(); m_nSendReqCount++; } else { SendConnectReq(); SendPingPacket(); } } if(m_bFailed) { if(m_Sock)// && pClientSock->client) { //m_Sock->m_bUseNat = false; } _AddLogLine(false, _T("Unconnected NatSock was deleted. time out. %s."), UserHashToString(m_UserHash)); } } catch(...) { // the CAsyncSocketEx maybe is deleted TRACE("Exception: %s\n", __FUNCTION__); Failed(); } }