2001-09-08 Robert James Kaes * src/ternary.c (BUFARRAY & BUFSIZE): Lowed the values to help lower memory usage. A ternary tree will now max out at 4MB. * src/utils.c: Added debugging_(malloc|calloc|free) to help track down memory leaks. * src/dnscache.c (DNS_INSERT_LIMIT): Lower the number of insertions before the ternary tree is rebuilt. * src/thread.c (thread_main): Fixed a memory leak. 2001-09-07 Robert James Kaes * src/thread.c (thread_pool_create): Explictly set the detach state for threads to PTHREAD_CREATE_DETACHED. * Various error message clean up. * src/thread.c (thread_main): Add locking around the servers_waiting thread. 2001-09-06 Robert James Kaes * src/thread.c (thread_main): The code which closes a thread doesn't actually work correct so I've moved the test to just after a thread has handled a connection. The code still needs to be cleaned up to handle locking. * src/ternary.c (ternary_destroy): Fixed the deletion code as it would cause a segfault if it was every called. Also, lowered the sizes of the arrays for better memory usage. * src/dnscache.c: After a certain number of insertions delete the DNS cache and free the memory. The reason for this is that a ternary tree doesn't lend itself to removing individual entries. It's just easier (and cleaner) to simply delete the cache. 2001-09-04 Robert James Kaes * src/reqs.c (process_client_headers): Moved the skip header test in front of the compare_header() function. * src/ternary.c (ternary_search): Switched to doing case insensitive searching. * src/log.c (log_message): Thanks to NeilK for finding and fixing a problem with the syslog code which can lead to a format string attack. 2001-08-30 Robert James Kaes * src/dnscache.c: Removed the insert_data() function and replaced the "replace" logic in dns_insert() with a call to ternary_replace(). This fixes the segmentation fault problem which I introduced when I "tried" to fix the memory leak. Also changed the LOCKing to be around the entire dnscache() again since I still need to work out how locking should be done when accessing the ternary tree. * src/ternary.c (ternary_insert_replace): Renamed ternary_insert() to ternary_insert_replace() and added a extra argument. The function can now "replace" data already in the tree without causing a memory leak. Added two DEFINES to make coding easier: ternary_insert() and ternary_replace() which both call this function with the right arguments. * src/utils.c: Removed xstrstr() since it was only used in one place, and could be safely replaced with strstr. I can't even remember why we had this function to begin with. * src/reqs.c (compare_header): Removed the call to xstrstr() since it's been removed from the source. 2001-08-28 Robert James Kaes * src/log.c (log_message): Handle a debug enabled compile better. * src/dnscache.c (dns_insert): Fixed a memory leak if the same information was inserted into the ternary tree twice. * configure.in: Fixed the test regarding the REGEX library. Even if a working REGEX was found on the system, the included REGEX was being compiled in. Double Doh. * src/log.c (log_message): Finally got the log levels worked out properly. I've tested all the levels and they now produce the correct output. 2001-08-27 Robert James Kaes * src/reqs.c (trim): Moved the trim functionality out of process_request() and added a test to make sure we don't back the pointer past the beginning of the string. * src/log.c (log_message): Fixed a problem where the connect messages were not getting through if the log level was set to INFO. * src/tinyproxy.h: Moved some of the includes around so that tinyproxy can compile correctly on FreeBSD systems. * src/thread.c: Added the pthread_attr_t structure since we're going to be using a non-default sized stack because some OS's have a stack size which is too small. * configure.in: Added a test for detecting FreeBSD's -pthread mechanism for telling GCC to use POSIX threading. * src/utils.c (httperr): Fixed the MIME type. Should be be text/html, not text/mime. Fix one bug, add two new ones. Sigh. 2001-08-26 Robert James Kaes * src/utils.c (httperr): Split the headers from the actual message and include more headers like Date, Server, Content-Length, etc. Also set the type for the error message to const char*. * src/reqs.c (process_method): Fixed a SEGV problem if an invalid request was submitted. * Makefile.am (EXTRA_DIST): Don't include ./reconf in the tarball. * src/log.c (log_message): Fixed a problem with the new LOG_CONN log level. * configure.in: The debugging code was being included even on non-debugging builds. * src/anonymous.c (anonymous_insert): Moved the creation of the search tree into the anonymous_insert() function. Therefore, the search tree is _not_ created until the first insertion. This should also fix a bug in main() where I was inserting headers before creating the search tree. Doh. (is_anonymous_enabled): Removed the tests for config.anon and replaced it with a function call which returns a BOOL. * Spell checked the ChangeLog file! :) 2001-08-25 Robert James Kaes * src/thread.c (thread_main): Thanks to Hans-Georg Bork for fixing a problem where the status of the threads was not going back to T_WAITING if MaxRequestsPerChild was 0. Also, fixed a problem with the looping system where the Debian start-stop-daemon script would not stop all the threads if new threads had been created. * src/log.h (LOG_CONN): Added the LOG_CONN log level. This is less verbose than LOG_INFO. * doc/tinyproxy.8: Added the -l option to the list of command line options. * src/anonymous.c (anon_insert): Fixed a bug where anonymous filtering wasn't working even if it was specified in the configuration file. 2001-07-02 Robert James Kaes * src/tinyproxy.c (versiondisp): Added George Talusan to the copyright message. Also now include the target system name to the version message. 2001-06-06 Robert James Kaes * configure.in: Total reorganization. 2001-06-04 Robert James Kaes * configure.in: Remove the --with-* for port, logfile, and user since the configuration file handles this now. Fixed a problem where we were testing for the libraries correctly, but not actually including them in the linking. 2001-06-02 Robert James Kaes * doc/tinyproxy.conf: Clarified the LogLevel directive. * configure.in: Fixed up the tests for libsocket, libnsl, and libresolv. Also improved the test for the yacc program since I used bison 1.25 to originally write it. Updated the list of headers to look for when configuring. Bumped up the version. 2001-06-01 Robert James Kaes * configure.in: Fixed a problem when using the --with-port= config * src/tinyproxy.c (main): Change the logging level from LOG_EMERG (which doesn't exist anymore) to LOG_CRIT. * src/scanner.l: Added the strings in the data structure to handle the LogLevel switch. * src/log.c (set_log_level): Code for handling selective logging. * src/grammar.y: Added the tokens and code for handling the LogLevel switch in the configuration file. * configure.in: Added a test for the resolv library for the gethostby* functions. Also bumped up the pre-version. 2001-05-26 Robert James Kaes * src/tinyproxy.c (main): Added code to stop the creation of core files. * src/reqs.c (process_method): Fixed a memory leak. (relay_connection): Cleaned up the code to remove some unneeded variables and removed redundant code. * src/log.c (log_message): Renamed "log()" function to log_message(). * src/dnscache.c (new_dnscache): * src/anonymous.c (new_anonymous): Fixed the return type. 2001-01-15 12:13 rjkaes * configure.in: Bumped up the pre version number 2001-01-15 12:11 rjkaes * ChangeLog, src/reqs.c, src/stats.c: Fixed more potential overflow bugs. 2001-01-15 12:06 rjkaes * ChangeLog, src/utils.c: Fixed a potential security bug in http_err. There was a possibility of a heap overflow exploit. 2001-01-02 14:30 rjkaes * src/scanner.l: Fixed a bug where the ':' character was not being properly detected. 2000-12-09 15:03 rjkaes * configure.in: Rolling out the first pre to 1.4.0 2000-12-08 21:35 rjkaes * src/thread.c: Implemented the MaxRequestsPerChild directive. 2000-12-07 22:35 rjkaes * ChangeLog: Updated changelog 2000-12-07 22:35 rjkaes * src/: thread.c, tinyproxy.c: Fixed a problem with polling for the number of active threads. No longer polls. :) 2000-11-22 23:49 rjkaes * src/ternary.c: Fixed MACRO error. 2000-11-22 23:46 rjkaes * src/tinyproxy.c: Fixed spelling mistake. 2000-11-22 23:46 rjkaes * src/: filter.c, filter.h, reqs.c: Changed the filter_host command to filter_url. 2000-10-23 17:47 rjkaes * ChangeLog: Updated Information. 2000-10-23 17:46 rjkaes * src/ternary.c: In the Key Found code, don't display the string in the debug code since it doesn't exist anymore when we display it. Doh! 2000-10-23 17:44 rjkaes * src/tinyproxy.c: Added the initialization section for the DNS and Anonymous sub systems. 2000-10-23 17:43 rjkaes * src/: anonymous.c, anonymous.h: Added the new_anonymous initialize routine 2000-10-23 17:42 rjkaes * src/: dnscache.c, dnscache.h: Added the new_dnscache routine to initialize the Ternary tree. Also, removed the garbage collection routine. 2000-09-26 01:00 rjkaes * ChangeLog: Updated documentation. 2000-09-26 00:59 rjkaes * src/dnscache.c: Fixed the insert function to handle a failed insert properly. 2000-09-26 00:59 rjkaes * src/: ternary.c, ternary.h: Added the TE_EXISTS return code, and cleaned up the ternary_destroy function. 2000-09-26 00:58 rjkaes * src/: tinyproxy.h, utils.h: Moved the safefree() macro to the tinyproxy.h header. 2000-09-26 00:57 rjkaes * src/: acl.c, reqs.c: Updated the free() calls to the safefree() calls. 2000-09-21 12:58 rjkaes * ChangeLog: Updated documentation. 2000-09-21 12:57 rjkaes * src/tinyproxy.c: There is no LOG_EMERG level, so changed to LOG_CRIT. 2000-09-21 12:53 rjkaes * src/: log.c, log.h: Added the LOG_NOTICE level. 2000-09-15 16:58 rjkaes * src/: grammar.c, grammar.h, scanner.c: These are generated by grammar.y and scanner.l respectively, don't include them in the CVS. 2000-09-15 16:57 rjkaes * src/stamp-h.in: Automatically generated file. 2000-09-15 16:55 rjkaes * src/Makefile.in, doc/Makefile.in: Don't include automatically generated files. 2000-09-15 16:53 rjkaes * install-sh, missing, mkinstalldirs: Don't included automatically generated files. 2000-09-15 16:52 rjkaes * Makefile.in, config.guess, config.sub, configure: Flipping again. :) Don't include any of the automatically generated stuff. 2000-09-14 12:41 rjkaes * ChangeLog, configure.in, src/tinyproxy.h: Need to do a check for the header since it's not a standard header available on all systems. 2000-09-12 14:10 rjkaes * Makefile.in, doc/Makefile.in, src/Makefile.in: Again, needed for configure script. Automatically built by ./reconf 2000-09-11 20:45 rjkaes * config.guess, config.sub: Needed for running configure. Automatically built with reconf 2000-09-11 20:43 rjkaes * configure: Can be made from configure.in (and should be), but I want to be able to check out the source and immediately configure it. 2000-09-11 20:22 rjkaes * doc/tinyproxy.conf: Example tinyproxy configuration file. 2000-09-11 20:21 rjkaes * ChangeLog: We all know what this is. :) 2000-09-11 20:20 rjkaes * acinclude.m4: A M4 macro for finding the various types on the system (typedefs, etc.) 2000-09-11 20:18 rjkaes * Makefile.am, acconfig.h, configure.in: New defaults, and better checking for various features needed by tinyproxy. Looks like fun! :) 2000-09-11 20:16 rjkaes * AUTHORS, BUGS, INSTALL, README, THANKS: Just updating the documentation. 2000-09-11 20:12 rjkaes * src/: grammar.c, grammar.h, grammar.y, scanner.c, scanner.l: These all handle reading the tinyproxy configuration file. 2000-09-11 20:10 rjkaes * src/: ternary.c, ternary.h: Generalized the ternary code which was already being used in anonymous.* now it can be used (and is used) in both anonymous and dnscache 2000-09-11 20:08 rjkaes * src/: acl.c, acl.h: Improved access control semantics. Allows for a finger control for allowing and denying hosts. 2000-09-11 20:07 rjkaes * src/: thread.c, thread.h: tinyproxy now uses a pool of threads to handle connections. All the work for creating new threads, deleting old thread, and generally managing the pool is done here. 2000-09-11 20:06 rjkaes * src/: stats.c, stats.h: This module handles the various stats relating to tinyproxy's functionality. 2000-09-11 20:04 rjkaes * src/: reqs.c, reqs.h: MAJOR RE-WRITE! Read the ChangeLog and look at the source. It's shorter than re-documenting the changes here. :) 2000-09-11 20:03 rjkaes * src/: tinyproxy.c, tinyproxy.h: Fixed the change user/group ability. Log when tinyproxy is using default values rather than specific ones. Cleaned up the command line arguments since tinyproxy now uses a configuration file. Removed the USR1 signal and added the thread creation code. 2000-09-11 20:01 rjkaes * src/: utils.c, utils.h: Removed the xmalloc() and xstrdup() functions. Added the pidfile_create() function. Added the OpenBSD style strlcat() and strlcpy() functions. 2000-09-11 19:57 rjkaes * src/: uri.c, uri.h: Switched to the new logging style and replaced the xmalloc() with straight malloc(). 2000-09-11 19:56 rjkaes * src/: sock.c, sock.h: Needed locking in getpeer_string(). Added mutex locking around the dnscache() call. Removed the global sockaddr and setup_fd variables. Added the socket_blocking() and socket_nonblocking() functions. Gutted the readline() function and replaced it with something similar to the 1.0 version. :) 2000-09-11 19:50 rjkaes * src/regexp.h: Moved back to the for autoconf defines. 2000-09-11 19:47 rjkaes * src/: log.c, log.h: Cleaned up the logging format, and also included logging levels (which are similar to the syslogd format.) 2000-09-11 19:46 rjkaes * src/gnuregex.c: Not using for autoconf anymore, so move back to the format. 2000-09-11 19:43 rjkaes * src/: filter.c, filter.h: Just using standard malloc() since the xmalloc() didn't really add anything useful to the command. 2000-09-11 19:42 rjkaes * src/: dnscache.c, dnscache.h: Removed the custom hash routines. Using the ternary module instead. 2000-09-11 19:41 rjkaes * src/: buffer.c, buffer.h: Cleaned up the source so that the internal structure is no exposed by the buffer.h header. 2000-09-11 19:38 rjkaes * src/: anonymous.c, anonymous.h: Removed the ternary tree code from these files and made it a separate module. 2000-09-11 19:37 rjkaes * src/Makefile.am: Modified to include all the files needed to build tinyproxy, plus the special targets for building the LEX and YACC files. (Also included the GNU license.) 2000-09-11 19:33 rjkaes * doc/tinyproxy.8: Since the tinyproxy program has changed, the manual had to change as well. Documents all the command line arguments, though I think I need to document the configuration file as well. 2000-09-11 19:32 rjkaes * doc/: Makefile.am, TODO: Updated to reflect the new reality of the tinyproxy source code. 2000-09-11 19:31 rjkaes * doc/CONFIG: This was the layout for the purposed config file. This is no more. 2000-09-11 19:27 rjkaes * INSTALL.configure: This was the generic INSTALL file, but the INSTALL file itself is again the generic file. :) 2000-09-11 19:24 rjkaes * src/: config.h, conns.c, conns.h: These files are no longer used within tinyproxy. 2000-06-06 13:58 rjkaes * ChangeLog: Reflect changes made in source. 2000-06-06 13:56 rjkaes * doc/tinyproxy.8: Fixed the links for finding tinyproxy. Thanks to Simon Baker for pointing this out. 2000-04-26 12:31 rjkaes * ChangeLog, src/dnscache.c, src/uri.c: Reorganized (or added) the #include line so tinyproxy would compile cleanly on FreeBSD systems. 2000-03-31 17:55 rjkaes * ChangeLog, src/reqs.c: Fixed a bug with the path in clientreq. If the path was empty it caused a malformed request to be sent. 2000-03-31 15:15 rjkaes * ChangeLog: A whole whack of changes and bug fixes. 2000-03-31 15:14 rjkaes * src/Makefile.am: Added a line for the anonymous.* files. 2000-03-31 15:14 rjkaes * src/config.h: Changed the socket time out to 10 secs. 2000-03-31 15:13 rjkaes * src/reqs.c: Updated the anonheader function to use the new anonymous API. Removed the hack for the POST method in clientreq. 2000-03-31 15:10 rjkaes * src/sock.c: Completely rewrote the readline function. 2000-03-31 15:09 rjkaes * src/: buffer.c, buffer.h: Added the working_* fields as a scratch pad for readline(). 2000-03-31 15:08 rjkaes * src/: tinyproxy.c, tinyproxy.h: Removed the allowedhdr_s structure since it is now accessed through anonymous.* 2000-03-31 14:56 rjkaes * src/: anonymous.c, anonymous.h: Moved the anonymous header code into it's own file to make it easier to update. 2000-03-29 11:19 rjkaes * ChangeLog: Updated to list changes in src/reqs.c and src/dnscache.c 2000-03-29 11:18 rjkaes * src/dnscache.c: Included the header. 2000-03-29 11:17 rjkaes * src/reqs.c: Fixed a bug with the clientreq function which was incorrectly setting the clientheader flag and causing _all_ headers to be sent even in anonymous mode. 2000-03-28 11:44 rjkaes * ChangeLog: Updated ChangeLog entry for new fix. 2000-03-28 11:41 rjkaes * src/reqs.c: Fixed another NULL bug with the uri->authority. If an badly formed request was made in the form of http:\\www.somewhere.com/ tinyproxy would SEGV. This has been corrected. 2000-03-28 11:21 rjkaes * ChangeLog: Updated to reflect changes in src/reqs.c 2000-03-28 11:19 rjkaes * src/reqs.c: Fixed a NULL pointer bug in clientreq. If the SCHEME in the URL was NULL the program would SEGV. This was caused by the error logging code. 2000-03-12 19:56 rjkaes * src/config.h: Remove the defines for DEFAULT_* and UPSTREAM (they've been moved into acconfig.h and configure). 2000-03-12 19:55 rjkaes * ChangeLog: List all the changes which has occurred on the program. 2000-03-11 15:43 rjkaes * acconfig.h: Added the support for the upstream proxy and also made the defaults for the LOGFILE, USER, and PORT. 2000-03-11 15:37 rjkaes * src/: dnscache.c, reqs.c, tinyproxy.c, tinyproxy.h: Included the changes needed to re-add the upstream proxy option. 2000-03-11 15:36 rjkaes * doc/tinyproxy.8: Updated the manual to reflect all the options, plus provide additional information concerning the changes made to some of the options. 2000-03-11 15:35 rjkaes * configure.in: Re-ordered some of the arguments. Included the support for the Upstream Proxy. 2000-03-11 15:34 rjkaes * src/: Makefile.in, defines.h.in: Once again, these files are made automatically, don't include them. 2000-03-11 15:33 rjkaes * doc/Makefile.in: Again, the file is generated automatically, so don't include it. 2000-03-11 15:32 rjkaes * Makefile.in, aclocal.m4, configure: These files are generated by reconf, so don't include them in the CVS. 2000-02-16 12:32 sdyoung * AUTHORS, COPYING, ChangeLog, INSTALL, Makefile.am, Makefile.in, NEWS, README, THANKS, aclocal.m4, BUGS, INSTALL.configure, acconfig.h, configure, configure.in, install-sh, missing, mkinstalldirs, reconf, src/Makefile.am, src/Makefile.in, src/defines.h.in, src/stamp-h.in, src/filter.c, src/buffer.c, src/buffer.h, src/config.h, src/conns.c, src/conns.h, src/dnscache.c, src/dnscache.h, src/gnuregex.c, src/log.c, src/log.h, src/reqs.c, src/reqs.h, src/sock.c, src/sock.h, src/tinyproxy.c, src/tinyproxy.h, src/uri.c, doc/Makefile.am, doc/Makefile.in, doc/TODO, src/filter.h, src/gnuregex.h, src/regexp.h, src/uri.h, src/utils.c, src/utils.h, doc/CONFIG, doc/HTTP_ERROR_CODES, doc/RFC_INFO, doc/report.sh, doc/tinyproxy.8: Initial revision 2000-02-16 12:32 sdyoung * AUTHORS, COPYING, ChangeLog, INSTALL, Makefile.am, Makefile.in, NEWS, README, THANKS, aclocal.m4, BUGS, INSTALL.configure, acconfig.h, configure, configure.in, install-sh, missing, mkinstalldirs, reconf, src/Makefile.am, src/Makefile.in, src/defines.h.in, src/stamp-h.in, src/filter.c, src/buffer.c, src/buffer.h, src/config.h, src/conns.c, src/conns.h, src/dnscache.c, src/dnscache.h, src/gnuregex.c, src/log.c, src/log.h, src/reqs.c, src/reqs.h, src/sock.c, src/sock.h, src/tinyproxy.c, src/tinyproxy.h, src/uri.c, doc/Makefile.am, doc/Makefile.in, doc/TODO, src/filter.h, src/gnuregex.h, src/regexp.h, src/uri.h, src/utils.c, src/utils.h, doc/CONFIG, doc/HTTP_ERROR_CODES, doc/RFC_INFO, doc/report.sh, doc/tinyproxy.8: Initial CVS checking of tinyproxy - version 1.3.2.