bind9/lib/isc
Tony Finch e18ca83a3b Improve statschannel HTTP Connection: header protocol conformance
In HTTP/1.0 and HTTP/1.1, RFC 9112 section 9.6 says the last response
in a connection should include a `Connection: close` header, but the
statschannel server omitted it.

In an HTTP/1.0 response, the statschannel server can sometimes send a
`Connection: keep-alive` header when it is about to close the
connection. There are two ways:

If the first request on a connection is keep-alive and the second
request is not, then _both_ responses have `Connection: keep-alive`
but the connection is (correctly) closed after the second response.

If a single request contains

	Connection: close
	Connection: keep-alive

then RFC 9112 section 9.3 says the keep-alive header is ignored, but
the statschannel sends a spurious keep-alive in its response, though
it correctly closes the connection.

To fix these bugs, make it more clear that the `httpd->flags` are part
of the per-request-response state. The Connection: flags are now
described in terms of the effect they have instead of what causes them
to be set.
2023-06-15 17:03:09 +01:00
..
include Make isc_result tables smaller 2023-06-15 15:32:04 +02:00
netmgr allow streamdns read to resume after timeout 2023-05-13 23:31:45 -07:00
.gitignore [master] update gitignore files; use rev-parse to get srcid 2014-06-17 13:49:30 -07:00
aes.c Remove EVP_CIPHER_CTX_new() and EVP_CIPHER_CTX_free() shims 2022-03-02 10:48:09 +00:00
ascii.c Consolidate some ASCII tables in isc/ascii and isc/hex 2022-09-12 12:18:57 +01:00
assertions.c Ad-hoc backtrace logging with isc_backtrace_log() 2023-03-29 10:47:53 +00:00
async.c Help thread sanitizer to cope with liburcu 2023-05-12 20:48:31 +01:00
async_p.h Change the isc_async API to use cds_wfcqueue internally 2023-05-12 14:16:25 +02:00
backtrace.c Ad-hoc backtrace logging with isc_backtrace_log() 2023-03-29 10:47:53 +00:00
base32.c Silence uninitialized value false positives 2023-03-08 22:40:03 +00:00
base64.c Remove use of the inline keyword used as suggestion to compiler 2022-03-25 08:33:43 +01:00
commandline.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
condition.c De-duplicate some calls to strerror_r() 2022-10-17 11:58:26 +01:00
counter.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
crc64.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
dir.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
entropy.c Switch the CSPRNG function from RAND_bytes() to uv_random() 2022-09-26 15:13:11 +02:00
errno.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
errno2result.c Translate POSIX errorcode EROFS to ISC_R_NOPERM 2023-06-14 13:12:45 +01:00
errno2result.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
error.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
file.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
fips.c Define isc_fips_mode() and isc_fips_set_mode() 2023-04-03 12:05:28 +10:00
getaddresses.c Move bind9_getaddresses() to isc_getaddresses() 2023-02-21 13:12:26 +00:00
hash.c Improve reporting for pthread_once errors 2022-10-14 16:39:21 +02:00
hashmap.c Replace __attribute__((unused)) with ISC_ATTR_UNUSED attribute macro 2023-03-30 23:29:25 +02:00
heap.c Update sources to Clang 15 formatting 2022-11-29 08:54:34 +01:00
hex.c Consolidate some ASCII tables in isc/ascii and isc/hex 2022-09-12 12:18:57 +01:00
histo.c A macro for the size of a struct with a flexible array member 2023-05-12 20:48:31 +01:00
hmac.c Fix memory leak in isc_hmac_init 2023-02-26 22:56:07 +00:00
ht.c A macro for the size of a struct with a flexible array member 2023-05-12 20:48:31 +01:00
httpd.c Improve statschannel HTTP Connection: header protocol conformance 2023-06-15 17:03:09 +01:00
interfaceiter.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
iterated_hash.c Require C11 thread_local keyword and <threads.h> header 2023-02-08 21:33:23 +01:00
jemalloc_shim.h Fix ISC_MEM_ZERO on allocators with malloc_usable_size() 2023-02-06 11:21:12 +00:00
job.c Change the isc_async API to use cds_wfcqueue internally 2023-05-12 14:16:25 +02:00
job_p.h Change the isc_async API to use cds_wfcqueue internally 2023-05-12 14:16:25 +02:00
lex.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
lib.c Fixes for liburcu-qsbr 2023-05-15 20:49:42 +00:00
log.c Re-write remove_old_tsversions and greatest_version 2023-05-03 09:12:34 +02:00
loop.c Fixes for liburcu-qsbr 2023-05-15 20:49:42 +00:00
loop_p.h Remove isc_qsbr (we are using liburcu instead) 2023-05-12 20:48:31 +01:00
Makefile.am Remove <isc/cmocka.h> 2023-05-18 15:12:23 +02:00
managers.c remove isc_task completely 2023-02-16 18:35:32 +01:00
md.c Handle MD5 not being supported by lib crypto 2023-04-03 12:44:27 +10:00
mem.c Wait for RCU to finish before destroying a memory context 2023-05-12 20:48:31 +01:00
mem_p.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
meminfo.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
mutex.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
mutex_p.h Use library constructor to create default mutex attr once 2022-07-13 13:19:32 +02:00
mutexblock.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
net.c Remove do-nothing header <isc/netdb.h> 2023-02-15 16:44:47 +00:00
netaddr.c Replace DE_CONST(k, v) with v = UNCONST(k) macro 2023-04-03 10:25:56 +00:00
netscope.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
nonce.c Switch the CSPRNG function from RAND_bytes() to uv_random() 2022-09-26 15:13:11 +02:00
openssl_shim.c Do not provide a shim for SSL_SESSION_is_resumable() 2022-05-23 18:25:18 +03:00
openssl_shim.h Do not provide a shim for SSL_SESSION_is_resumable() 2022-05-23 18:25:18 +03:00
os.c Add isc_os_umask() function to get current umask 2023-03-31 12:52:59 +00:00
os_p.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
parseint.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
picohttpparser.c Update sources to Clang 15 formatting 2022-11-29 08:54:34 +01:00
picohttpparser.h Add picohttpparser.{c.h} from https://github.com/h2o/picohttpparser 2022-10-14 11:26:54 +02:00
portset.c Use designated initializers instead of memset()/MEM_ZERO for structs 2022-10-05 16:44:05 +02:00
quota.c Help thread sanitizer to cope with liburcu 2023-05-12 20:48:31 +01:00
radix.c Move isc_mem_put to after node is checked for equality 2023-05-29 01:40:57 +00:00
random.c Move the isc_random API initialization to the thread_local variable 2023-04-27 12:38:53 +02:00
ratelimiter.c remove isc_task completely 2023-02-16 18:35:32 +01:00
regex.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
region.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
result.c Make isc_result tables smaller 2023-06-15 15:32:04 +02:00
rwlock.c Add the reader-writer synchronization with modified C-RW-WP 2023-02-15 09:30:04 +01:00
safe.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
serial.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
signal.c Fix a crash when dig or host receive a signal 2023-03-31 09:52:54 +00:00
siphash.c Silence NULL pointer dereferene false positive 2023-04-03 13:32:40 +00:00
sockaddr.c add ns_interface_create() 2023-03-28 12:38:28 -07:00
stats.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
stdio.c Remove do-nothing header <isc/stat.h> 2023-02-15 16:44:47 +00:00
stdtime.c Provide isc_stdtime_now(void) that returns value 2023-03-31 13:16:28 +02:00
string.c Explain <isc/strerr.h> a little more 2023-02-15 16:44:09 +00:00
symtab.c Replace DE_CONST(k, v) with v = UNCONST(k) macro 2023-04-03 10:25:56 +00:00
syslog.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
tests Move all the unit tests to /tests/<libname>/ 2022-05-28 14:53:02 -07:00
thread.c Ensure "wrap" variable is non-NULL 2023-05-19 11:02:59 +02:00
tid.c Make isc_tid() a header-only function 2023-04-12 14:10:37 +02:00
time.c Refactor isc_time_now() to return time, and not result 2023-03-31 15:02:06 +02:00
timer.c remove isc_task completely 2023-02-16 18:35:32 +01:00
tls.c Don't check for OPENSSL_cleanup failures by default 2023-04-03 12:44:27 +10:00
tm.c Replace DE_CONST(k, v) with v = UNCONST(k) macro 2023-04-03 10:25:56 +00:00
url.c Update sources to Clang 15 formatting 2022-11-29 08:54:34 +01:00
utf8.c Update sources to Clang 15 formatting 2022-11-29 08:54:34 +01:00
uv.c add a result code for ENOPROTOOPT, EPROTONOSUPPORT 2023-04-21 12:42:10 +02:00
work.c Improve the Userspace RCU integration 2023-04-27 12:38:53 +02:00
xml.c Add autoconf option to enable memory leak detection in libraries 2022-09-27 17:53:04 +02:00