Rework the http code to require poll() only when really needed.
authorclaudio <claudio@openbsd.org>
Thu, 15 Apr 2021 14:22:05 +0000 (14:22 +0000)
committerclaudio <claudio@openbsd.org>
Thu, 15 Apr 2021 14:22:05 +0000 (14:22 +0000)
commitcec4d91c743804b9e8c40153442bb714eda67485
tree4751fb79d40ef7ec3d840353accc822d8d8c5cfb
parent0d844d36d75e18df22141637bb3bee5b0cdfb6df
Rework the http code to require poll() only when really needed.
Especially tls_read() and tls_write() do not map 1:1 to read() and write()
calls and so assuming that after a tls_read() one needs to poll for more
data is wrong. Instead call tls_read() until it returns a TLS_WANT_*
return.

While here also ignore SIGPIPE. It is almost impossible to properly guard
from SIGPIPE by looking at POLLHUP. Instead just let write() handle it and
return an error.

Putting this in now so this can be tested widely.
usr.sbin/rpki-client/http.c
usr.sbin/rpki-client/main.c