MCPcopy Create free account
hub / github.com/ddnet/ddnet / GetConnectivity

Method GetConnectivity

src/engine/shared/network_stun.cpp:112–138  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

110}
111
112CONNECTIVITY 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
140CStun::CStun(NETSOCKET Socket) :
141 m_aProtocols{CProtocol(0, Socket), CProtocol(1, Socket)}

Callers 1

UdpConnectivityMethod · 0.45

Calls 3

time_getFunction · 0.85
time_freqFunction · 0.85
IndexFromNetTypeFunction · 0.85

Tested by

no test coverage detected