summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
26 hoursPerformance improvement, where it works: Let different udp worker threads have their own socketDirk Engling
44 hoursThe main event loop(s) now also catch an EINTR and return instead of blockingDirk Engling
45 hoursAdd concurrency testDirk Engling
45 hoursMake global torrent counter atomic and fix the setter and getterDirk Engling
45 hoursPlug in the new per-thread stats counter, also make sure that the ot_clean sleep does not stall tracker exitDirk Engling
46 hoursSecond half of moving the stat enum defines to trackerlogicDirk Engling
46 hoursPrepare having each thread keep their own stats to avoid data racesDirk Engling
46 hoursTurn malloc+memset into callocDirk Engling
47 hoursSome more g_now_seconds occurrencesDirk Engling
47 hoursForgot some g_now_seconds occurencesDirk Engling
48 hoursAll OSes now do have a cheap monotonic clock, so no caching thread is needed. Also add some relative time helpersDirk Engling
48 hoursWhile we're at it with the dynamic analyzers, add a tsanDirk Engling
3 daysAdd test for the revived keep aliveDirk Engling
3 daysFix some tests to match retired stats modes and wrong config file orderingDirk Engling
3 daysAdd test for the correct order of partial scrapesDirk Engling
3 daysAdd test for the error packet when a hash is blacklisted (the part I forgot in last commit)Dirk Engling
3 daysAdd test for the error packet when a hash is blacklistedDirk Engling
3 daysRemove enum for a retired stats modeDirk Engling
3 daysClean build artefacts on macos, tooDirk Engling
3 daysAdd DWANT_KEEPALIVE to integration test flags to test the whole sub systemDirk Engling
3 daysSend udp error packet in case of blacklisted torrentDirk Engling
3 daysFix: Forgot to add the actual keep alive flagDirk Engling
3 daysSort info_hashes in a scrape so that the reply forms a valid bencoded dictDirk Engling
3 daysAdd new test for connection keep aliveDirk Engling
3 daysRevive http keep alive to save tcp connection setup costsDirk Engling
3 daysretrieve the address of the sending socket for comparison. In jails it might be forced to its primary addressDirk Engling
3 daysAdding the actual tests to do aforementioned 'Massively increase coverage by pulling fullscrapes and sending udp packets'Dirk Engling
3 daysMassively increase coverage by pulling fullscrapes and sending udp packetsDirk Engling
3 daysFix some sanitizer findings, mostly UB if no accesslist is configured and thread join problemsDirk Engling
3 daysadd more checkers to the sanitizer and integration check runsDirk Engling
3 daysDrop -lz as Makefile.gzip already carries itDirk Engling
3 daysAvoid an UB of adding NULL + 0 by keeping an offset instead of advancing the pointer into a vector structDirk Engling
3 daysAdd integration test and its runnerDirk Engling
3 daysreplace all calls to sprintf with a format helper that advances a cursor. Also convert the meta-formatter (i.e. results printer) to this schemeDirk Engling
3 daysPotentially overlapping areas need memmove, not memcpyDirk Engling
3 daysMake sure to not accept mere prefixes of addresses from query stringDirk Engling
3 daysWith libowfat gone, we don't need to disable the auto free feature for older versionsDirk Engling
3 daysReplace libowfat's event waiter with our own abstractionDirk Engling
It's with a heavy heart that I remove libowfat as my event library from opentracker. libowfat is what taught opentracker to walk and then fly. The tracker was literally standing on the shoulder of giants when I started writing it in 2006. For its time, the event abstraction was unparalleled and it has held up for many years, and it served the bittorrent community greatly. https://erdgeist.org/gitweb/opentracker/commit/?id=ad472597c569568bad0526d116b601dfcb36638c Unfortunately, it is very likely that libowfat will not be maintained anymore for the foreseeable future, it is already not easy to get its source from upstream and opentracker started receiving bug reports that I can not reasonably answer or patch. Before the project gets more dependent on the limitations of libowfat's current state, I need to teach opentracker to stand on its own feet and fly by itself. I've learned a great deal in the process and have even more respect now for what libowfat pioneered. The path for opentracker is cleared now. Ground work has already been laid in the migration process to support multi threaded http processing while keeping the aggressive reduction of syscalls alive that made the libowfat+opentracker combo so scalable. Here be some dragons, though: Even though there is a unit test suite now, the event loop's rewrite has not been battle tested yet. So you might want to hold up for a bit before jumping on the solo band wagon. What awaits at the end will be a long overdue v1.0, which will be named in honour of Felix.
3 daysAdd poll/epoll/kqueue wrapper to wait for eventsDirk Engling
3 daysThird run of making variable and function names more readable, integer scans and ip parsersDirk Engling
3 daysSecond run of making variable and function names more readable, urlencoder now matches overall naming schemeDirk Engling
3 daysFirst run of making variable names more readableDirk Engling
3 daysUse new fdstate subsystem to store per fd cookie and timeoutDirk Engling
3 daysIntroduce a sub system that can store io cookies for file descriptors, thread safely soDirk Engling
4 daysFactor out the timeout setter, will probably go later once we do the io loop ourselfDirk Engling
4 daysReplace libowfat's iobatch with our own smaller (and probably only temporary) ot_batchDirk Engling
4 daysPrevent UAF when resizing iobatchesDirk Engling
4 daysAdd mutex unit testDirk Engling
4 daysBe stricter about const char*, Wwrite-strings will warn in the future and we don't want to try to overwrite string literalsDirk Engling
4 daysFor workqueue tasks, class has to be in the tasktype or no worker will ever claim the task, forgot oneDirk Engling