Skip to content

Commit

Permalink
Merge pull request ddnet#9142 from ChillerDragon/pr_07_fav_urls
Browse files Browse the repository at this point in the history
Store 0.7 favorites in url format
  • Loading branch information
heinrich5991 authored Oct 14, 2024
2 parents c829639 + 0c79789 commit 8290db9
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 18 deletions.
3 changes: 2 additions & 1 deletion src/engine/client/client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3630,7 +3630,8 @@ void CClient::Con_AddFavorite(IConsole::IResult *pResult, void *pUserData)
{
CClient *pSelf = (CClient *)pUserData;
NETADDR Addr;
if(net_addr_from_str(&Addr, pResult->GetString(0)) != 0)

if(net_addr_from_url(&Addr, pResult->GetString(0), nullptr, 0) != 0 && net_addr_from_str(&Addr, pResult->GetString(0)) != 0)
{
char aBuf[128];
str_format(aBuf, sizeof(aBuf), "invalid address '%s'", pResult->GetString(0));
Expand Down
38 changes: 21 additions & 17 deletions src/engine/client/favorites.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,21 @@ void CFavorites::OnConfigSave(IConfigManager *pConfigManager)
{
char aAddr[NETADDR_MAXSTRSIZE];
char aBuffer[128];
net_addr_str(&Entry.m_aAddrs[i], aAddr, sizeof(aAddr), true);
net_addr_str(&Entry.m_aAddrs[i], aBuffer, sizeof(aBuffer), true);

if(Entry.m_aAddrs[i].type & NETTYPE_TW7)
{
str_format(
aAddr,
sizeof(aAddr),
"tw-0.7+udp://%s",
aBuffer);
}
else
{
str_copy(aAddr, aBuffer);
}

if(!Entry.m_AllowPing)
{
str_format(aBuffer, sizeof(aBuffer), "add_favorite %s", aAddr);
Expand Down Expand Up @@ -135,16 +149,14 @@ void CFavorites::Add(const NETADDR *pAddrs, int NumAddrs)
// other favorite.
for(int i = 0; i < NumAddrs; i++)
{
NETADDR Addr = pAddrs[i];
Addr.type &= ~(NETTYPE_TW7);
CEntry *pEntry = Entry(Addr);
CEntry *pEntry = Entry(pAddrs[i]);
if(pEntry == nullptr)
{
continue;
}
for(int j = 0; j < pEntry->m_NumAddrs; j++)
{
if(pEntry->m_aAddrs[j] == Addr)
if(pEntry->m_aAddrs[j] == pAddrs[i])
{
pEntry->m_aAddrs[j] = pEntry->m_aAddrs[pEntry->m_NumAddrs - 1];
pEntry->m_NumAddrs -= 1;
Expand All @@ -164,10 +176,8 @@ void CFavorites::Add(const NETADDR *pAddrs, int NumAddrs)
NewEntry.m_NumAddrs = std::min(NumAddrs, (int)std::size(NewEntry.m_aAddrs));
for(int i = 0; i < NewEntry.m_NumAddrs; i++)
{
NETADDR Addr = pAddrs[i];
Addr.type &= ~(NETTYPE_TW7);
NewEntry.m_aAddrs[i] = Addr;
m_ByAddr[Addr] = m_vEntries.size();
NewEntry.m_aAddrs[i] = pAddrs[i];
m_ByAddr[pAddrs[i]] = m_vEntries.size();
}
NewEntry.m_AllowPing = false;
m_vEntries.push_back(NewEntry);
Expand Down Expand Up @@ -211,10 +221,7 @@ void CFavorites::AllEntries(const CEntry **ppEntries, int *pNumEntries)

CFavorites::CEntry *CFavorites::Entry(const NETADDR &Addr)
{
NETADDR AddrAnyProtocol = Addr;
AddrAnyProtocol.type &= ~(NETTYPE_TW7);

auto Entry = m_ByAddr.find(AddrAnyProtocol);
auto Entry = m_ByAddr.find(Addr);
if(Entry == m_ByAddr.end())
{
return nullptr;
Expand All @@ -224,10 +231,7 @@ CFavorites::CEntry *CFavorites::Entry(const NETADDR &Addr)

const CFavorites::CEntry *CFavorites::Entry(const NETADDR &Addr) const
{
NETADDR AddrAnyProtocol = Addr;
AddrAnyProtocol.type &= ~(NETTYPE_TW7);

auto Entry = m_ByAddr.find(AddrAnyProtocol);
auto Entry = m_ByAddr.find(Addr);
if(Entry == m_ByAddr.end())
{
return nullptr;
Expand Down

0 comments on commit 8290db9

Please sign in to comment.