Skip to content

Commit 18b2fb8

Browse files
olethanhnesitor
authored andcommitted
mod: Use signal to add server version header
Use a signal instead of a middleware to add the 'Server' version header as in some case (StreamResponse, Websocket) it would not work and display warning see: https://docs.aiohttp.org/en/stable/web_advanced.html#signals
1 parent a4ee1b5 commit 18b2fb8

File tree

1 file changed

+7
-15
lines changed

1 file changed

+7
-15
lines changed

src/aleph/vm/orchestrator/supervisor.py

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
import asyncio
1010
import logging
11-
from collections.abc import Awaitable, Callable
1211
from pathlib import Path
1312
from secrets import token_urlsafe
1413

@@ -61,19 +60,6 @@
6160
logger = logging.getLogger(__name__)
6261

6362

64-
@web.middleware
65-
async def server_version_middleware(
66-
request: web.Request,
67-
handler: Callable[[web.Request], Awaitable[web.StreamResponse]],
68-
) -> web.StreamResponse:
69-
"""Add the version of Aleph-VM in the HTTP headers of the responses."""
70-
resp: web.StreamResponse = await handler(request)
71-
resp.headers.update(
72-
{"Server": f"aleph-vm/{__version__}"},
73-
)
74-
return resp
75-
76-
7763
@web.middleware
7864
async def error_middleware(request, handler) -> web.Response:
7965
"Ensure we always return a JSON response for errors."
@@ -103,13 +89,19 @@ async def error_middleware(request, handler) -> web.Response:
10389
assert False, "unreachable"
10490

10591

92+
async def on_prepare_server_version(request: web.Request, response: web.Response) -> None:
93+
"""Add the version of Aleph-VM in the HTTP headers of the responses."""
94+
response.headers["Server"] = f"aleph-vm/{__version__}"
95+
96+
10697
async def http_not_found(request: web.Request):
10798
"""Return a 404 error for unknown URLs."""
10899
return web.HTTPNotFound()
109100

110101

111102
def setup_webapp():
112-
app = web.Application(middlewares=[server_version_middleware, error_middleware])
103+
app = web.Application(middlewares=[error_middleware])
104+
app.on_response_prepare.append(on_prepare_server_version)
113105
cors = setup(
114106
app,
115107
defaults={

0 commit comments

Comments
 (0)