summaryrefslogtreecommitdiffhomepage
path: root/src/stats.c
AgeCommit message (Collapse)Author
2020-09-15free a mem leak by statically allocating global statsbufrofl0r
2020-01-15access config via a pointer, not a hardcoded struct addressrofl0r
this is required so we can elegantly swap out an old config for a new one in the future and remove lots of boilerplate from config initialization code. unfortunately this is a quite intrusive change as the config struct was accessed in numerous places, but frankly it should have been done via a pointer right from the start. right now, we simply point to a static struct in main.c, so there shouldn't be any noticeable changes in behaviour.
2019-12-21simplify codebase by using one thread/conn, instead of preforked procsrofl0r
the existing codebase used an elaborate and complex approach for its parallelism: 5 different config file options, namely - MaxClients - MinSpareServers - MaxSpareServers - StartServers - MaxRequestsPerChild were used to steer how (and how many) parallel processes tinyproxy would spin up at start, how many processes at each point needed to be idle, etc. it seems all preforked processes would listen on the server port and compete with each other about who would get assigned the new incoming connections. since some data needs to be shared across those processes, a half- baked "shared memory" implementation was provided for this purpose. that implementation used to use files in the filesystem, and since it had a big FIXME comment, the author was well aware of how hackish that approach was. this entire complexity is now removed. the main thread enters a loop which polls on the listening fds, then spins up a new thread per connection, until the maximum number of connections (MaxClients) is hit. this is the only of the 5 config options left after this cleanup. since threads share the same address space, the code necessary for shared memory access has been removed. this means that the other 4 mentioned config option will now produce a parse error, when encountered. currently each thread uses a hardcoded default of 256KB per thread for the thread stack size, which is quite lavish and should be sufficient for even the worst C libraries, but people may want to tweak this value to the bare minimum, thus we may provide a new config option for this purpose in the future. i suspect that on heavily optimized C libraries such a musl, a stack size of 8-16 KB per thread could be sufficient. since the existing list implementation in vector.c did not provide a way to remove a single item from an existing list, i added my own list implementation from my libulz library which offers this functionality, rather than trying to add an ad-hoc, and perhaps buggy implementation to the vector_t list code. the sblist code is contained in an 80 line C file and as simple as it can get, while offering good performance and is proven bugfree due to years of use in other projects.
2009-12-07Move definition of "struct config_s" from main.h to conf.hMichael Adam
Michael
2009-09-21Fix warning about format string not being a string literalMukund Sivaraman
2009-09-15Indent code to Tinyproxy coding styleMukund Sivaraman
The modified files were indented with GNU indent using the following command: indent -npro -kr -i8 -ts8 -sob -l80 -ss -cs -cp1 -bs -nlps -nprs -pcs \ -saf -sai -saw -sc -cdw -ce -nut -il0 No other changes of any sort were made.
2009-08-07showstats(): fix an implicit cast warning.Michael Adam
Michael
2009-08-07showstats(): add a const to a const stringMichael Adam
Michael
2009-08-07init_stats(): fix implicit cast warning.Michael Adam
Michael
2009-08-07Rename tinyproxy.[ch] to main.[ch]Mukund Sivaraman
2008-12-08Convert tabs to spacesMukund Sivaraman
2008-12-08Break at 80 columnsMukund Sivaraman
2008-12-01Reformat code to GNU coding styleMukund Sivaraman
This is a commit which simply ran all C source code files through GNU indent. No other modifications were made.
2008-07-14Fix error variable names that stats.html expectsMukund Sivaraman
2008-07-14Add version info in embedded stats pageMukund Sivaraman
2008-07-14Make the embedded stats message display valid XHTML tooMukund Sivaraman
2008-05-24Renamed htmlerror.[ch] to html-error.[ch]Mukund Sivaraman
2008-05-24Updated copyright, license notices in source codeMukund Sivaraman
The notices have been changed to a more GNU look. Documentation comments have been separated from the copyright header. I've tried to keep all copyright notices intact. Some author contact details have been updated.
2005-08-15* [Indent] Ran Source Through indentRobert James Kaes
I re-indented the source code using indent with the following options: indent -kr -bad -bap -nut -i8 -l80 -psl -sob -ss -ncs There are now _no_ tabs in the source files, and all indentation is eight spaces. Lines are 80 characters long, and the procedure type is on it's own line. Read the indent manual for more information about what each option means.
2005-07-12* Updated Copyright Email AddressesRobert James Kaes
Updated the copyright email addresses for Robert James Kaes. The users.sourceforge.net address should always exist.
2004-04-27(init_stats): Fixed a memset bug, where the structure was not clearedRobert James Kaes
properly. (The sizeof "struct stat" was being used rather than the proper "struct stat_s". On my system, "struct stat" is 88 bytes long, while "struct stat_s" is 20 bytes long. Quite a difference!)
2004-02-13Removed unnecessary casts (mostly dealing with memory allocation.) IRobert James Kaes
should never have added them in the first place. They don't really buy anything, and they can hide bugs.
2003-07-31Added appropriate casts from (void*) so that the code will compileRobert James Kaes
cleanly with a C++ compiler. (Tested using GCC 3.3)
2003-03-13# Changed showstats() to use the HTML variable functions whenRobert James Kaes
possible. It still retains the hard-coded page for when an HTML file is not available. [Steven Young]
2002-05-29Changed the tests on the return value from malloc_shared_memory() to make ↵Robert James Kaes
tinyproxy more portable, since we can't be certain that "if (!ret_value)" would actually detect a mmap() error.
2002-05-29(init_stats): Fixed a spelling mistake where the number of bytes being ↵Robert James Kaes
allocated was incorrect.
2002-05-26The stats structure has been moved into a shared memory block since itRobert James Kaes
needs to be shared by all the children.
2002-05-24Fixed a tonne of spelling mistakes.Robert James Kaes
2002-05-23Changed the header includes around to reflect the new source layout.Robert James Kaes
2001-11-22Reformated text.Robert James Kaes
2001-09-15Changed to using the send_http_message() function so that the HTTP headersRobert James Kaes
are sent properly.
2001-09-08Changed all the mallocs and callocs to use the new safemalloc andRobert James Kaes
safecalloc.
2001-05-27Changed the reference from log() to log_message().Robert James Kaes
2001-05-23Removed a DEBUG line in the "can't happen" case.Robert James Kaes
2001-01-15Fixed more potential overflow bugs.Robert James Kaes
2000-09-12This module handles the various stats relating to tinyproxy'sRobert James Kaes
funcationality.