Commit graph

140 commits

Author SHA1 Message Date
Learath2 48548090be Fix 2 leaks in CServerBrowser 2020-10-13 18:05:59 +02:00
def 23db49db63 Server browser: Don't access friends out of bounds
src/engine/client/serverbrowser.cpp:295:88: runtime error: index 64 out of bounds for type 'CServerInfo::CClient [64]'
    #0 0x565020e035bd in CServerBrowser::Filter() /media/ddnet/src/engine/client/serverbrowser.cpp:295:128
    #1 0x565020e053b3 in CServerBrowser::Sort() /media/ddnet/src/engine/client/serverbrowser.cpp:352:2
    #2 0x565020e0c364 in CServerBrowser::Set(NETADDR const&, int, int, CServerInfo const*) /media/ddnet/src/engine/client/serverbrowser.cpp:620:2
    #3 0x565020cf9854 in CClient::ProcessServerInfo(int, NETADDR*, void const*, int) /media/ddnet/src/engine/client/client.cpp:1524:20
    #4 0x565020cf8132 in CClient::ProcessConnlessPacket(CNetChunk*) /media/ddnet/src/engine/client/client.cpp:1357:4
    #5 0x565020d11656 in CClient::PumpNetwork() /media/ddnet/src/engine/client/client.cpp:2575:5
    #6 0x565020d1ba21 in CClient::Update() /media/ddnet/src/engine/client/client.cpp:2856:2
    #7 0x565020d26efe in CClient::Run() /media/ddnet/src/engine/client/client.cpp:3237:4
    #8 0x565020d48b2e in main /media/ddnet/src/engine/client/client.cpp:4341:11
    #9 0x7f4311524151 in __libc_start_main (/usr/lib/libc.so.6+0x28151)
    #10 0x565020a95e0d in _start (/media/ddnet/DDNet+0x705e0d)
2020-10-11 16:37:03 +02:00
def 7e297aff59 Don't pass null pointer into mem_copy in CServerBrowser
src/base/system.c:261:15: runtime error: null pointer passed as argument 2, which is declared to never be null
/usr/include/string.h:44:28: note: nonnull attribute specified here
    #0 0x5651235308dc in mem_copy /media/ddnet/src/base/system.c:261:2
    #1 0x56512375218d in CServerBrowser::Add(NETADDR const&) /media/ddnet/src/engine/client/serverbrowser.cpp:503:3
    #2 0x565123752f6a in CServerBrowser::Set(NETADDR const&, int, int, CServerInfo const*) /media/ddnet/src/engine/client/serverbrowser.cpp:548:13
    #3 0x5651237564cb in CServerBrowser::Refresh(int) /media/ddnet/src/engine/client/serverbrowser.cpp:705:6
    #4 0x5651239a32f8 in CMenus::Render() /media/ddnet/src/game/client/components/menus.cpp:1164:21
    #5 0x5651239bd331 in CMenus::OnRender() /media/ddnet/src/game/client/components/menus.cpp:2338:2
    #6 0x565123b878f6 in CGameClient::OnRender() /media/ddnet/src/game/client/gameclient.cpp:676:28
    #7 0x56512363b5ee in CClient::Render() /media/ddnet/src/engine/client/client.cpp:1134:16
    #8 0x56512367095f in CClient::Run() /media/ddnet/src/engine/client/client.cpp:3285:7
    #9 0x565123690b7e in main /media/ddnet/src/engine/client/client.cpp:4341:11
    #10 0x7fa8487e8151 in __libc_start_main (/usr/lib/libc.so.6+0x28151)
    #11 0x5651233dde0d in _start (/media/ddnet/DDNet+0x705e0d)
2020-10-11 16:37:03 +02:00
def 3be8a592e5 Run clang-format
Purely automatic change. In case of conflict with this change, apply the
other change and rerun the formatting to restore it:

$ python scripts/fix_style.py
2020-09-26 21:50:15 +02:00
def f8fc11b880 clang-format 2020-09-26 21:33:36 +02:00
def f74cc43f4c Remove pure server filters, add space for Countries/Types
Not so relevant anymore
2020-09-26 21:33:25 +02:00
def 3e58d8b756 Increase br_max_requests to 100
As suggested by BannZay on Discord. We scale down when we notice that
no responses arrive. The idea is that player's internet has become
faster than when DDNet started, so increasing the default is ok.
2020-09-17 17:41:14 +02:00
bors[bot] 7a1d2c0f4e
Merge #2715
2715: Fix server responses handling in game browser r=heinrich5991 a=BannZay

Fixes all problems for #2620

Explanations of existed problems:
Lan has non expected servers because we were creating browser entry regardless token check
DDNet tab has ping 0 for servers as we weren`t rejecting previous refresh responses

Co-authored-by: Andrii <bannzay3@gmail.com>
2020-09-03 01:37:37 +00:00
Andrii 840d8cb1a7 reset token seed on browser refresh 2020-09-03 03:03:22 +03:00
Andrii 836c56aeb5 create serverbrowser entry only after broadcast token check 2020-09-03 02:51:33 +03:00
Andrii a215e375db allow empty max ping filter 2020-09-02 19:26:26 +03:00
def 44b1014f41 Load serverbrowser more fairly
One from each country and so on instead of doing one country fully first
before moving to the next. This makes loading servers like Japan and AUS
much faster since they're at the back of the list. This also reduces the
peak number of packets sent to each IP at once.
2020-08-31 00:10:26 +02:00
trml d5c030065a Sort players by descending order first 2020-08-25 02:26:36 +02:00
trml 4abe8caab8 Sort servers by a combination of players and ping as default 2020-08-24 23:25:45 +02:00
def 017b8c3621 Move DDNet-custom json code out of external directory (fixes #2022) 2020-01-01 20:07:04 +01:00
WsYFU 1a16f5b5f0
Update serverbrowser.cpp 2019-10-31 16:16:35 +03:00
12pm 219d6dcd92 Explicitly filter finished maps
Otherwise this filters all maps in all other tabs
2019-05-11 13:45:41 +02:00
Learath 93d14a1eca Inconvenience for windows 2019-04-26 22:36:49 +03:00
heinrich5991 e3657ab2d5 Use SHA256 instead of MD5 in some places
This only works in places where the actual choice of hashing function
doesn't matter.
2019-04-06 02:56:29 +02:00
heinrich5991 e44b1ca986 Use OpenSSL md5 if it is available
Fixes #1582.
2019-04-06 02:56:29 +02:00
def bf576723a3 Add KoG tab in server browser
- As requested by qshar and KoG players
- Similar to DDNet tab
- Info fetched from servers-kog entry from https://info.ddnet.tw/info
- Also supports countries and types
- Doesn't inform whether map has been finished
- Generalized the code a bit but it's still ugly
- Depends on #1533, also shows KoG servers as official/verified
2019-03-24 23:15:40 +01:00
def ed5b08e7dc Also recheck official server status when json gets loaded 2019-03-19 07:57:09 +01:00
def 4f515bf67e Add symbol for official servers in server browser (fixes #1501)
- Also fix favorites checkbox when removing favorite
- Might need a nicer looking symbol
2019-03-19 07:46:50 +01:00
Learath f6c15f1de0 Style 2019-03-11 14:54:31 +03:00
Learath 9713f6c2cd Improve interface to function 2019-03-11 14:39:54 +03:00
Learath c4af290df5 Don't use strtok. Close #1468 2019-03-05 12:46:29 +03:00
def faf388b853 Fix #1350 2018-10-29 22:03:57 +01:00
Dennis Felsing e295a121e4 DDNET_INFO(_TMP) 2018-08-23 09:57:35 +02:00
Dennis Felsing 29dd3e29f7 Read ddnet-info.json from correct location 2018-08-23 09:36:20 +02:00
Dennis Felsing e2eb4a66dc Add Filter for connecting players (fixes #1263) 2018-08-21 09:03:48 +02:00
yangfl 81a39c229b Fix typo 2018-07-10 17:29:02 +08:00
heinrich5991 f8277267a0 Remove mem_alloc and mem_free, use standard C functions instead
Replace `mem_free` by `free`, and `mem_alloc` by `malloc` or `calloc`
(the latter one being used to allocate a zeroed array of elements,
sometimes, this makes a call to `mem_zero` superfluous).

This results in having to remove `mem_stats` which previously recorded
the number of allocations and their size that the Teeworlds code did
directly.

Remove OOM handling in `src/game/client/components/binds.cpp`.

Remove needless copying in the CSV code in
`src/game/client/components/statboard.cpp`.
2018-04-09 11:56:39 +02:00
yangfl 1620fc9b0f Fix typo 2018-02-07 16:10:40 +08:00
heinrich5991 16694a0d7b Use a random token for serverbrowse requests
This alleviates the risk for spoofed servers.
2017-10-14 21:58:23 +02:00
def 553c97b52d Fix crash with broken ddnet-info.json 2017-09-20 22:25:55 +02:00
def 89ed22e8d8 Introduce ddnet-info.json
- Single json file containing all information for the client
- Fetched from https://info.ddnet.tw/info?name=deen
- Replaces versionsrv, news, ddnet-maps.json and ddnet-ranks.json
- Servers are sorted by most popular ones for respective player
- Always stays < 100 ms response time, compared to occasional 50 s for
  old ddnet-ranks.json
2017-09-03 17:42:04 +02:00
def 8ebac31c03 Use old ddnet-ranks.json when new one can't be fetched currently 2017-08-31 22:40:55 +02:00
Savander 1741df43cd Add gametype support to exclude field 2017-08-31 12:35:01 +02:00
def bff1c12b83 Don't try to load ddnet-ranks.json while fetcher is downloading it anyway 2017-08-31 00:07:59 +02:00
def 16f3ddc5a7 Show if user has rank on map in browser (+filter)
UI implementation by timakro
2017-08-30 21:34:04 +02:00
def 2fb5835980 Update json-parser to 1.1.0, zlib to 1.2.11 2017-07-22 11:07:29 +02:00
def f3e3d57a90 Always close files, cleaner demo recording, fix some other stuff 2017-07-08 13:39:20 +02:00
heinrich5991 1d81d56850 Introduce new, vanilla-compatible server info protocol
This means that we have a reliable and fast way to query for extended info,
while also not wasting network bandwidth.

The protocol is designed to be extensible, there's four bytes space for
encoding more request types (currently zeroed), and there's one string in each
response packet and one string for each player available (currently the empty
string).

The protocol itself has no problems with more than 64 players, although the
current client implementation will drop the player info after the 64th player,
because it uses a static array for storage.

Also fixes #130, the player list is just sorted each time new player info
arrives.
2017-03-29 12:56:13 +02:00
necropotame b8e4e5beea Fix style in several places 2017-03-22 19:45:14 +01:00
def 28f50e4440 Revert "Implement comma in search and exclude queries to separate search terms"
This reverts commit 3341e18d13.
2016-08-07 00:52:00 +02:00
def 3341e18d13 Implement comma in search and exclude queries to separate search terms 2016-08-02 22:16:02 +02:00
Tim Schumacher 96bcedec29 just set first char of ddnet filter to zero 2016-05-19 15:54:52 +02:00
Tim Schumacher dae855ee9f clear ddnet filter strings before appending 2016-05-19 15:51:48 +02:00
def 61e47422f6 Clean up debug messages a bit (lower case, no useless errors) 2016-05-02 21:35:32 +02:00
def 6e8ada1ac8 Fix whitespaces a bit 2015-07-09 02:12:35 +02:00
def 8d945fe968 Exclude DDNet servery by type 2014-12-14 16:45:18 +01:00
def 76b6a99f26 Add Exclusion filter strings and clean up menu a bit 2014-12-10 04:49:16 +01:00
def 0963b68dea Fix memory leak in client 2014-12-02 13:36:27 +01:00
def bde8c33c20 Hopefully real fix now 2014-09-20 21:44:43 +02:00
def 572b4f91bd Fix serverbrowser for more than 24 players again 2014-09-20 21:14:19 +02:00
def 36b33d6138 Fix: Prevent animated server names and fake 0 pings in serverbrowser 2014-09-20 15:48:30 +02:00
east c4fc429e99 small cleanup 2014-09-20 11:47:51 +02:00
east 603727232a ddnet server list zlib compression added 2014-09-20 11:36:46 +02:00
east 202d5d8866 Filter flag grid added 2014-09-19 23:52:09 +02:00
east 9db12d455d working on CDDNetCountry 2014-09-18 16:13:06 +02:00
east e732008157 DDNet serverlist added 2014-09-13 16:36:25 +02:00
def 13f0a455e1 Unneded include 2014-06-22 02:41:46 +02:00
def 7875c2ec36 Android support (by Pelya) 2014-06-16 13:29:18 +02:00
def 4b8a52d7c9 Fix: Rerequest 64 player infos 2014-05-17 16:15:01 +02:00
def a0eee3f1a7 Fix: No wrong pings in serverbrowser 2014-05-03 20:57:19 +02:00
def 9e4114f27d Better 64 player search 2014-01-14 21:40:55 +01:00
def 188635162e 64 Player Filter Button 2014-01-11 21:38:50 +01:00
def 736891c945 Change serverbrowser request order 2014-01-11 03:53:50 +01:00
def 9743b0cb58 Better time/score messages 2014-01-10 16:19:46 +01:00
def 488df63f92 Too verbose debugging output 2014-01-08 07:55:26 +01:00
Patrick Rathje 5114570794 Hotfix for Refresh 2014-01-08 07:46:24 +01:00
Patrick Rathje 4c080fe137 Better Refreshing
Conflicts:
	src/engine/client/client.cpp
	src/engine/client/serverbrowser.cpp
	src/engine/client/serverbrowser.h
	src/engine/masterserver.h
	src/engine/shared/masterserver.cpp
2014-01-08 07:46:09 +01:00
Patrick Rathje 020bb16f54 Faster Refreshing
Conflicts:
	src/engine/client/serverbrowser.cpp
2014-01-08 07:42:19 +01:00
def 52e83313c8 64 players in server browse 2014-01-08 06:15:56 +01:00
oy 13d06e45ac fixed used nettype in server browser and try to use ipv4 and ipv6 socket when using a bindaddr. Closes #940 2013-02-24 17:26:59 +01:00
oy b44ee3d975 reworked ban system 2011-12-29 23:36:53 +01:00
oy 988b1c22cf fixed that the server browser list gets sorted twice on a new entry 2011-12-29 13:06:53 +01:00
oy 48d367db20 added faster way of inverting the sorted serverlist by KillaBilla. Closes #885 2011-11-29 22:34:47 +01:00
oy 8238853b8c added a todo note 2011-11-29 22:18:40 +01:00
eeeee 1452b6811c Replaced sorting implementation with stable one to prevent annoying flickering on server browser update. 2011-11-29 22:16:41 +01:00
oy 123eab41c8 made it possible to filter by player country in the server browser. Closes #654 2011-06-29 22:27:32 +02:00
oy fb309436b4 improved friends feature 2011-06-26 17:10:13 +02:00
heinrich5991 9fb36fd802 added strict game type filter 2011-05-02 19:25:38 +02:00
oy 06115dd49d added "Whitespace and line Endings cleanup" by GreYFoX 2011-04-13 20:37:12 +02:00
oy 4d8c9d1c0d updated standard map filter in the server browser with new maps 2011-04-09 00:08:32 +02:00
oy ab810cab25 fixed that player options just show players as friends not clans 2011-04-02 19:51:05 +02:00
oy b3ae1a088e make the "show friends"-filter just list servers with friends on them 2011-03-31 21:22:12 +02:00
oy 59d56cd332 finished IPv6 support (master servers aren't compatible with 0.5 and older). Closes #233 2011-03-30 12:08:33 +02:00
oy 34a9ca20a7 added ipv6 support from the old lua branch 2011-03-28 20:11:28 +02:00
oy a583633cde added renaming of srvbrowse so it matches with the interface filename by Choupom 2011-03-27 18:00:54 +02:00
Renamed from src/engine/client/srvbrowse.cpp (Browse further)