Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 24 additions & 20 deletions webext/app/credential_manager_shim.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from enum import Enum
import json
import logging
import signal
import struct
import sys
from typing import Optional
Expand Down Expand Up @@ -395,23 +396,26 @@ async def run(cmd, options, origin, top_origin):
raise Exception(f"unknown cmd: {cmd}")


logging.info("starting credential_manager_shim")
while True:
logging.debug("starting event loop message")
receivedMessage = getMessage()
request_id = receivedMessage["requestId"]
try:
cmd = receivedMessage["cmd"]

options = None
if "options" in receivedMessage:
options = receivedMessage["options"]
origin = receivedMessage["origin"]
top_origin = receivedMessage["topOrigin"]
loop = asyncio.get_event_loop()
auth_data = loop.run_until_complete(run(cmd, options, origin, top_origin))
sendMessage(encodeMessage({"requestId": request_id, "data": auth_data}))
except Exception as e:
logging.error("Failed to send message", exc_info=e)
sendMessage(encodeMessage({"requestId": request_id, "error": str(e)}))
logging.debug("Sent error message")
quit = asyncio.Event()

async def main():
logging.info("starting credential_manager_shim")
while not quit.is_set():
logging.debug("starting event loop message")
receivedMessage = getMessage()
request_id = receivedMessage["requestId"]
try:
cmd = receivedMessage["cmd"]
options = receivedMessage.get("options", None)
origin = receivedMessage["origin"]
top_origin = receivedMessage["topOrigin"]
auth_data = await run(cmd, options, origin, top_origin)
sendMessage(encodeMessage({"requestId": request_id, "data": auth_data}))
except Exception as e:
logging.error("Failed to send message", exc_info=e)
sendMessage(encodeMessage({"requestId": request_id, "error": str(e)}))
logging.debug("Sent error message")
logging.info("quitting credential_manager_shim")

signal.signal(signal.SIGTERM, lambda _, __ : quit.set())
asyncio.run(main())