bind9/lib/isc
Ondřej Surý fffd444440
Cleanup the asychronous code in the stream implementations
After the loopmgr work has been merged, we can now cleanup the TCP and
TLS protocols a little bit, because there are stronger guarantees that
the sockets will be kept on the respective loops/threads.  We only need
asynchronous call for listening sockets (start, stop) and reading from
the TCP (because the isc_nm_read() might be called from read callback
again.

This commit does the following changes (they are intertwined together):

1. Cleanup most of the asynchronous events in the TCP code, and add
   comments for the events that needs to be kept asynchronous.

2. Remove isc_nm_resumeread() from the netmgr API, and replace
   isc_nm_resumeread() calls with existing isc_nm_read() calls.

3. Remove isc_nm_pauseread() from the netmgr API, and replace
   isc_nm_pauseread() calls with a new isc_nm_read_stop() call.

4. Disable the isc_nm_cancelread() for the streaming protocols, only the
   datagram-like protocols can use isc_nm_cancelread().

5. Add isc_nmhandle_close() that can be used to shutdown the socket
  earlier than after the last detach.  Formerly, the socket would be
  closed only after all reading and sending would be finished and the
  last reference would be detached.  The new isc_nmhandle_close() can
  be used to close the underlying socket earlier, so all the other
  asynchronous calls would call their respective callbacks immediately.

Co-authored-by: Ondřej Surý <ondrej@isc.org>
Co-authored-by: Artem Boldariev <artem@isc.org>
2022-09-22 14:51:15 +02:00
..
include Cleanup the asychronous code in the stream implementations 2022-09-22 14:51:15 +02:00
netmgr Cleanup the asychronous code in the stream implementations 2022-09-22 14:51:15 +02: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 Simplify way we tag unreachable code with only ISC_UNREACHABLE() 2022-03-25 08:33:43 +01:00
astack.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
async.c New event loop handling API 2022-08-25 12:24:29 +02:00
backtrace.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
base32.c Remove use of the inline keyword used as suggestion to compiler 2022-03-25 08:33:43 +01:00
base64.c Remove use of the inline keyword used as suggestion to compiler 2022-03-25 08:33:43 +01:00
bind9.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
buffer.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
commandline.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
condition.c Enable tracking of pthreads condition variables 2022-07-13 13:19:32 +02: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 Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
entropy.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
entropy_private.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
errno.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
errno2result.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
errno2result.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
error.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
event.c Simplify the isc_event API 2022-08-25 12:24:25 +02:00
file.c Use the semantic patch to do the unsigned -> unsigned int change 2022-09-19 15:56:02 +02:00
fsaccess.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
fsaccess_common.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
fsaccess_common_p.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
glob.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
hash.c General-purpose unrolled ASCII tolower() loops 2022-09-12 12:18:57 +01:00
heap.c Make isc_heap_create() and isc_heap_insert() return void 2022-03-08 11:19:34 +01:00
hex.c Consolidate some ASCII tables in isc/ascii and isc/hex 2022-09-12 12:18:57 +01:00
hmac.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
ht.c Make isc_ht optionally case insensitive 2022-03-28 15:02:18 -07:00
httpd.c Cleanup the asychronous code in the stream implementations 2022-09-22 14:51:15 +02:00
interfaceiter.c Simplify way we tag unreachable code with only ISC_UNREACHABLE() 2022-03-25 08:33:43 +01:00
iterated_hash.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
jemalloc_shim.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
job.c New event loop handling API 2022-08-25 12:24:29 +02:00
job_p.h New event loop handling API 2022-08-25 12:24:29 +02:00
lex.c Remove use of the inline keyword used as suggestion to compiler 2022-03-25 08:33:43 +01:00
lib.c Use library constructor to create default mutex attr once 2022-07-13 13:19:32 +02:00
log.c Use the semantic patch to do the unsigned -> unsigned int change 2022-09-19 15:56:02 +02:00
loop.c New event loop handling API 2022-08-25 12:24:29 +02:00
loop_p.h Convert isc_ratelimiter API to use on-loop timers 2022-09-21 14:25:33 -07:00
Makefile.am Move random number re-seeding out of the hot path 2022-09-19 16:27:12 +02:00
managers.c Update netmgr, tasks, and applications to use isc_loopmgr 2022-08-26 09:09:24 +02:00
md.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
mem.c Add mctx attach/detach when creating/destroying a memory pool 2022-09-02 08:16:17 +00: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 Enable tracking of pthreads mutexes 2022-07-13 13:19:32 +02: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 use of the inline keyword used as suggestion to compiler 2022-03-25 08:33:43 +01:00
netaddr.c Simplify way we tag unreachable code with only ISC_UNREACHABLE() 2022-03-25 08:33:43 +01:00
netscope.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
nonce.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01: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 Remove use of the inline keyword used as suggestion to compiler 2022-03-25 08:33:43 +01: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
portset.c Remove use of the inline keyword used as suggestion to compiler 2022-03-25 08:33:43 +01:00
quota.c REQUIRE should not have side effects 2022-07-05 12:22:55 -07:00
radix.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
random.c Ensure the first random number is non-zero when fuzzing 2022-09-21 12:47:26 +01:00
random_p.h Move random number re-seeding out of the hot path 2022-09-19 16:27:12 +02:00
ratelimiter.c Convert isc_ratelimiter API to use on-loop timers 2022-09-21 14:25:33 -07:00
regex.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
region.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
resource.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
result.c Add ISC_R_TLSBADPEERCERT error code to the TLS related code 2022-03-28 15:32:30 +03:00
rwlock.c Improve reporting for read-write lock errors 2022-07-13 13:19:32 +02: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 New event loop handling API 2022-08-25 12:24:29 +02:00
siphash.c Simplify way we tag unreachable code with only ISC_UNREACHABLE() 2022-03-25 08:33:43 +01:00
sockaddr.c Simplify way we tag unreachable code with only ISC_UNREACHABLE() 2022-03-25 08:33:43 +01:00
stats.c Assert if statistics counter underflows in the developer mode 2022-02-10 17:18:09 +01:00
stdio.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
stdtime.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
string.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
symtab.c Consolidate some ASCII tables in isc/ascii and isc/hex 2022-09-12 12:18:57 +01:00
syslog.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
task.c Update netmgr, tasks, and applications to use isc_loopmgr 2022-08-26 09:09:24 +02:00
tests Move all the unit tests to /tests/<libname>/ 2022-05-28 14:53:02 -07:00
thread.c Fix error reporting for POSIX Threads functions 2022-09-09 20:25:47 +02:00
tid.c New event loop handling API 2022-08-25 12:24:29 +02:00
time.c Remove use of the inline keyword used as suggestion to compiler 2022-03-25 08:33:43 +01:00
timer.c Require isc_timer to be manipulated on the timer loop 2022-09-21 14:25:33 -07:00
tls.c REQUIRE should not have side effects 2022-07-05 12:22:55 -07:00
tls_p.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
tm.c Consolidate some ASCII tables in isc/ascii and isc/hex 2022-09-12 12:18:57 +01:00
trampoline.c Move random number re-seeding out of the hot path 2022-09-19 16:27:12 +02:00
trampoline_p.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
url.c Simplify way we tag unreachable code with only ISC_UNREACHABLE() 2022-03-25 08:33:43 +01:00
utf8.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
uv.c Restore the implementation of uv_os_getenv() shim 2022-05-04 12:31:46 +02:00
work.c New event loop handling API 2022-08-25 12:24:29 +02:00