Ensure hassio does not do blocking I/O to get forwarded host

request.host can fallback to doing blocking I/O because of
https://github.com/aio-libs/aiohttp/issues/9308
This commit is contained in:
J. Nick Koston 2024-09-27 03:33:36 -05:00
parent fb0e102d74
commit ea726e14c6
No known key found for this signature in database

View File

@ -253,15 +253,17 @@ def _init_header(request: web.Request, token: str) -> CIMultiDict | dict[str, st
headers[hdrs.X_FORWARDED_FOR] = _forwarded_for_header(forward_for, peername[0]) headers[hdrs.X_FORWARDED_FOR] = _forwarded_for_header(forward_for, peername[0])
# Set X-Forwarded-Host # Set X-Forwarded-Host
if not (forward_host := request.headers.get(hdrs.X_FORWARDED_HOST)): # Avoid calling request.host as it can fallback to doing blocking DNS lookups
forward_host = request.host # https://github.com/aio-libs/aiohttp/issues/9308
headers[hdrs.X_FORWARDED_HOST] = forward_host if forward_host := request.headers.get(
hdrs.X_FORWARDED_HOST
) or request.headers.get(hdrs.HOST):
headers[hdrs.X_FORWARDED_HOST] = forward_host
# Set X-Forwarded-Proto # Set X-Forwarded-Proto
forward_proto = request.headers.get(hdrs.X_FORWARDED_PROTO) headers[hdrs.X_FORWARDED_PROTO] = (
if not forward_proto: request.headers.get(hdrs.X_FORWARDED_PROTO) or request.scheme
forward_proto = request.scheme )
headers[hdrs.X_FORWARDED_PROTO] = forward_proto
return headers return headers