diff --git a/async_substrate_interface/async_substrate.py b/async_substrate_interface/async_substrate.py index 5e9c8d6..dcc5ceb 100644 --- a/async_substrate_interface/async_substrate.py +++ b/async_substrate_interface/async_substrate.py @@ -4142,6 +4142,14 @@ async def result_handler(message: dict, subscription_id) -> tuple[dict, bool]: "extrinsic_hash": "0x{}".format(extrinsic.extrinsic_hash.hex()), "finalized": False, }, True + + elif "params" in message and message["params"].get("result") == "invalid": + failure_message = f"Subscription {subscription_id} invalid: {message}" + async with self.ws as ws: + await ws.unsubscribe(subscription_id) + logger.error(failure_message) + raise SubstrateRequestException(failure_message) + return message, False if wait_for_inclusion or wait_for_finalization: diff --git a/async_substrate_interface/sync_substrate.py b/async_substrate_interface/sync_substrate.py index 86f6ec2..f6ff5b6 100644 --- a/async_substrate_interface/sync_substrate.py +++ b/async_substrate_interface/sync_substrate.py @@ -3273,6 +3273,13 @@ def result_handler(message: dict, subscription_id) -> tuple[dict, bool]: "extrinsic_hash": "0x{}".format(extrinsic.extrinsic_hash.hex()), "finalized": False, }, True + + elif "params" in message and message["params"].get("result") == "invalid": + failure_message = f"Subscription {subscription_id} invalid: {message}" + self.rpc_request("author_unwatchExtrinsic", [subscription_id]) + logger.error(failure_message) + raise SubstrateRequestException(failure_message) + return message, False if wait_for_inclusion or wait_for_finalization: