2001-10-25 Robert James Kaes * src/reqs.c (relay_connection): Empty the contents of both buffers when either socket is closed. This is more in line with what a tunnel should do. Since either end could close with information still in the buffers. (connect_to_upstream): Cleaned up the code to re-use the establish_http_connection() function. * src/buffer.c (readbuff): Changed the memory allocation to 2K from 48K since an Ethernet connection is usually around 1400 bytes. There's little point in allocating a huge amount of memory, only to shrink the memory map in the next breath. 2001-10-22 Robert James Kaes * src/sock.c (getpeer_string): Added logging in case the gethostbyaddr() function fails. * src/reqs.c (free_request_struct): Added a test to return if the pointer is NULL. (handle_connection): Cleaned up the code to better handle the cause where the request is NULL. * src/sock.c (getpeer_string): * src/sock.c (getpeer_ip): When the DNS lookup fails, we need to initialized the user's buffer to an empty string; otherwise, the user's buffer will contain garbage and cause a SEGFAULT. Thanks to Jeffrey Wheelhouse for finding this bug. 2001-10-18 Robert James Kaes * src/reqs.c (connect_to_upstream): Moved the code needed to rebuild the request line when using the upstream feature into it's own function. Simplifies the handle_connection() function. * src/buffer.c (readbuff): Fixed a problem where a full buffer would cause the connection to be closed. Thanks to Jeffrey Wheelhouse for helping me find this problem. 2001-09-29 Robert James Kaes * configure.in: Uses any CFLAGS variable passed to the configure script. Also, '-g -Wall' is _not_ enabled unless debugging support is compiled in. Use --enable-static to compile a statically linked tinyproxy. 2001-09-16 Robert James Kaes * src/tinyproxy.c (main): Don't allow Tunnel and Upstream directives to be both set in the configuration file. * src/reqs.c (handle_connection): Added support for an upstream proxy. What we used to use for our upstream proxy has now become a TCP tunnel. The difference is that the upstream proxy will do domain filtering, anonymous headers, etc. while the TCP tunnel just sends the data without any processing. You can not have both at the same time. * src/utils.c (send_http_message): Instead of creating a block of memory with the output message, just send it to the client. We still need to process the various headers from the client, but it will pick up the error when it's done talking to the proxy. Uses less memory. * src/sock.c: Moved safe_write() and safe_read() into sock.c since I'm using them in more than just reqs.c. 2001-09-15 Robert James Kaes * Removed all the log_message()s which reported that memory could not be allocated. There's little point in reporting a memory shortage since the computer will probably crash soon anyway. * src/reqs.c (process_request): Added the code for showing the stats back into the function. * src/tinyproxy.c (takesig): When SIGHUP is received the log file is rotated instead of being truncated. The rotated log has ".rot" appended to the file name. 2001-09-14 Robert James Kaes * src/uri.c: Removed this file since it's no longer needed. * src/reqs.c: Split the process_method() function into separate smaller functions. Added support for tunnel SSL connections. * src/tinyproxy.h: Added a field to handle SSL connections. 2001-09-11 Robert James Kaes * src/reqs.c (process_method): Fixed a memory leak due to the change to heap allocation if there is an error. * src/utils.c (debugging_realloc): Added the debugging version of realloc(). * src/thread.c (THREAD_STACK_SIZE): Changed a threads stack size to 32KB from 128KB. * src/reqs.c (process_method): * src/reqs.c (pull_client_data): * src/reqs.c (process_client_headers): * src/reqs.c (process_server_headers): * src/buffer.c (readbuff): Using heap allocated memory for the buffer rather than stack memory. * src/uri.c (explode_uri): Fixed a potential memory leak where the regular expression structure might not be freed if there was an error in the expression. 2001-09-08 Robert James Kaes * src/ternary.c (BUFARRAY & BUFSIZE): Lowered 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): Explicitly 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.