| 110 | } |
| 111 | |
| 112 | CONNECTIVITY CStun::CProtocol::GetConnectivity(NETADDR *pGlobalAddr) |
| 113 | { |
| 114 | if(!m_HaveStunServer) |
| 115 | { |
| 116 | return CONNECTIVITY::UNKNOWN; |
| 117 | } |
| 118 | int64_t Now = time_get(); |
| 119 | int64_t Freq = time_freq(); |
| 120 | bool HaveTriedALittle = m_NumUnsuccessfulTries >= 5 && (m_LastResponse == -1 || Now - m_LastResponse >= 30 * Freq); |
| 121 | if(m_LastResponse == -1 && !HaveTriedALittle) |
| 122 | { |
| 123 | return CONNECTIVITY::CHECKING; |
| 124 | } |
| 125 | else if(HaveTriedALittle) |
| 126 | { |
| 127 | return CONNECTIVITY::UNREACHABLE; |
| 128 | } |
| 129 | else if(!m_HaveAddr) |
| 130 | { |
| 131 | return CONNECTIVITY::REACHABLE; |
| 132 | } |
| 133 | else |
| 134 | { |
| 135 | *pGlobalAddr = m_Addr; |
| 136 | return CONNECTIVITY::ADDRESS_KNOWN; |
| 137 | } |
| 138 | } |
| 139 | |
| 140 | CStun::CStun(NETSOCKET Socket) : |
| 141 | m_aProtocols{CProtocol(0, Socket), CProtocol(1, Socket)} |
no test coverage detected