|
11 | 11 | import aiodns |
12 | 12 | import aiohttp |
13 | 13 | from aiohttp import web |
14 | | -from aiohttp.web_exceptions import HTTPNotFound |
| 14 | +from aiohttp.web_exceptions import HTTPBadRequest, HTTPNotFound |
15 | 15 | from aleph_message.exceptions import UnknownHashError |
16 | 16 | from aleph_message.models import ItemHash, MessageType |
17 | 17 | from pydantic import ValidationError |
@@ -65,7 +65,13 @@ async def run_code_from_path(request: web.Request) -> web.Response: |
65 | 65 | path = request.match_info["suffix"] |
66 | 66 | path = path if path.startswith("/") else f"/{path}" |
67 | 67 |
|
68 | | - message_ref = ItemHash(request.match_info["ref"]) |
| 68 | + try: |
| 69 | + message_ref = ItemHash(request.match_info["ref"]) |
| 70 | + except UnknownHashError as e: |
| 71 | + raise HTTPBadRequest( |
| 72 | + reason="Invalid message reference", text=f"Invalid message reference: {request.match_info['ref']}" |
| 73 | + ) from e |
| 74 | + |
69 | 75 | pool: VmPool = request.app["vm_pool"] |
70 | 76 | return await run_code_on_request(message_ref, path, pool, request) |
71 | 77 |
|
@@ -98,8 +104,10 @@ async def run_code_from_hostname(request: web.Request) -> web.Response: |
98 | 104 | try: |
99 | 105 | message_ref = ItemHash(await get_ref_from_dns(domain=f"_aleph-id.{request.host}")) |
100 | 106 | logger.debug(f"Using DNS TXT record to obtain '{message_ref}'") |
101 | | - except aiodns.error.DNSError as error: |
102 | | - raise HTTPNotFound(reason="Invalid message reference") from error |
| 107 | + except aiodns.error.DNSError: |
| 108 | + return HTTPNotFound(reason="Invalid message reference") |
| 109 | + except UnknownHashError: |
| 110 | + return HTTPNotFound(reason="Invalid message reference") |
103 | 111 |
|
104 | 112 | pool = request.app["vm_pool"] |
105 | 113 | return await run_code_on_request(message_ref, path, pool, request) |
|
0 commit comments