Robert James Kaes
523f2003fa
Removed the DNS API calls and replaced them with the standard
...
gethostbyname() and gethostbyaddr() functions. This is possible
because tinyproxy now uses a standard pre-forked() method.
2002-05-26 18:51:17 +00:00
Robert James Kaes
71046cd407
Removed the "pthread" related includes.
2002-05-26 18:49:19 +00:00
Robert James Kaes
c35e56ae66
No longer using a threading model; so these files have been replaced by
...
the child.c/child.h files (which use a pre-forked model.)
2002-05-26 18:48:32 +00:00
Robert James Kaes
1fda8899b1
I didn't like the DNS co-process design so I changed tinyproxy from a
...
threading model to a standard pre-forked model. This means I don't need
the DNS co-process files. Gone.
2002-05-26 18:47:11 +00:00
Robert James Kaes
b3e657a00e
Changed from using a threading model to a standard pre-forked model.
...
Therefore the thread.c file has been removed and this file replaces it.
These files are really just the thread.c and thread.h files with all the
threading stuff replaced with fork() code. Most of the code is identical.
2002-05-26 18:45:26 +00:00
Robert James Kaes
391a408eee
Fixed a tonne of spelling mistakes.
2002-05-24 04:45:32 +00:00
Robert James Kaes
a34db10d65
Fixed some spelling mistakes, and removed the getpeer_ip() and
...
getpeer_string() functions as they've been replaced by the
getpeer_information() function.
2002-05-24 04:44:36 +00:00
Robert James Kaes
b77fc5c860
Moved most of the function into separate files: the heap debugging
...
functions are in "heap.c"; the daemon functions are in "daemon.c"; and,
the string/text functions are in "text.c".
2002-05-23 18:28:12 +00:00
Robert James Kaes
52c15029d1
Moved all the system header includes into the common.h file.
2002-05-23 18:27:19 +00:00
Robert James Kaes
16386fbb70
Added a new signal handler to handle SIGCHLD signals because of the new
...
dnsserver child process.
Changed the set signal calls to use our new set_signal_handler() function.
Added code to start the "dnsserver" child process.
2002-05-23 18:27:01 +00:00
Robert James Kaes
478030c6ff
Changed the lookup_domain() function to use the new "dnsserver" API.
...
Also moved safe_write(), safe_read(), readline(), and write_message()
functions into their own file.
2002-05-23 18:25:55 +00:00
Robert James Kaes
47ab97a347
Fixed up a spelling mistake and changed various bits of code to take
...
advantage of the fact that the peer's socket information is now stored
inside the connection structure.
2002-05-23 18:24:46 +00:00
Robert James Kaes
1f9085cef2
Added the "DNSserverLocation" and "DNSserverSocket" directives for use
...
with the "dnsserver" resolver.
2002-05-23 18:24:02 +00:00
Robert James Kaes
09b1b9b925
Added the peer's socket information to the connection structure. The
...
information is passed along during the initialization of the structure.
2002-05-23 18:23:29 +00:00
Robert James Kaes
9d0c65ad86
Fixed up the header includes for the new layout.
...
Changed one line of code to make it explicit how the pointers are to be
updated.
2002-05-23 18:22:48 +00:00
Robert James Kaes
451fad1ed2
Changed the header includes around to reflect the new source layout.
2002-05-23 18:20:27 +00:00
Robert James Kaes
e633b97957
Added code to create the "dnsserver" program, and also reorganized to
...
include the various new source files.
2002-05-23 04:43:06 +00:00
Robert James Kaes
1690c05075
Initial addition to CVS. Moved the three "text" related functions into a
...
separate file.
2002-05-23 04:42:30 +00:00
Robert James Kaes
fd3e6e84fb
Initial addition to CVS. Moved the network related functions into a
...
separate module.
2002-05-23 04:41:48 +00:00
Robert James Kaes
c667952861
Initial addition to CVS. Moved all the debugging heap related functions.
2002-05-23 04:41:10 +00:00
Robert James Kaes
0b0e03fa39
Initial addition to CVS. The dnsserver process is a child executable that
...
handle DNS resolving.
2002-05-23 04:40:42 +00:00
Robert James Kaes
d22d6d181b
Initial addition to CVS. These functions create an API for accessing the
...
dnsserver child process.
2002-05-23 04:40:06 +00:00
Robert James Kaes
2ee61db6af
Initial addition into CVS. Moves various functions relating the daemon
...
processes. Added a portable signal handler setting function.
2002-05-23 04:39:32 +00:00
Robert James Kaes
65cf5ea290
Initial addition to CVS. This header moves all the system includes from
...
the tinyproxy.h file to here.
2002-05-23 04:37:54 +00:00
Robert James Kaes
700f129750
Set the pointer to NULL after it's been freed()
2002-05-17 16:39:35 +00:00
Robert James Kaes
e4e78e0f1b
request->host might have been freed by the time we get to
...
free_request_struct(), so make sure it's pointing to memory.
2002-05-17 16:34:42 +00:00
Robert James Kaes
bb9f206529
Moved the definition of the struct buffer_s into the buffer.c file and out
...
of the buffer.h file. This also required the removal of the BUFFER_SIZE
macro, and replace it with the buffer_size() function.
2002-05-14 00:43:38 +00:00
Robert James Kaes
d46cba8a0b
Added a "tail" pointer to the vector to make insertions more efficient.
2002-05-13 23:32:16 +00:00
Robert James Kaes
16e96c79e8
Thanks to Justin Guyett for making the hashmap_insert() function use a
...
constant time insert. Explanation: new enteries are added to the _front_
of the chain, rather than search to the end.
2002-05-13 20:02:23 +00:00
Robert James Kaes
73e3b495e0
Fixed up a potential SEGFAULT if memory for an entry could not be
...
allocated. Also, thanks to Justin Guyett for finding a problem the
hashmap_remove() function. There was a problem where an entry's "prev"
pointer could be pointing to freed memory.
Finally, renamed all "maps" to bucket to make the source more
understandable.
2002-05-13 18:47:46 +00:00
Robert James Kaes
cf2ecb83b8
Removed the request logging in the tunnel because it breaks the tunnel
...
concept since it blocks waiting for information from the client before any
data from the remote is relayed.
2002-05-08 03:29:23 +00:00
Robert James Kaes
0a1f83bbe5
tinyproxy should be installed into the /sbin directory rather than the
...
/bin directory since it's a network daemon.
2002-05-02 17:34:58 +00:00
Robert James Kaes
3284f365b2
Check the return value of the write_message() function.
2002-04-28 20:03:53 +00:00
Robert James Kaes
ed90a4676f
Added more error checking in process_client_headers() and
...
process_server_headers() functions.
Also, better reporting of errors back to the client.
2002-04-28 20:03:18 +00:00
Robert James Kaes
f79807ac11
Added extra logging information, and made sure that locks were being
...
released properly.
2002-04-28 18:32:16 +00:00
Robert James Kaes
e4fe04cbaf
Clear the total array of threads before any of the threads are created.
2002-04-28 03:09:52 +00:00
Robert James Kaes
577f3cebbf
Fixed up the error detection code when relating the pthread functions.
...
They return 0 if OK, and a positive error code.
Cleaned up the status setting code in thread_main().
Thanks to Hans-Georg Bork for fixing the problem in thread_pool_create()
where the status wasn't set early enough to allow all the threads to be
created.
Added additional logging information to let the admin know what is
happening with the thread creation.
2002-04-28 02:37:01 +00:00
Robert James Kaes
1a8c914dd2
Changed the len type to ssize_t because we need to detect errors in the
...
recv() call. Thanks to Tom Cross for discovering this bug.
2002-04-26 19:33:09 +00:00
Robert James Kaes
1d78e63233
Added an assert in hashmap_first()
2002-04-26 16:51:29 +00:00
Robert James Kaes
e9f5b2e75f
Check the return value of hashmap_first()
2002-04-26 16:50:55 +00:00
Robert James Kaes
0e7182533c
Need to check the return value of hashmap_first() since it could be
...
negative.
2002-04-26 16:43:20 +00:00
Robert James Kaes
6992c74bba
Check to see if request->path is actually allocated before trying to free
...
it.
2002-04-25 19:20:56 +00:00
Robert James Kaes
b4ef24844f
First change all the hashmap related calls to use the new API.
...
The remove_connection_headers() function now handles both the Connection
header _and_ the Proxy-Connection header.
2002-04-25 18:58:08 +00:00
Robert James Kaes
d1031e2c8f
The hashmap API changed, so this function needs to be changed as well.
2002-04-25 18:56:43 +00:00
Robert James Kaes
ce51a74045
Removed the hashmap_keys() function and added the "iterator" concept.
...
This required a bunch of changes to the source (like the inclusion of the
end_iterator member variable.) All this was required by sites like Yahoo
which send out multiple "Set-Cookie" headers. tinyproxy needs to handle
this situation correctly.
2002-04-25 18:55:56 +00:00
Robert James Kaes
b5df4f1cf0
hashmap_search() only takes two arguments, so removed the unneeded NULL.
2002-04-25 18:52:09 +00:00
Robert James Kaes
d7c3f23610
bind_address has been moved inside the config structure. Fixed up a
...
problem where "data" was being freed even if it had not been allocated
(because of an error condition.)
2002-04-24 16:48:34 +00:00
Robert James Kaes
335d787018
Fixed a couple of problems where tinyproxy was trying to free a memory
...
block which had not been allocated.
Also, the "proxy-connection" to the list of headers we don't pass.
2002-04-24 16:47:19 +00:00
Robert James Kaes
89ada2df28
Moved bind_address inside the config structure.
2002-04-24 16:45:45 +00:00
Robert James Kaes
c5b9ec889e
Renamed the LOCKing macros and added assert debugging code. Also, moved
...
the mutex initialization into a function call so that I can use an
error checking mutex once I figure out how to get it to work on my
computer.
2002-04-22 19:41:17 +00:00
Robert James Kaes
08077cc9e1
The "Bind" directive sets a binding address which the outgoing connections
...
will use.
2002-04-22 19:35:24 +00:00
Robert James Kaes
1953348c90
Added the "Proxy-Connection" header to the list of client headers which
...
are not passed along.
2002-04-22 19:34:50 +00:00
Robert James Kaes
2ec7a4dd72
The log_message() function now stores the messages if the configuration
...
file has not been read yet. The reason for this is that we don't know
where to log the messgaes until _after_ the config file has been
processed.
2002-04-22 19:34:20 +00:00
Robert James Kaes
60f61c8f0c
Added the "Bind" directive.
2002-04-22 19:33:01 +00:00
Robert James Kaes
aa68eb8540
Whoops. The previous include only had the code conditionally removed.
...
Remove for real this time.
2002-04-18 21:54:50 +00:00
Robert James Kaes
1db154464e
Removed the call to inet_aton() since the gethostbyname() function handles
...
the dotted-decimal case itself.
2002-04-18 21:53:33 +00:00
Robert James Kaes
60f0a86c75
The stats now wait until after the client has finished sending all its
...
headers before sending the HTTP response back. This should be more
standards compliant.
2002-04-18 21:43:53 +00:00
Robert James Kaes
73a53daf38
Removed the call to hstrerror() in the getpeer_string() function. It's
...
not available on all machines.
2002-04-18 18:48:22 +00:00
Robert James Kaes
d14b612e13
Fixed a memory leak in the hashmap_delete function. The array of maps was
...
not being deleted.
2002-04-18 18:40:38 +00:00
Robert James Kaes
9a8d732a13
Changed all calls to strdup to safestrdup. This should provide better
...
memory usage tracking.
2002-04-18 17:59:21 +00:00
Robert James Kaes
a66aae880c
Fixed a memory leak in reading in headers from the client or server.
2002-04-18 17:58:52 +00:00
Robert James Kaes
3b5a4b7362
Replaced the explicit header includes with one call to tinyproxy.h. Also,
...
added the utils.h header and changed all the malloc, calloc, free, and
strdup to the appropriate safe variety.
2002-04-18 17:57:20 +00:00
Robert James Kaes
ce4687fbf9
Added the debuggin_strdup() function and the associated safestrdup()
...
macro. Also, added asserts to the other debugging_* functions.
2002-04-18 17:49:14 +00:00
Robert James Kaes
43860d2469
Moved the filter_destroy() logic from inside the signal handler. It's now
...
been moved to inside the main() function.
2002-04-18 17:04:04 +00:00
Robert James Kaes
5822ec3d44
Moved the log rotation code out of the signal handler and into it's own
...
function. The signal handler now simply sets a flag which is monitored
inside the thread_main_loop() function. The log rotation code has also
been tightened to handle any error conditions better. Credit to Petr
Lampa for suggesting that system functions inside of a signal handler is
bad magic.
2002-04-18 16:57:06 +00:00
Robert James Kaes
3e60a5b819
Removed the LOOKUP_LOCK() and LOOKUP_UNLOCK() macros since I believe I
...
need locking around both gethostbyname() and gethostbyaddr() at the same
time.
2002-04-17 20:56:13 +00:00
Robert James Kaes
1d85484c3a
If the initialize_conn() function fails, close the socket and return.
...
Also, changed the call to check_acl() to include the peer's IP and string
addresses.
2002-04-17 20:55:21 +00:00
Robert James Kaes
42098699db
Removed the close(connfd) call since the socket has already been closed
...
from within the handle_connection() function.
Added tests to make sure pthread_create() succeeds.
Added defined tests for pthread_cancel() since it's not available on all
platforms.
2002-04-17 20:54:26 +00:00
Robert James Kaes
44bbdb2623
Changed the check_acl() function to require the peer IP address and string
...
address from the calling function.
2002-04-17 20:52:45 +00:00
Robert James Kaes
04da777bed
Removed the duplicate calls to strlen().
2002-04-16 03:22:16 +00:00
Robert James Kaes
0e4436a070
Tightened the lookup_domain() function.
2002-04-16 03:21:46 +00:00
Robert James Kaes
ca10b1353d
Various code clean up. There is nothing new here, just mechanical changes
...
to the source to either remove code which is not needed, or consolidate
common code into a common section.
2002-04-16 03:20:43 +00:00
Robert James Kaes
c722851bce
Cleaned up the return values of the two anonymous functions to make the
...
code cleaner and smaller.
2002-04-16 03:19:19 +00:00
Robert James Kaes
4b7de22999
Added a test to make sure the "whole_buffer" could be allocated.
2002-04-15 04:16:01 +00:00
Robert James Kaes
550145d49e
Changed the variable type in read_request_line() to an unsigned variable
...
in order to detect negative returns.
2002-04-15 04:14:03 +00:00
Robert James Kaes
f0b6861998
Added an assert() call to detect design errors.
2002-04-15 04:13:14 +00:00
Robert James Kaes
a5d3212751
Changed the error boolean flag into a pointer to an error string and an
...
error code. We're storing this information because tinyproxy doesn't
output the error information until _after_ the client has sent it's
information.
2002-04-15 02:07:27 +00:00
Robert James Kaes
c86d22226f
Added additional error handling for the bind() and listen() system calls
...
when setting up the listening socket.
2002-04-13 19:03:18 +00:00
Robert James Kaes
be47c1791d
Modified the opensock() function to respect the Listen directive. If it's
...
set, bind all outgoing addresses to this local address.
2002-04-13 05:20:19 +00:00
Robert James Kaes
ecb249f424
Added code to support the new ConnectPort directive which is needed to
...
improve security of the tinyproxy system. This new directive allows the
admin to block CONNECT methods to illegal ports.
2002-04-12 17:00:42 +00:00
Robert James Kaes
660e4d5687
Added the support code to process a ConnectPort configuration directive.
2002-04-12 16:59:37 +00:00
Robert James Kaes
f1a451faea
Added a write_via_header() function which is now used in both header
...
processing functions. Also, added a list of headers to drop in the
process server header functions.
2002-04-12 03:09:04 +00:00
Robert James Kaes
85a82af5f5
Did a bit of consolidation by moving code into remove_connection_headers()
...
and added the get_content_length() function.
The process_server_headers() function was rewritten to remove the
Connection header correctly, and also retrieve the Content-Length value.
This value is needed in the relay_connection() function since there are
some remote machines which do not properly close down the connection once
the body has been retrieved. Thanks to James Flemer for finding a test
case for this problem.
2002-04-11 20:44:15 +00:00
Robert James Kaes
ce06f27a35
Added the remote_content_length variable to store the number of bytes the
...
remote server is supposed to be transmiting to the client.
2002-04-11 20:27:51 +00:00
Robert James Kaes
abdfa8b2da
Removed the dependency on LIBOBJS and instead use the ADDITIONAL_OBJECTS
...
variable in conjunction with _DEPENDENCIES and _LDADD. The change here
makes filter a "required" module in the sense that it will always be
compiled (to make sure it doesn't get out of date), but it will
conditionally included in the object file.
2002-04-10 21:51:01 +00:00
Robert James Kaes
a903b6d997
Added an extra new line at the end of the file to quiet picky compilers.
...
:)
2002-04-10 17:29:18 +00:00
Robert James Kaes
4fa5cef491
The malloc/free functions should be in stdlib.h, but if we can't find
...
stdlib.h then try including malloc.h. Maybe this will allow clean
compiling on some platforms.
2002-04-09 22:02:05 +00:00
Robert James Kaes
eef4559783
Removed the compare_header() function since it's been replaced by a call
...
the anonymous_search().
Added a few more log_message() calls to better explain error conditions.
Fixed up a problem with X-Tinyproxy sending logic.
2002-04-09 20:06:24 +00:00
Robert James Kaes
0c5bd57698
Added more include logic code to be more portable.
2002-04-09 20:05:15 +00:00
Robert James Kaes
7409281e34
Replaced the internally used linked list with a call to the hashmap
...
module. Code reuse is a good thing.
2002-04-09 20:04:39 +00:00
Robert James Kaes
3c631c6e5c
James Flemer cleaned up the make_netmask() function to remove the static
...
table. Very nice.
2002-04-09 19:11:09 +00:00
Robert James Kaes
2f54303d98
Cleaned up the include lines to be slightly more portable (I hope.)
2002-04-09 16:28:13 +00:00
Robert James Kaes
eb78e5e1f4
Added the cancelation setting to make sure the thread stops immediately.
2002-04-09 00:37:43 +00:00
Robert James Kaes
0d66719c5a
Just moved the looping code from main() into thread_main_loop().
2002-04-08 21:35:10 +00:00
Robert James Kaes
bf82c863bc
Just a variable name change to make it easier to read.
2002-04-07 21:37:07 +00:00
Robert James Kaes
1d52d9d510
Updated the copyright notice.
2002-04-07 21:36:39 +00:00
Robert James Kaes
fb736ec3fb
A _tonne_ of changes. It would almost be easier to just read the source
...
itself to find out all the changes. Changed the process_client_header()
function to use the hashmap and vector modules. I've made this change to
better handle the Connection header. The Connection header, it it's
present, lists all the headers which should _not_ be transmitted any
further along. An HTTP/1.1 proxy must respect this.
Other changes are basically cosmetic.
2002-04-07 21:35:59 +00:00
Robert James Kaes
5e9aa90009
Update the list of source code files to include the vector and hashmap
...
files.
2002-04-07 21:33:38 +00:00
Robert James Kaes
97a72783f5
Cleaned up some of the code to handle errors better. Also, a little bit
...
easier to read in the variable department.
2002-04-07 21:32:01 +00:00
Robert James Kaes
5b3658b122
A hashmap implementation. I use this for storing the headers from the
...
client.
2002-04-07 21:30:02 +00:00