Time Nick Message 06:24 nerzhul hello, i'm pushing code modernization on chat.cpp and cavegen.cpp 06:53 nerzhul pushing also in client.cpp/client.h 11:42 Fixer https://forum.minetest.net/viewtopic.php?f=6&t=18293 11:52 nerzhul Fixer, did you use multiple emerge threads ? it's absolutely a bad idea with sqlite 11:52 Fixer nerzhul: not my bugreport 12:29 nerzhul guyz i published a configuration proposition: #6252 12:29 ShadowBot https://github.com/minetest/minetest/issues/6252 -- Reduce dedicated server step to 0.09 by nerzhul 12:29 nerzhul we optimized core many and many times, i think we can now reduce serverstep a little bit to enhance server reactivity by default for all users 12:30 nerzhul 10% sounds reasonable 12:30 nerzhul i run my server with 0.05 since 3 years without problems, but i ported many features to core engine 12:36 nerzhul don't hesitate to comment, end users too 12:48 Fixer i'm currently looking at light curve pr 12:52 nerzhul oh it's trivial change, it's only visible on loaded servers 12:52 nerzhul it's more a taste enhancement to reduce a little bit server latency 12:56 Fixer damn, that camera above head change on older servers is so annoying 12:56 Fixer unusual 14:09 nerzhul i updated dev.minetest.net/Changelog page 14:10 nerzhul 1 months of commits to report (not all reported, only user changes) 15:28 Lymkwi_ Hello there fellas I have a small question : what are packets starting with the null byte after the protocol ID supposed to do? 15:28 nerzhul oo it's a good question nobody cannot answer without reading code i think 15:28 nerzhul i suspect it's used as a keepalive 15:28 Lymkwi_ It just says "do not use" 15:29 Lymkwi_ I assume so 15:29 Lymkwi_ But it locks a player slot, and in a few lines of python I was able to lock any server and prevent anyone from joining 15:29 Lymkwi_ I didn't see anything server side. Client side just said "too many players", and all I had to do was send, every ten second or so, a small payload of a dozen bytes 15:30 Lymkwi_ So I thought "well that's probably not the intended effect" and I went here to ask you about that 15:30 Lymkwi_ I mean. I paralyzed MFF's server a few minutes ago and apparently nobody noticed but I couldn't even join myself. 15:35 nerzhul Lymkwi_, i'm pretty sure it's easy to lock any server using any such thing yes 15:36 Lymkwi_ Less than 25 lines of python can do that, apparently 15:36 nerzhul you can do a such thing on any tcp apache default server by using python and opening 200 tcp sockets too 15:36 nerzhul yes, with some libs you can do this eastyly 15:37 Lymkwi_ Rudy or Slow loris, yes 19:39 sfan5 anyone have any comment on https://github.com/minetest/minetest.github.io/pull/103 ? 19:39 sfan5 if not then i'd merge this later 19:39 nerzhul ok for me 19:40 nerzhul fuck travis macosx :( 19:40 fwhcat ok even if I don't have a mac ^^ 20:03 nerzhul merging #6255 in ~ 10 mins 20:03 ShadowBot https://github.com/minetest/minetest/issues/6255 -- Cleanup various headers to reduce compilation times by nerzhul 20:03 nerzhul it's nice to seem gcc longest builds reduced from 12 mins to 10 mins :p 20:04 nerzhul less time spent on CI, more commits, faster heh 20:04 nerzhul all header were not optimized but many common headers, we can do better in a later commit :) 20:04 nerzhul thanks sfan5 for the review 20:08 nerzhul sfan5, maybe 6254 should be private? the fix will be not easy 20:08 nerzhul except if we can change the session counter to count only CS_Active sessions instead of session list size 20:10 sfan5 it should only count cs_active yes 20:11 nerzhul i merge the include fix and look at it 20:11 nerzhul build is green except macosx stuck 20:12 nerzhul https://github.com/blog/2415-introducing-embedded-code-snippets nice 20:16 nerzhul ok i can easily mitigate the slot problem 20:17 nerzhul but i cannot easily fix the memory overhead if this packet is flooded to server 20:18 lisac #6257 20:18 ShadowBot https://github.com/minetest/minetest/issues/6257 -- Make world creation menu automatically generate a random world name by lisacvuk 20:18 nerzhul sfan5, does isUserLimitReached sounds good for a function checking if slots are full ? 20:18 lisac can someone review? 20:19 nerzhul function name* 20:19 sfan5 it doesn't need to be separate functions tho 20:19 sfan5 just change 20:19 sfan5 if (m_clients.getClientIDs(CS_Created).size() >= g_settings->getU16("max_users") && 20:19 sfan5 to 20:19 sfan5 if (m_clients.getClientIDs(CS_Active).size() >= g_settings->getU16("max_users") && 20:19 nerzhul the check is currently ugly i want ClientInterface to have a function :p 20:19 sfan5 fine by me 20:19 sfan5 that name sounds okay 20:20 nerzhul also we have two place for this check, the compat code too 20:20 sfan5 right 20:20 nerzhul (which will be removed at release, 2 years passed for this proto) 20:26 nerzhul sfan5, #6258 20:26 ShadowBot https://github.com/minetest/minetest/issues/6258 -- ClientInterface: add a function to verify (correctly) if user limit was reached by nerzhul 20:26 nerzhul i should just ensure a thing 20:26 nerzhul because we have transitional states 20:27 sfan5 nerzhul: perhaps add a comment inside that func why you use _Active instead of _Created 20:28 nerzhul regarding clientiface.h it seems CS_Active is not the best state to check 20:28 nerzhul or, we should check that slot multiple times in initialization 20:28 nerzhul because if a player is auth and another is initing, both can connect and we can have max_user = 16 > 15 :p 20:29 sfan5 no 20:29 nerzhul init is the first packet 20:29 sfan5 the second player will get rejected in their INIT pkt 20:29 sfan5 nah 20:29 sfan5 you can create a connection w/o sending a pkr 20:29 sfan5 pkt* 20:29 nerzhul you send init, server looks slots and said ok, switch you to hellosent 20:30 sfan5 you skipped a whole state here 20:30 nerzhul then a second comes, send init, server looks, slots are alaways ok, no more CS_Active added, he is in hellosent 20:30 nerzhul which ? 20:30 sfan5 CS_Created 20:30 nerzhul CS_Created is the session object creation 20:30 nerzhul but check is done in Init 20:31 nerzhul the first packet handling 20:31 sfan5 this will work if the check counts no. of players in a state "higher" than CS_Created 20:31 nerzhul if we check active, all current users between init and active (excluded) will not be counted as max_user 20:32 nerzhul then you can have, 14 users in Active state, 5 in InitDone state, 3 in HelloSent state 20:32 nerzhul for 15 slots 20:32 sfan5 yes yes i understand 20:33 nerzhul AwaitingInit2 can be better 20:33 nerzhul or 20:34 sfan5 according to the flowchart only legacy clients have that state 20:34 nerzhul no 20:34 sfan5 wait no 20:34 sfan5 but then you'd be skipping HelloSent 20:34 nerzhul yes, but it's not important 20:34 sfan5 why not? 20:34 nerzhul the most important is to re-do the check somewhere before switching to CS_Active 20:34 sfan5 it's past the init pkt meaning you could bypass the limit 20:35 sfan5 hm 20:35 nerzhul maybe re-do it before sending content ? 20:35 sfan5 well that would mean whichever client is faster at auth gets in 20:35 sfan5 why not just change the counting to keep this simple? 20:35 nerzhul what do you want ? 20:36 nerzhul i think checking it just before making session active ensure you cannot have more CS_Active users 20:36 sfan5 count every state between CS_HelloSent and CS_Active 20:36 nerzhul one in init time to drop bad users and on late 20:36 nerzhul oh 20:36 nerzhul yes it's possible 20:37 nerzhul and we should re-do the same check before setting session to CS_HelloSent flag 20:37 sfan5 then only missing are: Created, Denied, Disconnecting, SudoMode 20:37 nerzhul to ensure we cannot bypass the limit 20:37 sfan5 why not add an assert there 20:38 nerzhul you will crash server if a rogue client happen, just check the session and discard it properly is better than crash due to external cause :p 20:38 sfan5 well it doesn't need to be an assert 20:38 sfan5 but make clear that this should not happen and whoever sees it should open a bug 20:39 nerzhul i know this will happen 20:39 nerzhul and we have the fix, discard the user 20:39 nerzhul then discard :p 20:44 nerzhul hellosent state is special 20:44 nerzhul init switches from CS_Created to CS_HelloSent in the init packet 20:45 nerzhul and do the intermediate check for HelloSent 20:45 nerzhul then it seems good without any more 20:45 nerzhul yes okay, letting like this 20:48 nerzhul #6258 updated, if you are okay i can merge it when build is okay 20:48 ShadowBot https://github.com/minetest/minetest/issues/6258 -- ClientInterface: add a function to verify (correctly) if user limit was reached by nerzhul 20:53 sfan5 looks good to me 20:55 sofar neat cleanups btw 20:55 nerzhul sofar, which cleanup ? 20:55 sofar the loop stuff etc 20:55 nerzhul somebody should do it xD 20:55 sofar plus header cleanups 20:56 nerzhul yeah i take time to make mt cleaner, years of dev without rechecking it make it crazy sometimes 20:56 sofar could we switch to #pragma once? 20:56 nerzhul i want but no consensus 20:56 nerzhul maybe i should open an issue to vote ? 20:56 sofar I'm all for it, #define BLA_HEADER is dumb 20:57 sofar there's not a single check for BLA_HEADER anywhere 20:57 nerzhul yeah i agree, it's not in the norm but it's supported by all decent ocmpilers :p 20:57 nerzhul and you don't pollute your compiler with macros :p 20:57 sofar we have like 200+ header files 20:57 sofar well, $somelargeval 20:58 nerzhul yeah but with last PR you include less files per cpp :D 20:58 nerzhul at a point we can compile MT on a RaspberryPI 1 without trigger oomkiller haha 20:58 nerzhul triggering* 20:59 nerzhul sofar, can you vote on my post on 6252 please instead of a separate comment ? :p 21:00 nerzhul and if sfan5 or sofar you want 0.075 it can be possible it think without penaly on current engine 21:00 nerzhul penalty* 21:00 nerzhul 0.09 is safer for me, but we can reduce it a little bit more if needed 21:00 sofar ahh sure 21:00 sofar done 21:01 nerzhul ty :D 21:04 nerzhul sfan5, nore rubenwardy sofar please vote on #6259 21:04 ShadowBot https://github.com/minetest/minetest/issues/6259 -- C++11 header guards: switch to #pragma once 21:04 nerzhul i hope we can have more votes, smalljoker is okay for it too 21:04 nerzhul only sfan5 doesn't told us if he wants and paramat doesn't care if i remember 21:06 nerzhul who stole my travis build slots ! 21:08 nerzhul sfan5, can you re-take a look at #6153 when you get time, it's a nice thing :) 21:08 ShadowBot https://github.com/minetest/minetest/issues/6153 -- Windows: Cpack wix installer by adrido 21:09 sfan5 sure 21:11 rubenwardy https://github.com/buildaworldnet/IrrlichtBAW/releases/tag/v0.2.3 21:14 sfan5 their irrlicht is still useless for us since they ripped out all GUI stuff 21:16 nerzhul oh :( 21:16 nerzhul time to build a 3d UI xD 21:16 Fixer M O T I F 21:17 rubenwardy at some point it may be worth using a non-irrlicht GUI 21:17 Fixer nerzhul: in a few seconds will see a results for compiling times improvement** 21:18 rubenwardy some Irrlicht devs themselves told me that the GUI in Irrlicht is purposely simple 21:18 nerzhul rubenwardy, i started to test a XML/HTML usage to replace formspecs, not using irrlicht or not using current formspec irrlicht fixes is just a pain :p 21:18 nerzhul Fixer, on windows with VS i'm nore sure you will see many thigns if VS used a precompiled header 21:19 Fixer nerzhul: 3 seconds faster... 6 min in total, probably within statistical error, no effect, msys2/mingw64 21:19 nerzhul mingw doesn't have improvements, only gcc on linux and a little bit on clang 21:20 nerzhul and all is not finished yet, maybe i will continue tomorrow but i was working on various modernizations 21:21 nerzhul sfan5, can you vote on 6259 please too ? 21:22 nerzhul we currently have 3 coredev votes, if you and smalljoker votes too i will start the PR if nobody else wants to replace all headers, and we can add a dev rule for it :) 21:22 sofar nerzhul: rapidxml? 21:22 nerzhul sofar, libxml2 21:22 sofar isn't that way too bulky? 21:22 nerzhul wait 21:22 nerzhul i can't remember :p 21:22 nerzhul libxml2 is another project i use 21:23 sofar rapidxml would be compatible and we'd include it in-tree 21:23 nerzhul yeah i use libxml2 21:23 sofar MIT/Boost licensed, C++, 43kb download size (zupped) 21:23 nerzhul irrlicht has a xml parser too :p 21:24 sofar well I'd keep the reliance on irrlicht to a minimum if we can 21:24 nerzhul https://gitlab.com/project-demeter/core/blob/7e9219b7994d50d9630c8a7f74c3ebbd7b0cd87c/client/menus/mainmenu.xml here is my xml main menu :p 21:24 nerzhul my main problem is the event handling 21:24 nerzhul i haven't found a good wait to handle events 21:25 nerzhul way* 21:25 nerzhul (i'm tired sorry) 21:25 nerzhul the XML library is not very important here 21:26 sofar it is if it increases size of minetest and makes it hard to build on win/mac etc. 21:26 nerzhul here is the parsing 21:26 nerzhul https://gitlab.com/project-demeter/core/blob/7e9219b7994d50d9630c8a7f74c3ebbd7b0cd87c/src/client/contrib/ui_menu.cpp#L212 21:26 nerzhul no real recursion, but i read all node elements :p 21:26 nerzhul with a nice function pointer handler heh 21:27 nerzhul sofar, if rapidxml is tiny why not 21:27 nerzhul XML loading permits to have nice interface defintions intead of raw strings and it's evolutive :) 21:29 nerzhul sofar, it seems rapidxml is as easy as libxml parsing for our needs and how i used libxml2 :) 21:29 sofar no worries, it was a suggestion 21:29 nerzhul yes but i will not work on a such thing you can if you are crazy :D 21:29 sofar ls 21:29 sofar wheps 21:29 nerzhul i prefer finish code maintenance before 21:30 nerzhul i need to finish passing clang-tidy analysis on the whole code, only 25% was analysed/fixed , and if we want pragma we need a big commit, same thing for header maintenance, we are at 30% 21:31 sofar oh, if you want me to do another coverity scan when you're done with that 21:31 nerzhul i will continue to do little trivial commits on the morning to modernize step by step code using clang tidy 21:31 sofar let me know and I'll upload a new scan 21:31 nerzhul if you want we can do that later yes 21:31 sofar at least try and do one scan every release or so 21:31 nerzhul rubenwardy talked about lcov and gcov it can be good but we need to cover the whole code heh 21:32 nerzhul sofar, yes, using various tools 21:32 sofar yup 21:32 nerzhul clang-tidy can be integrated in CI when i finished to pass it over files, if needed 21:32 sofar lcov is nice 21:32 rubenwardy having code coverage analytics is a good way to encourage tests. Although maybe not so much with MT 21:32 nerzhul it will permit to ensure the common sense rules are used by PR owners 21:32 nerzhul rubenwardy, why did you close the PR ? 21:33 rubenwardy because I'd rather not leave such a small PR open whilst it needs lots of work 21:33 nerzhul having it in gitlab-ci can be nice, daily report generation, just before daily snaps 21:33 nerzhul you can just take the links i set and copy/paste code :p 21:34 nerzhul 2 gitlab ci steps and a little cmakelists fix and it's good 21:34 nerzhul the only thing i don't understand with gcov/lcov is how he thinks it's covered or not, on the library i own i have many unittests on many parts and covered parts are lower than real unittested parts 21:36 sofar unit tests work well for codepaths that catch rare errors 21:36 sofar unit tests does lousy for code that gets run thousands of times 21:48 nerzhul merging #6258 21:48 ShadowBot https://github.com/minetest/minetest/issues/6258 -- ClientInterface: add a function to verify (correctly) if user limit was reached by nerzhul 22:02 nerzhul merging #5279 in ~10 mins 22:02 ShadowBot https://github.com/minetest/minetest/issues/5279 -- New lighting curve by numberZero