Guild icon
DDraceNetwork
Development / developer
Development discussion. Logged to https://ddnet.tw/irclogs/ Connected with DDNet's IRC channel, Matrix room and GitHub repositories — IRC: #ddnet on Quakenet | Matrix: #ddnet-developer:matrix.org GitHub: https://github.com/ddnet
Between 2018-03-06 00:00:00Z and 2018-03-07 00:00:00Z
Avatar
[quakenet] <Learath2> did we ever apply as a gsoc project? we could use some free engineering talent :P
Avatar
Learath2: I did a few gsoc applications for Nim, never with any success. So I guess there would be even less of a chance for DDNet
Avatar
defs doesn't look worse XD
Avatar
fuken nodejs
09:19
@Deleted User is that the current state?
Avatar
that is the option to add an icon font
09:23
the font manager is finished i think
09:23
but i have to select the text i want to buffer
09:24
and since the current gui is really unbufferable i will only add this for things where alot of text is rendered
09:32
can't get a full resolution pic sadly
09:32
but that's pretty much scrolling thorugh the server browser and showall on the 2 fullest servers currently
09:35
looks like the matrix in red xD
09:38
what do you mean by "the current gui is (really) unbufferable"
Avatar
well its always streamed
09:38
like these vsplit and stuff
09:39
pretty much i dont see a chance other than rewriting it
09:39
but i wont do it, because thats boring xD
09:41
for the console, remote console, server browser and ingame chat it might not be too hard, dunno, i never looked into them, but i hope it's not too much work
09:41
then 50% of the text is already buffered probably
Avatar
@Deleted User would it be possible to put the currently displayed texts into a hashmap, and just use that as cache in case nothing changes?
Avatar
well probably, but the question might be if that doesnt waste even more cpu time
09:51
also its hard to tell when to delete text then
09:51
i mean nobody will ever get RAM issues by that bit of text
Avatar
if it's not rendered in a tick
09:51
then throw it out
09:51
or mark it for "potential deletion" or whatever
09:51
not sure if that'd work
09:51
that's just me speaking with little experience
Avatar
but isn't currently the CPU the bottleneck already? well i just dunno if building the quads is more expensive than building and searching the hashes every tick
Avatar
hashmaps are supposed to be fast 🙂
Avatar
well 1. we would need a hashing algorithm with less conflicts, that hasing algorithm probably is already slow in converting the text into hash 2. hashmaps are fast when the dataset is huge(like if you really are smth like a search engine) the font manager basically also just processes the characters and builds the quads but yeah theoretically it might be a bit faster, hard to tell
09:58
but there is another problem
09:58
if we have 2 same strings, used at a different location in the program, it will blur one of them
09:59
because the orthographic matrix will only know the current size
09:59
and the quads are build by that size
09:59
so if it changes, it will scale the quads wrongly
10:00
but ofc we could just save the current screen state
10:01
in the end it's just the question of how much arrays we get xD 1. the font 2. the font size 3. the screen state 4. the hash
Avatar
put all of that into the hash 😉
Avatar
well or allow multiple key entries for one hash
10:01
mh yeah could work xD
10:02
but the main goal defs is rewriting text rendering in the gui
10:02
because then no cpu time is wasted
Avatar
What problem are you trying to solve? The main bottleneck for text rendering appears to be glyph rasterization, texture updates (possible GPU stalls) and/or switching atlases betweeen calls
Avatar
the main issue is that cpu time is wasted by building the quads, and additionally sometimes uploading new glyhps
10:29
i dont solve issues, i already solved them
Avatar
let's just remove all the gui, render a chromium over the main window, and use react native web to build the ui (edited)
Avatar
in the end the gui performance doenst really matter tbh, only thing that is tragic is anything rendered ingame( the chat and statsboard or similar )
11:04
if the rest performce at @deen 's 10 FPS GPU with 10FPS instead of 80FPS then idc xd (edited)
Avatar
I actually did want to investigate if it'd be feasible to build the ui in a similar way to the way modern web pages are built, only re-rendering on change and stuff
11:05
just a ridiculous amount of work for no benefit at all tho
Avatar
yes exactly that
11:06
i did something similar for my game engine
11:06
i spent like 2 weeks for simple shit
11:06
cant believe
Avatar
@Deleted User does the approach you are currently working on help with the CJK rendering?
11:06
currently cjk text in the gui really lags the client while it's rendering
Avatar
is something wrong with it?
11:07
oh how? like the performance or what?
Avatar
choose japanese language, restart client, join server check serverinfo
Avatar
i have a fast pc
11:07
but i can try
Avatar
even I notice it with my beast of a machine 😛
11:08
it takes a couple seconds to render the stuff in the scoreboard too with CJK languages
Avatar
but once its rendered its fine
Avatar
yeah ofc
11:09
but the scoreboard coming up with a 3 second delay looks funny
Avatar
probs a freetype issue
Avatar
was thinking of some async rendering, like pre-allocate some space to render out the text to and not block
11:10
in CJK the concept of a "glyph" doesn't really make sense iirc
Avatar
are you under windows?
Avatar
also could work around it by maybe rendering out all the text used in the ui while loading the client
11:12
I'm on linux
Avatar
my new renderer seems fine
11:13
with that font
11:13
or its cached from the other client
11:13
xD
11:13
probs have to restart pc to test
Avatar
Is it even possible to have it cached from before a restart
11:14
?
Avatar
yeah all fine
Avatar
I doubt it unless freetype had some black magic incorperated to talk to ogl
Avatar
after restarting
11:15
no delay at all
Avatar
is this on master or the font stuff you are working on?
Avatar
my stuff
Avatar
but you do have the delay with master right?
Avatar
and i currently cant commit because i didnt change branch after making the pr on ddnet github
11:16
yes with master its extreme
Avatar
great \o/
Avatar
probably this is what @cin said about the rasterazation
11:17
since that doesnt exist anymore
11:17
it doesnt need to wait for the gpu the whole time
Avatar
We might have to make some compromises to reproduce some of the old behaviour with opengl if we want to make it the default renderer sometime
Avatar
oh no
Avatar
some maps really do look ridiculous with open gl
Avatar
it will also work with old gl
11:18
i changed the text renderer to work with both
Avatar
yeah yeah didn't mean in that context
11:19
I meant in the general context, if we want ogl3 to be the default renderer we'll need to make sure all maps look as they did or atleast acceptable
Avatar
because of the border fix bug?
11:20
probs was just a bad idea to stay at the old renderer, instead of the 0.7 vanilla one
11:20
because that fixed the things too
Avatar
there are a couple maps that can easily make me nauseaus
Avatar
just because of the mipmap level?
Avatar
I'm not really sure what is causing it but there was that one blue map someone reported, moving around it feels reaally off
Avatar
but
11:22
it also appears on old GL with 2k screen
11:22
it's just because the texture is really shitty
Avatar
do you remember the map name?
Avatar
the issue is probs still open
11:23
Piranha
11:24
yeah pretty sure on 2k screen it looks same glitchy
11:24
and thats because on 2k the texel offsets are randomly luckly correct xD
Avatar
I don't have a 1080p screen to look at it on
Avatar
i could imagine on 60hertz its even more horrible
Avatar
well that only leaves borders, I guess we could live with those, or maybe apply some batch processing to fix old maps assets
Avatar
but on ~144 it just looks like it was somehow downscalled to 60heartz
11:26
i think deens has 4k screen
11:27
he can test at 1440p
Avatar
my screen is 1440p
Avatar
ah yeah thats what i mean with 2k
11:28
its just easier to write then 1.4k xd
11:28
jk
Avatar
I don't have a 144hz one tho
Avatar
but doesnt it look weird on old renderer then too?
11:28
for me it certainly does
11:28
fokkunaut just tested it with his 720p monitor where the texel offsets are wrong causing bluring
11:29
and then the effect isn't that huge (edited)
Avatar
it happens with the old renderer too yeah, you are right
Avatar
on some maps i have really low fps in entities with opengl
Avatar
that map is really a health hazard
Avatar
bcs of arrows probs
11:31
opengl 3 buffers the entity text
11:31
or when there are many teleporters
11:31
so try them with opengl3..
Avatar
teleporters = low fps?
Avatar
but opengl3 suffers under the current gui xD
11:31
yes
11:31
teleporter text
11:32
i mean the numbers on them
11:32
1-255
Avatar
they are rendered text
Avatar
are you fixing that?
Avatar
and text is slow as u see in the disscussion above xD
11:32
its fixed already
11:32
the problem opengl3 isnt standard is a problem with streaming vertices
11:32
and i am trying to fix that for all ingame components
11:33
so weaker pcs can atleast run on a level as before and have the benefits of better zooming and entity text rendering
Avatar
@Deleted User apparently @Crash has the weird effect on piranha with ogl3 but doesn't without
11:36
he tested it on a 1080p 144hz monitor
Avatar
yeah the texel offsets
11:39
the caluclation that was used is random
11:39
for some resolution it fits for tothjers it kills borders
Avatar
@Deleted User is the border issue something you could easily make into a toggle?
Avatar
not really tbh, it would require another shader using the same texel calculation as the old renderer, but performing that on the gpu is probably not as fast because GPU cores are pretty slow
Avatar
maybe we could roll out ogl3 earlier and toggle the proper border behaviour when we have thought about fixing the old assets
Avatar
but that should really only affect a few maps
11:43
i play on 2k since along, and this Piranha is pretty much the only map that looks strange
Avatar
well huge blocks of freeze have "dots" in the middle now
Avatar
thats intended
11:43
look in the entites
11:43
it's acutally on the texture
11:44
11:45
u never saw it because the texel calculation was so bad
11:45
but actually its some kind of grid
11:45
and pretty useful too xD
Avatar
oh true, I forgot we already talked about this
11:45
sry, way too early in the morning to be thinking
Avatar
some other topic, when i look at client problems in the forum there were alot of "mouse is laggy" things, have they all fixed these problems
11:55
my current pr i already mentioned that a friend had mouse laggs too because of the incorrect update times for cl_refresh_rate's default value
11:56
i wonder if some ppl might encountered exactly that issue, but they either stay with ddnet9 or it was the old mouse input appearently
Avatar
@Deleted User never figured it out tbh, everyone feels different about the mouse
Avatar
For speedrunning alone in a team this "Everyone in your locked team was killed because '%s' %s." is very annoying. So better only print it if more than 1 tee is in the team.
13:14
[ddnet/ddnet] New branch created: staging.tmp
13:14
57cb136 Remove teamkill message on solo teams - ChillerDragon cf6db5a [ci skip] -bors-staging-tmp-1066 - bors[bot]
13:14
57cb136 Remove teamkill message on solo teams - ChillerDragon 731c329 Merge #1066 - bors[bot]
Avatar
57cb136 Remove teamkill message on solo teams - ChillerDragon 731c329 Merge #1066 - bors[bot]
Avatar
heya guys, yall know this map change on the same server teleport thingy? 😄 its a tile where you get teleported into another map while being on the same server with same players. its rly cool but ddnet client sometimes crashes because of this "map change". fruchti and me kind of debugged it and came to the solution its the ghost from ddnet client. even if you turn it off its not fully turned off and he deleted the whole ghost feature for his ddnet based client and there its working. any ideas how we fix it in server(if possible) or better your fix the client?
Avatar
Sure, show me (or another dev) how to make it run and we can run the client in debug build in a debugger and fix the issues
Avatar
@fokkonaut could you create an issue? 😉
Avatar
i thought only one blocker server has this feature o.O
Avatar
ChillerDragon 2018-03-06 15:11:02Z
FruchtiHD is working on some adventure stuff
Avatar
it would be cool. this way there could be real secret areas like in this case an adventure. if you see an adventure map now you can just spoinler yourself everything.
Avatar
ChillerDragon 2018-03-06 15:19:52Z
true
Avatar
😮 adventure map 😮
Avatar
chiller omg
15:57
dont leak man @ChillerDragon
Avatar
ChillerDragon 2018-03-06 15:58:08Z
its in public chat bro
Avatar
aber wie man sieht wusste es nicht jeder
Avatar
ChillerDragon 2018-03-06 15:59:17Z
ok sry
15:59
didnt know it is a secret
Avatar
what's written in dev chat stays in dev chat.
Avatar
ChillerDragon 2018-03-06 15:59:53Z
and in irc
15:59
xd
Avatar
xd
Avatar
Should reduce number of syscalls significantly. Why are we not using it again? I remember the timeout parameter is broken, but we could use it non-blocking instead.
Avatar
This uses the Unicode confusable data together with judging how close two strings are by using the Levenshtein distance. Adds the commands name_ban, name_unban and name_bans. Kicks players who join using a banned name and doesn't allow ingame players to change their names to the banned ones.
Avatar
@Learath2 ^
Avatar
definitely way more comprehensive then I'd have done it 🙂 I'll review it ih an hour or so
Avatar
kicking for changing to a banned name doesn't sound like a good idea
Avatar
it doesn't allow them to change it to those names from what I see (edited)
17:02
i thought it kicks you
Avatar
@jao in the description: "Kicks players who join using a banned name and doesn't allow ingame players to change their names to the banned ones." 😛
Avatar
no worries, just found it funny
Avatar
wait wait
17:14
Adds the commands name_ban, name_unban and name_bans. Kicks players who join using a banned name and doesn't allow ingame players to change their names to the banned ones.
17:15
this is the exact same shit i added to my server a couple weeks ago
17:15
even down to the names of the commands
17:15
🤔 🤔 🤔
Avatar
I pondered using ban_name but it didn't have a good equivalent of bans
17:16
@noby also, I bet your shit is not as fancy as mine 😛
17:17
does urs save in a file tho
Avatar
no, it's supposed to be in the config file right now
Avatar
but good idea for the future
17:17
^^
Avatar
I think we should keep it as a config file, I like that we just have one file format
17:20
and we already have ways of deploying them easily like exec
Avatar
but then it will work like bans currently do and ull have to manually add them to the cfg if u want them to stay?
Avatar
[quakenet] <Learath2> it's a thousand times simpler then implementing a whole new file format, adding commands to load/reload it
Avatar
How to debug windows?
17:50
fokkonaut's client crash only happens on windows
Avatar
on windows?
Avatar
[quakenet] <Learath2> visual studio?
Avatar
I don't have windows
17:50
but I have wine
Avatar
[quakenet] <Learath2> mingw gdb maybe?
17:51
[quakenet] <Learath2> I used to use gdb for a while, it works decent enough
Avatar
How to set CXXFLAGS with cmake?
17:53
I need -gstabs
Avatar
set it before the first cmake run
18:10
=>0 0x000000000044fd90 _ZN10CMapSounds8OnRenderEv+0x55a(this=(nil)) [/home/deen/isos/ddnet/ddnet-master/src/game/client/components/mapsounds.cpp:167] in ddnet-debug (0x000000000033e060) 1 0x0000000000497612 _ZN11CGameClient8OnRenderEv+0x5d(this=0x6) [/home/deen/isos/ddnet/ddnet-master/src/game/client/gameclient.cpp:623] in ddnet-debug (0x000000000033e140) 2 0x000000000040c4a7 _ZN7CClient6RenderEv+0x1be(this=0x3f008081) [/home/deen/isos/ddnet/ddnet-master/src/engine/client/client.cpp:1037] in ddnet-debug (0x000000000033e1d0) 3 0x0000000000413338 _ZN7CClient3RunEv+0xd21(this=(nil)) [/home/deen/isos/ddnet/ddnet-master/src/engine/client/client.cpp:2825] in ddnet-debug (0x000000000033e270) 0x000000000044fd90 _ZN10CMapSounds8OnRenderEv+0x55a [/home/deen/isos/ddnet/ddnet-master/src/game/client/components/mapsounds.cpp:167] in ddnet-debug: movl 0x0000000000000004(%rax),%eax
18:11
it seems like after the map change we still run the OnRender stuff with invalidated data
Avatar
=>0 0x000000000044fd90 CMapSounds::OnRender()+0x55a(this=(nil)) [/home/deen/isos/ddnet/ddnet-master/src/game/client/components/mapsounds.cpp:167] in ddnet-debug (0x000000000033e060) 1 0x0000000000497612 CGameClient::OnRender()+0x5d(this=0x6) [/home/deen/isos/ddnet/ddnet-master/src/game/client/gameclient.cpp:623] in ddnet-debug (0x000000000033e140) 2 0x000000000040c4a7 CClient::Render()+0x1be(this=0x3f008081) [/home/deen/isos/ddnet/ddnet-master/src/engine/client/client.cpp:1037] in ddnet-debug (0x000000000033e1d0) 3 0x0000000000413338 CClient::Run()+0xd21(this=(nil)) [/home/deen/isos/ddnet/ddnet-master/src/engine/client/client.cpp:2825] in ddnet-debug (0x000000000033e270) 0x000000000044fd90 CMapSounds::OnRender()+0x55a [/home/deen/isos/ddnet/ddnet-master/src/game/client/components/mapsounds.cpp:167] in ddnet-debug: movl 0x0000000000000004(%rax),%eax
18:13
c++filt!
Avatar
winshit* pliz
Avatar
gfx_asyncrender_old 0 doesn't help
18:17
hm, "this=(nil)"
18:18
does that mean CMapSounds object is nullptr or pLayer is?
Avatar
sure
18:19
(I would say CMapSounds)
Avatar
CGameClient=0x6 sounds like a nullptr+6, too
18:21
mh.. but why 0x6
Avatar
any solutions?
Avatar
@fokkonaut you said only with ghost?
Avatar
fruchti said the problem is the ghost. since he made a ddnet client edit and completely removed ghost out of it (bcs he said its always kind of active even when its off) and this client works
Avatar
meh, i can't get gdb/winedbg working
18:48
maybe because of multithreading
Avatar
gdb works with win32
19:05
but both thisand pLayer look fine
19:05
and still segfaults
Avatar
[freenode] <nemo> heinrich5991: you were talking about rewriting ddnet in rust?
Avatar
will be like "unsafe" function here unsafe funtion there
19:08
classic rust
Avatar
[quakenet] <heinrich5991> nemo: all my teeworlds-related stuff is https://github.com/heinrich5991/libtw2
libtw2 - Some Teeworlds stuff in Rust
19:10
[freenode] <nemo> oh wow
Avatar
@Deleted User the good thing is all the parts that can be in safe code 😉
Avatar
xD
19:10
@deen what are u doin to crash the client
Avatar
[freenode] <nemo> heinrich5991: did you read kyren's AMA?
19:10
[freenode] <nemo> (her rust one)
Avatar
kyren? who's that?
Avatar
[freenode] <nemo> heinrich5991: oh. kyren is an awesome programmer who works for chucklefish which was a company created by tiyuri who did most of the hedgewars art
19:11
[freenode] <nemo> heinrich5991: she mostly wrote starbound
19:11
[freenode] <nemo> heinrich5991: anyway. this was my fav comment of the AMA https://www.reddit.com/r/rust/comments/78bowa/hey_this_is_kyren_from_chucklefish_we_make_and/dot6uxk/
I got back up to answer this. > To be clear, comparing floats isn't UB, it's just really easy to get wrong. But totally safe to do. This is why...
19:12
[freenode] <nemo> heinrich5991: mostly 'cause I had no idea that was the case either
19:12
[freenode] <nemo> also the sheer number of edits
19:14
[quakenet] <heinrich5991> ah, I saw that one :D
19:14
[quakenet] <heinrich5991> the comment
Avatar
@Deleted User server switches map i think
Avatar
i tried with mingw but i cant crash it
Avatar
it's only on one specific server
Avatar
ah ok
Avatar
going through mapchange tele
19:17
@fokkonaut can show you
Avatar
yeah nvm, its their closed source project xd
Avatar
i have it open in gdb now where it segfaulted, but everything looks good
Avatar
well maybe its the mingw version?
Avatar
@Deleted User wanna test it yourself? (edited)
Avatar
suddenly this is invalid pointer, this gdb/wine integration is driving me crazy
Avatar
well so or so heinrich has to be right it must have todo with the gameclient
19:21
and that means very probably some buffer overflow
Avatar
vanilla works btw, dk if it helps 😄
Avatar
probably some use-after-free or so
Avatar
the question is if its on every compiler, then we could valgrind it probably
19:23
if its just under mingw, dunno the tools for that
19:23
well maybe u can valgrind over wine xD
Avatar
@Deleted User wanna try it?
Avatar
yeah i can give it a try
Avatar
@Learath2 the hour is over. have you started yet? 😛
Avatar
[quakenet] <heinrich5991> nemo: very cool AMA
Avatar
so 10.8.5 is the one crashing appearently
19:37
but 10.8.6 is working
19:37
according to fokkunaut
19:37
and with ddnet 11.x i dont get any crashes neither vs nor mingw
Avatar
ddnet 11 crashes for me on win
Avatar
mhh strange
Avatar
@Deleted User everything self-compiled? or from ddnet.tw
Avatar
Both
19:44
It just doesnt want to crash
Avatar
valgrind --tool=memcheck doesn't report anything suspicious
Avatar
i managed it to crash ddnet 10.8.6 and another client by trying it 1000 times (xD) with pressing random stuff between the maps (so while the change). both client usually didnt crash but at one point they both crashed
19:46
but those crashed 1 time from 1000 and ddnet 11.0.3 crashes like 999 of 1000
Avatar
is there sth like https://en.wikipedia.org/wiki/Rr_(debugging) for windows?
In computing, rr is a debugging tool designed to record and replay program execution. During the replay phase, rr provides an enhanced gdb debugging experience that supports reverse execution. rr was originally developed by Mozilla to debug Mozil...
Avatar
Well vs provides dumps that can be loaded at the crash point but dunno if it traces something
Avatar
What I figured out: The crash happens after loading the new map. this pointer on win32 was still fine, but CComponent part inside was broken, on win64 this pointer of CMapSounds was broken too
Avatar
@deen
19:52
i found a way (at leats for me) to reproduce the crash every time
19:53
it may sound weird but you have to press "a, d, space, mouse1, mouse2 at the same time (just spam it)" and move your mouse in a circle
19:53
it works for me xD
Avatar
while going through the map-change?
Avatar
the input is mem_copied over our data? 😄
Avatar
Mhh probably just the input that can't be handled bcs of broken geclient
19:54
Game*
Avatar
guys try it out
19:55
spamming a, d space, mosue1, mosue2 + rotating mouse in a circle fast
Avatar
I do after the football match xd
19:55
gl
Avatar
But would be strange if only mingw is affected
Avatar
not the first time to have win-only crashes
Avatar
deen can you join?
Avatar
what for?
Avatar
testi it, maybe it only affects me (which i dont think)
Avatar
no, I can reproduce it already, no need
Avatar
okay
19:59
but whats with 11.0.3? it crashes almost Always
19:59
(havent tried that spam keys in vanilla Client)
Avatar
I tried disabling ghost, race recorder, map sounds and playing around with controls input, nothing worked. I guess the next step would be to stop at the last state change and step through with the debugger to look if something suspicious is happening. But I give up for now
Avatar
can you give instructions on how to reproducibly crash the client, @deen ?
Avatar
@deen is there any other web to play teeworlds but not with just ddnet server?
20:42
servers*
Avatar
no, servers need support for that
Avatar
aight
Avatar
compile with -DWEBSOCKETS=ON
20:43
and then ping someone with access to add you to teewebs
Avatar
@heinrich5991 do you have any idea why it takes me so long to refresh the whole browser, for 10 minutes its stuck at 24% and I have a good internet
20:46
AND the internet tab doesn't show servers at all, only Favorites
Avatar
mh
20:46
high packet loss?
20:46
let me check
20:46
works fine for me
Avatar
it works well for others but
20:46
I've had this for like 7 months lol
20:46
and HAD the same internet before too
20:47
+ it worked pretty good, idk why it's shit now
20:47
it's annoying because I can't get to refresh all of the servers in a few minutes so I can follow anyone lol
Avatar
we should get a https master server :/
Avatar
that's why I asked if there's any web that shows all of the servers, so I can just check from there and then join
20:48
status in the ddnet page takes too long to refresh too
20:48
update* could be the right word
Avatar
there used to be a discord bot in the fng chat that pulled an updated master server list and posted it as pastebin so people could add them all to favorites and find servers even when the master was ddosed
21:31
idk what happened to it
Avatar
oh that bot that spammed chat once a day xd
Avatar
ya great bot
21:47
u should add it here
Avatar
@jao
21:57
videocall with me right now pussy
Avatar
[ddnet/ddnet] New branch created: staging.tmp
23:04
b138f54 Ignore another file generated in build directories - heinrich5991 2f0f3c2 [ci skip] -bors-staging-tmp-1069 - bors[bot]
23:04
b138f54 Ignore another file generated in build directories - heinrich5991 9e83217 Merge #1069 - bors[bot]
Avatar
b138f54 Ignore another file generated in build directories - heinrich5991 9e83217 Merge #1069 - bors[bot]
23:15
[ddnet/ddnet] New branch created: staging.tmp
23:15
d118fbd Fix build with -DCLIENT=OFF on macOS - heinrich5991 f1d4772 Merge #1070 - bors[bot]
Avatar
d118fbd Fix build with -DCLIENT=OFF on macOS - heinrich5991 f1d4772 Merge #1070 - bors[bot]
Exported 389 message(s)