programatik29 / axum-server

High level server designed to be used with axum framework.
MIT License
177 stars 63 forks source link

Concurrent SSL handshakes #55

Closed finnbear closed 2 years ago

finnbear commented 2 years ago

The way the accept loop is currently written, it seems as though accepting is done in serial

https://github.com/programatik29/axum-server/blob/04bbd9f90c6db1e36e970644b2a5ab3256434e77/src/server.rs#L173-L178

For HTTPS, it seems as though the SSL handshake is done in the acceptor:

https://github.com/programatik29/axum-server/blob/dfafcbdfec81497e8278eae2e12caa80d43ef2a0/src/tls_rustls/mod.rs#L69-L72

This implies that SSL handshakes cannot take place concurrently, which can cause unavailability if one user's SSL handshake is taking significant time.

finnbear commented 2 years ago

Ah, nevermind. Should have realized that the actual acceptor runs later, in its own task: https://github.com/programatik29/axum-server/blob/04bbd9f90c6db1e36e970644b2a5ab3256434e77/src/server.rs#L193-L194

Closing this.