00:16 <@deen> Looking for actual bugs now: Clang static analyzer found no bugs in ddnet source 00:20 <@deen> oh, or bam just fucks with it 00:20 <@deen> because bam doens't use CC and CXX variables 00:24 < eeeee> yeah bam is weird 00:28 <@deen> well, now I find out that pnglite is full of bugs, cool 00:32 < ddnet-commits> [ddnet] def- pushed 1 new commit to DDRace64: http://git.io/vvN4q 00:32 < ddnet-commits> ddnet/DDRace64 6d54de8 def: Get rid of clang static analyzer warnings 00:48 < eeeee> i also found a tw bug while porting websockets to vanilla 00:48 < eeeee> a string is copied into itself, crashes on mac 00:50 <@deen> i remember seeing that somewhere 00:51 < eeeee> https://github.com/def-/ddnet/commit/db4d4724432eca09d16ec1ad5c8f82fb92b668ee 00:51 < eeeee> ^^ 00:53 <@deen> right 00:55 < eeeee> someone should pull that to vanilla... heinrich5991, fstd: what's the C+ industry standard way of dealing with this kinda thing? 00:57 < eeeee> does everyone just check if it's the same reference or what 00:59 < fstd> you'd normally not end up in a situation like that in the first place, i think :) 00:59 < fstd> i've seen that back in a while too, and it made me wonder.. 01:09 < eeeee> well anyway, with that patch it seems to work 01:09 < eeeee> valgrind clean 01:09 < eeeee> deen: wanna try running vanilla servers with websockets? 01:12 <@deen> all the ddnet ones or what? 01:12 <@deen> eeeee: ^ 01:15 < eeeee> yeah 01:15 <@deen> have a repo somewhere? 01:15 < eeeee> https://github.com/eeeee/ddnet/tree/vanilla_ws 01:25 <@deen> eeeee: done 01:32 < eeeee> awsum thx, seems to work 01:33 <@deen> Now the vanilla people will also be happy with the js client =) 01:34 <@deen> maybe finally someone will play on our vanilla servers 01:34 < eeeee> i wonder what should be the default settings for server filter in js client 01:35 <@deen> show all servers, sort by ping? 01:35 < eeeee> if vanilla servers had more people i'd just default to vanilla-only 01:35 < eeeee> because there's no way someone new to teeworlds can figure out how to play ddrace by just joining a random server 01:35 <@deen> yes, that's pretty unfortunate 01:36 < eeeee> in vanilla they have a chance, people naturally just start with shooting everyone with a pistol 01:36 <@deen> haha 01:37 < fstd> "wie macht man diese kette?" 01:38 <@deen> i played TW without hook for the first weeks or so 01:38 <@deen> couldn't figure that out at all 01:38 <@deen> hard enough to jump around and aim already 01:39 <@deen> but the typical noob question on ddrace is "how do i join?" 01:39 <@deen> followed by "how do i restart?" 01:40 < eeeee> yeah and it's twice as hard in js client because you have to press ESC twice to get a menu 01:43 < fstd> can't you insert some sort of clippy for that? 01:43 < fstd> or for ddrace in general, like a tutorial map/server 01:43 <@deen> sure, please do that and make a PR 01:43 < eeeee> that'd be nice, but it's a lot of work 01:43 <@deen> I'm not really good at making noob-friendly stuff 01:44 <@deen> python hates me btw. it uses twice the amount of memory it should 01:45 <@deen> somehow the GC doesn't want to clean out the old data when i load new one 01:45 < fstd> that's probably because it's a crappy language 01:45 <@deen> I'm too lazy to rewrite my script 01:45 <@deen> s 02:19 <@deen> ha, fixed the memory issue with a few manual dels, 150 MB more RAM to play around with 04:26 < eeeee> got a new domain for js client: teewebs.net 04:26 < eeeee> can you test plx 04:35 < fstd> eight A and four NS records; very srs, much elastic 04:37 < eeeee> i spent like half a year making that shit so the actual delivery better fucken work perfectly 04:51 < fstd> two nameservers is sound. three nameservers is paranoid. four nameservers is a public statement that the stuff is basically guaranteed to fail, and with one fail, a cascade of failure isn't all too far :\) 04:51 < fstd> so better take one nameserver out to increase reliability 05:22 < eeeee> u mad 09:29 < Ryozuki> hi 09:31 <@EastByte> hello 09:32 <@EastByte> eeeee: lol dynamic screen resize nice! 09:33 < eeeee> yup 09:34 <@EastByte> hmm any chance to lock the mouse? 09:34 < eeeee> it should lock 09:34 < eeeee> doesn't it ask you to lock or sth? 09:35 <@EastByte> okay I missed the dialog 09:35 < eeeee> -_- 09:35 < eeeee> those browser guise should really make it more visible, deen missed it too 09:36 < heinrich5991> can I have a link, again? 09:36 < eeeee> teewebs.net 10:09 < eeeee> lol i keep testing my stuff on US servers and i don't think i ever seen people actually race there 10:10 < eeeee> they mostly keep pouring shit on each other in chat 10:10 < eeeee> guess should focus on testing the chat function 10:15 < heinrich5991> deen: you modified the secret password on the race_sanktoras map, huh? :) 10:30 <@deen> heinrich5991: i didn't 10:34 <@deen> eeeee: can't connect to the GER2 servers I think 10:34 < eeeee> um yeah, because tcp is filtered 10:34 < eeeee> i'll unfilter it i guess 10:34 <@deen> eeeee: and want any other mods with websockets? 10:35 <@deen> zcatch is pretty popular currently 10:35 < eeeee> idk 10:35 <@deen> anyway, can be added later 10:36 < eeeee> yeah let's see if anyone asks for it 10:36 <@deen> works really great 10:36 <@deen> haven't found a bug yet 10:37 < eeeee> i know a couple :P 10:37 <@deen> does it save settings somewhere? 10:37 < eeeee> not yet 10:37 <@deen> ok 10:37 < eeeee> i plan to add some local storage later 10:37 <@deen> ah, when you click on the editor, you can't get out again 10:38 < eeeee> uh i better just disable the editor 10:38 < eeeee> i didn't test that at all 10:38 <@deen> right 10:40 <@deen> dyncam seems a bit weird 10:40 <@deen> doesn't really look up and down for me, only left and right 10:41 < eeeee> hmm didn't notice. will check. 10:50 <@deen> eeeee: works pretty great, good job 10:51 < eeeee> thx 10:56 <@deen> even seems to work on phone browser 10:56 <@deen> missing a keyboard of course 11:00 <@EastByte> well, even starts on my 40eur tablet 11:00 <@EastByte> but then it runs out of ram 11:00 <@EastByte> one can't expect too much 11:04 <@deen> and i can't connect to our fullest blocker server because it hasn't been empty for a month, so no chance to update the server version 11:04 <@deen> eeeee: when do you want to go public with teewebs.net? 11:05 < eeeee> tomorrow i guess 11:05 <@deen> ok, then i should restart it 11:05 <@deen> i hope the 60 guys won't be mad 11:05 < eeeee> lol no 11:05 <@deen> no? 11:05 < eeeee> i'm not sure it can handle servers that big anyway 11:05 <@deen> is it bad to restart a block server? 11:06 <@deen> but many will sort by player number and try to go on the fullest server immediately 11:06 <@deen> bad if that just hangs 11:06 < eeeee> then they'll try something else? idk we can just filter out block servers (with br_exclude thing) 11:06 <@deen> i don't think we should 11:07 < eeeee> okay up to you then 11:07 < eeeee> but restarting 60 people is a bit.... 11:08 < eeeee> maybe could at least slowly drain the server 11:08 < eeeee> by passwording it or something 11:08 <@deen> meh, that's bad 11:08 < eeeee> is it worse than restarting? 11:08 <@deen> yes 11:08 <@deen> their friends can't join to them and they don't even notice 11:08 < eeeee> even when you have another block server with same map on same host? 11:09 <@deen> anyway, i can restart at night, when only 30 players are on 11:09 < eeeee> well they would notice since you'd also have a broadcast announcing that 11:09 <@deen> they don't/can't read etc 11:09 < eeeee> :/ okay then 11:12 <@EastByte> they probably cannot read at all 11:12 <@deen> you can announce that you will restart 10 times and afterwards they still think someone just hacked the server 11:12 <@EastByte> the shutdown cmd doesn't accept a reason right :/ 11:12 <@deen> i think so, never checked 11:12 <@EastByte> heh 11:13 <@EastByte> Console()->Register("shutdown", "", CFGFLAG_SERVER, ConShutdown, this, "Shut down"); 11:13 <@EastByte> but you could kick all with a sh script 11:13 <@EastByte> with reason 11:23 < ddnet-commits> [ddnet] def- pushed 1 new commit to DDRace64: http://git.io/vvAAS 11:23 < ddnet-commits> ddnet/DDRace64 84cdcdb def: Remove wrong include 11:42 <@deen> laxadedi: any idea why nimda doesn't like http://ddnet.tw/releases anymore? is it because i release 5 maps at a time? 11:56 < ddnet-commits> [ddnet] def- pushed 1 new commit to DDRace64: http://git.io/vvxTM 11:56 < ddnet-commits> ddnet/DDRace64 d4d5109 def: Timestamp index for race table for improved performance of /players/ 11:57 <@deen> time down from 600 to 100 ms on first request on http://ddnet.tw/players/deen/ (further request are cached anyway) 11:58 <@deen> all the time is spent to determine the 10 last finishes anyway, rest is prepared 12:10 <@deen> So, ddnet with mysql uses threads, but that's not supported by the Mysql Connector 12:11 <@deen> I'm wondering if that's the cause of our slow memory leaks 12:11 <@EastByte> gawd, I hate all the sql libs out there 12:12 <@deen> I guess we should have used a single thread with a queue instead, but i think in practice that may turn out to be less reliable 12:12 <@EastByte> I think it's the proper way 12:12 <@deen> haven't seen any problems with our threaded mysql, but that's probably because we have a low amount of threads around at any time 12:13 <@EastByte> would be easy to just add locks instead of making a queue system 12:13 <@deen> oh, it has locks! 12:13 <@deen> my bad 12:13 <@EastByte> ! 12:13 <@deen> so that's probably fine 12:14 <@deen> but a queue system could be nicer and cheaper I guess 12:14 <@deen> not that i'm going to implement it, but should be simple, because all the data is already passed to the thread, could just be passed to the queue in the exact same way 12:15 <@deen> ah, and i think it causes the memleaks, because only the ddrace and zcatch servers leak memory, exactly those that have mysql on 12:17 <@EastByte> great 12:17 <@EastByte> maybe do some valgrind magic? 12:17 <@EastByte> or do you think a queue would fix the problem? 12:17 <@deen> i tried many times to find that with valgrind 12:17 <@deen> i believe a queue could 12:18 <@deen> valgrind never reported anything, but it's probably not easy to report memory problems with all the threads flying around 12:18 <@deen> and i can't simulate it well, on my local system memory never increases, only on real servers, after a few days 12:19 <@EastByte> would be too easy otherwise :P 12:30 <@EastByte> deen: I looked into c2nim recently 12:30 <@EastByte> writing a C lexer/parser definitly is a PITA 12:47 < laxa> deen: isn't the caching supposed to be on the SQL instance ? 12:47 < laxa> or it's implemented on the SQL lib ? 12:49 <@deen> laxa: what caching? 12:51 <@deen> need to think more about mysql indices. down to 0 ms now =) 12:53 < ddnet-commits> [ddnet] def- pushed 1 new commit to DDRace64: http://git.io/vvxle 12:53 < ddnet-commits> ddnet/DDRace64 230ad1a def: Revert "Timestamp index for race table for improved performance of /players/"... 12:58 < laxa> deen: sql caching 12:59 <@deen> the sql server caches, yes. so? 12:59 < laxa> well, my question is 12:59 < laxa> caching should be on sql server side right ? 12:59 <@deen> right 12:59 < laxa> I am just curious :) 13:11 <@deen> EastByte: on the other hand, the ddnet test servers without sql also use much memory =/ 13:24 < ddnet-commits> [ddnet] timgame opened pull request #194: resend player/dummy info that filtered the server (DDRace64...DDRace64) http://git.io/vvxuw 13:28 <@EastByte> meh 13:29 <@EastByte> deen: we could try my own memory leck detection method 13:29 <@deen> ? 13:29 <@EastByte> counting the number of allocs and frees an substract :) 13:29 <@EastByte> has to be zero 13:30 <@EastByte> I guess valgrind is more advanced in this case :D 13:30 <@deen> some memory is never meant to be freed and should exist until program ends 13:30 <@EastByte> hm such memory has to be excludet 13:31 <@EastByte> I always used this method to verify my memorymanagement 13:34 < ddnet-commits> [ddnet] def- pushed 2 new commits to DDRace64: http://git.io/vvx2N 13:34 < ddnet-commits> ddnet/DDRace64 c4f011d timgame: resend player/dummy info that filtered the server 13:34 < ddnet-commits> ddnet/DDRace64 b0085ae Dennis Felsing: Merge pull request #194 from timgame/DDRace64... 13:36 <@EastByte> deen: do you know why connecting dummy takes so much time? 13:36 <@deen> EastByte: yes, that's because of the new security connection token stuff 13:36 <@EastByte> ah okay 13:36 <@deen> but please find a way to make it shorter 13:37 <@EastByte> I have 5 final exams the next 6 weeks :P 13:37 <@deen> coding is the best diversion? 13:38 <@deen> distraction* 13:38 <@EastByte> why would I want to be distracted? xd 13:38 <@EastByte> I use coding to learn math though 13:38 <@deen> because studying all day is boring 13:38 <@EastByte> ah so I stop studying... 13:39 <@EastByte> well one thing I would add first 13:39 <@EastByte> and indicator for dummy connecting process (button not clickable etc.) 13:39 <@EastByte> an* 13:39 <@deen> yes, I'm working on that right now 13:39 <@EastByte> ah great, good luck 13:47 < Teetime> deen: regarding the memory-leaks, do you know if exceptions are thrown? because then the memory allocated for the results/etc won't be deleted since the delete-parts will be skipped 13:49 <@deen> Teetime: i checked for that. The exception handling looks fine and should delete objects fine. Also didn't find a single thrown exception in the logs 13:54 < Teetime> hm.. guess it'll be difficult to find 13:54 <@deen> it's probably not even a leak 13:54 <@deen> i think some object store just grows slowly until it reaches a limit 13:54 <@deen> the limit is just a bit too high for my taste 13:56 < Teetime> but what object store could it be? 13:57 <@deen> bullets for example 13:57 <@deen> new CProjectiles get created a lot, but where are they removed? 13:57 <@EastByte> aren't they added to the entities list 13:57 <@EastByte> ? 13:57 <@deen> yeah, something like that 13:58 <@EastByte> hmm, someone needs to look into that 14:06 < ddnet-commits> [ddnet] def- pushed 1 new commit to DDRace64: http://git.io/vvxXW 14:06 < ddnet-commits> ddnet/DDRace64 c1aeebb def: Clean up a bit and hopefully fix player move on dummy connect 14:07 < ddnet-commits> [ddnet] def- force-pushed DDRace64 from c1aeebb to 9c1e65a: http://git.io/-BwJ2w 14:07 < ddnet-commits> ddnet/DDRace64 9c1e65a def: Clean up a bit and hopefully fix player move on dummy connect 14:10 < ddnet-commits> [ddnet] def- pushed 1 new commit to DDRace64: http://git.io/vvx1B 14:10 < ddnet-commits> ddnet/DDRace64 d690877 def: At least don't access invalid memory on server request. Should fix #173 14:16 < ddnet-commits> [ddnet] def- pushed 1 new commit to DDRace64: http://git.io/vvxDU 14:16 < ddnet-commits> ddnet/DDRace64 2e8ee2b def: Disallow spectators to participate in kick votes 14:16 < ddnet-commits> [ddnet] def- force-pushed DDRace64 from 2e8ee2b to 14b5766: http://git.io/-BwJ2w 14:16 < ddnet-commits> ddnet/DDRace64 14b5766 def: Disallow spectators to participate in kick votes... 14:17 <@EastByte> https://github.com/def-/ddnet/commit/d690877117ce1537200d34bb728c874637d0058b looks like a non-trivial client vuln 14:24 < ddnet-commits> [ddnet] def- pushed 1 new commit to DDRace64: http://git.io/vvx9o 14:24 < ddnet-commits> ddnet/DDRace64 16106d8 def: Fix menu bug with button pressing (more of a hack) 14:40 < ddnet-commits> [ddnet] def- pushed 1 new commit to DDRace64: http://git.io/vvxdk 14:40 < ddnet-commits> ddnet/DDRace64 8f02de3 def: Make dummy connecting a bit nicer: Show that dummy is being connected, disable unusable buttons 14:41 <@deen> EastByte: that fine? 14:48 <@EastByte> deen: well seems to work 14:49 <@EastByte> but the button still looks clickable 14:50 <@deen> yep, how to fix that? 14:50 <@deen> i didn't find a way 14:50 <@EastByte> hmm 14:51 <@deen> there is a "Checked" parameter, but that didn't change how it looks 14:52 <@EastByte> I guess there is no option for it 14:59 < heinrich5991> EastByte: there are lots of "non-trivial" client vulns 15:00 <@EastByte> seems so 15:55 <@deen> eeeee: GER2 tcp ports still look blocked 16:13 <@deen> eeeee: zcatch should now also have websockets, at least the servers that i could restart so far 16:14 <@deen> and i made http://web.ddnet.tw/ a link to http://teewebs.net/ , hope that's fine 21:46 < eeeee> deen: unblocked GER2, zcatch also seems to work now 22:21 <@EastByte> eeeee: what do you mean by "unblocked"? 22:21 <@EastByte> allowed to be requested using websockets? 22:23 < eeeee> EastByte: tcp was firewalled pretty hard on ger2, because GER2 was a ddos attack fallback for GER 22:23 <@EastByte> okay I understand 22:36 <@deen> eeeee: great, thanks 23:36 < eeeee> do you think i should make the js client auto-join on ddrace servers? 23:37 <@deen> either that, or we do auto-joins on ddnet ddrace servers in general 23:38 <@deen> anyone have an opinion on that? 23:38 <@deen> most people play 23:38 <@deen> only few spectate 23:38 <@deen> so it would make sense 23:41 <@deen> I'll just do that right now, let's see how many people complain 23:41 <@deen> if it's less than 50 it's fine i guess 23:42 < eeeee> kk 23:43 <@deen> done 23:46 <@deen> so, can I announce the teewebs link tomorrow? 23:46 <@deen> and put it in an iframe on ddnet.tw? :P 23:47 < eeeee> should prolly test the iframe ahead of time :P 23:47 < eeeee> i'll make a forum post for on teeworlds.com and ddnet forum later today 23:47 <@deen> wel, today is over in 10 minutes for me 23:48 < eeeee> tomorrow it is for you, then 23:54 <@deen> Looks like it loses focus easily: http://ddnet.tw/index2.php 23:56 <@deen> when i'm in it it's fine, but then i accidentally press TAB and lose focus. any trick to fix that? 23:57 < eeeee> tab doesnt unfocus it for me 23:58 <@deen> only after esc and changing windows 23:59 < eeeee> lol i closed the whole browser tab and now my pointer is permanently locked in firefox 23:59 <@deen> so many bugs^^ 23:59 < eeeee> shit i have to restart the whole firefox now