* src/config.c (POUND_DEFAULTS): New field: header_options.
(parse_header_options): New function.
(listener_alloc): Initialize header_options.
(http_parsetab, https_parsetab, top_level_parsetab): New directive:
HeaderOption.
* src/http.c (http_header_list_locate_name): New function.
(http_header_list_append): Check if the header being added is already
in the list. If so, act as instructed by the "replace" argument.
(http_header_list_append_list): Likewise.
(add_forwarded_headers): New function.
(do_http): Apply all header modifications after having selected the
service. First, canned headers are added, then user-defined headers
added, then header removal directives are applied.
* src/pound.h (http_header_list_append): Change signature. All uses
changed.
* tests/Makefile.am: Add new tests.
* tests/https.at: Remove unnecessary ClientCert directive.
* tests/optfwd.at: New test.
* tests/optorder.at: New test.
* tests/optssl.at: New test.
* tests/poundharness.pl: New variable expansions: LISTENER:PORT and
LISTENER:IP. Same for BACKEND.
* tests/testsuite.at: Include new tests.
* NEWS: Document changes.
* doc/pound.8: Document changes.
* configure.ac: Version 4.3.90
* pound.h: Move externs to extern.h
(SLIST_HEAD,SLIST_HEAD_INITIALIZER,SLIST_ENTRY)
(SLIST_INIT,SLIST_PUSH,SLIST_SHIFT,SLIST_FOREACH)
(SLIST_COPY,SLIST_FIRST,SLIST_EMPTY,SLIST_NEXT): New macros.
(MATCHER, BACKEND, SERVICE)
(POUND_CTX, LISTENER): Change type of the next field.
(MATCHER_HEAD, BACKEND_HEAD, SERVICE_HEAD)
(POUND_CTX_HEAD, LISTENER_HEAD): New aggregate types.
* extern.h: New file.
* Makefile.am (noinst_HEADERS): Add new files.
* config.c: Include extern.h
Use SLIST macros to manipulate lists.
(parse_emergency): Only one emergency block is allowed.
* http.c: Use SLIST macros to manipulate lists.
* pound.c: Likewise.
* svc.c: Likewise.
* poundctl.c: Likewise.
* tests/Makefile.am: Add new files.
* tests/testsuite.at: Likewise.
* tests/https.at: New file.
* tests/virthost.at: New file.
* tests/poundharness.pl: Add https support and regex matching for
headers.