summaryrefslogtreecommitdiffhomepage
path: root/src/reverse-proxy.c
AgeCommit message (Collapse)Author
2021-04-16reverse: redirect if path without trailing slash is detectedrofl0r
if for example: ReversePath = "/foo/" and user requests "http://tinyproxy/foo" the common behaviour for HTTP servers is to send a http 301 redirect to the correct url. we now do the same.
2021-03-28reverse: ensure paths always end with a slashrofl0r
2020-09-15save headers in an ordered dictionaryrofl0r
due to the usage of a hashmap to store headers, when relaying them to the other side the order was not prevented. even though correct from a standards point-of-view, this caused issues with various programs, and it allows to fingerprint the use of tinyproxy. to implement this, i imported the MIT-licensed hsearch.[ch] from https://github.com/rofl0r/htab which was originally taken from musl libc. it's a simple and efficient hashtable implementation with far better performance characteristic than the one previously used by tinyproxy. additionally it has an API much more well-suited for this purpose. orderedmap.[ch] was implemented from scratch to address this issue. behind the scenes it uses an sblist to store string values, and a htab to store keys and the indices into the sblist. this allows us to iterate linearly over the sblist and then find the corresponding key in the hash table, so the headers can be reproduced in the order they were received. closes #73
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.
2016-09-10Continue with forward proxy if ReverseOnly is not true and no mapping ↵Stephan Leemburg
available (#35) allow non-reverse mappings if reverseonly is not enabled
2009-12-07fix build with "--enable-reverse" after conf changesMichael Adam
Michael
2009-12-07Add free_reversepath_list().Michael Adam
Michael
2009-12-07Add a reversepath argument to reversepath_get().Michael Adam
This abstracts the setter/getter functions for the reversepath list from the concrete list in config.reversepath_list. Michael
2009-12-07Add reversepath_list parameter to reversepath_add.Michael Adam
Michael
2009-09-27Fix use of uninitialized variableMukund Sivaraman
2009-09-27Add explicit casts for c++ mode in reverse-proxy.cMukund 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-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-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.
2008-03-13Renamed file to replace underscores in it with dashesMukund Sivaraman