| 546 | } |
| 547 | |
| 548 | void CNetTokenCache::AddToken(const NETADDR *pAddr, TOKEN Token) |
| 549 | { |
| 550 | if(Token == NET_TOKEN_NONE) |
| 551 | return; |
| 552 | |
| 553 | NETADDR NullAddr = NETADDR_ZEROED; |
| 554 | NullAddr.port = pAddr->port; |
| 555 | NullAddr.type = (pAddr->type & ~(NETTYPE_WEBSOCKET_IPV4 | NETTYPE_WEBSOCKET_IPV6)) | NETTYPE_LINK_BROADCAST; |
| 556 | |
| 557 | for(auto Iter = m_ConnlessPackets.begin(); Iter != m_ConnlessPackets.end();) |
| 558 | { |
| 559 | if(Iter->m_Addr == NullAddr) |
| 560 | { |
| 561 | CNetBase::SendPacketConnlessWithToken7(m_Socket, &Iter->m_Addr, Iter->m_aData, Iter->m_DataSize, Token, GenerateToken()); |
| 562 | |
| 563 | Iter = m_ConnlessPackets.erase(Iter); |
| 564 | } |
| 565 | else |
| 566 | { |
| 567 | Iter++; |
| 568 | } |
| 569 | } |
| 570 | |
| 571 | CAddressInfo Info; |
| 572 | Info.m_Addr = *pAddr, |
| 573 | Info.m_Token = Token, |
| 574 | Info.m_Expiry = time_get() + (time_freq() * NET_TOKENCACHE_ADDRESSEXPIRY); |
| 575 | |
| 576 | m_TokenCache.push_back(Info); |
| 577 | } |
| 578 | |
| 579 | TOKEN CNetTokenCache::GetToken(const NETADDR *pAddr) |
| 580 | { |