Convert ACME code to async/await. (#7989)

This commit is contained in:
Patrick Cloke 2020-08-03 07:09:33 -04:00 committed by GitHub
parent d1008fe949
commit db5970ac6d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 14 deletions

1
changelog.d/7989.misc Normal file
View File

@ -0,0 +1 @@
Convert various parts of the codebase to async/await.

View File

@ -380,13 +380,12 @@ def setup(config_options):
hs.setup_master() hs.setup_master()
@defer.inlineCallbacks async def do_acme() -> bool:
def do_acme():
""" """
Reprovision an ACME certificate, if it's required. Reprovision an ACME certificate, if it's required.
Returns: Returns:
Deferred[bool]: Whether the cert has been updated. Whether the cert has been updated.
""" """
acme = hs.get_acme_handler() acme = hs.get_acme_handler()
@ -405,7 +404,7 @@ def setup(config_options):
provision = True provision = True
if provision: if provision:
yield acme.provision_certificate() await acme.provision_certificate()
return provision return provision
@ -415,7 +414,7 @@ def setup(config_options):
Provision a certificate from ACME, if required, and reload the TLS Provision a certificate from ACME, if required, and reload the TLS
certificate if it's renewed. certificate if it's renewed.
""" """
reprovisioned = yield do_acme() reprovisioned = yield defer.ensureDeferred(do_acme())
if reprovisioned: if reprovisioned:
_base.refresh_certificate(hs) _base.refresh_certificate(hs)
@ -427,8 +426,8 @@ def setup(config_options):
acme = hs.get_acme_handler() acme = hs.get_acme_handler()
# Start up the webservices which we will respond to ACME # Start up the webservices which we will respond to ACME
# challenges with, and then provision. # challenges with, and then provision.
yield acme.start_listening() yield defer.ensureDeferred(acme.start_listening())
yield do_acme() yield defer.ensureDeferred(do_acme())
# Check if it needs to be reprovisioned every day. # Check if it needs to be reprovisioned every day.
hs.get_clock().looping_call(reprovision_acme, 24 * 60 * 60 * 1000) hs.get_clock().looping_call(reprovision_acme, 24 * 60 * 60 * 1000)

View File

@ -17,7 +17,6 @@ import logging
import twisted import twisted
import twisted.internet.error import twisted.internet.error
from twisted.internet import defer
from twisted.web import server, static from twisted.web import server, static
from twisted.web.resource import Resource from twisted.web.resource import Resource
@ -41,8 +40,7 @@ class AcmeHandler(object):
self.reactor = hs.get_reactor() self.reactor = hs.get_reactor()
self._acme_domain = hs.config.acme_domain self._acme_domain = hs.config.acme_domain
@defer.inlineCallbacks async def start_listening(self):
def start_listening(self):
from synapse.handlers import acme_issuing_service from synapse.handlers import acme_issuing_service
# Configure logging for txacme, if you need to debug # Configure logging for txacme, if you need to debug
@ -82,18 +80,17 @@ class AcmeHandler(object):
self._issuer._registered = False self._issuer._registered = False
try: try:
yield self._issuer._ensure_registered() await self._issuer._ensure_registered()
except Exception: except Exception:
logger.error(ACME_REGISTER_FAIL_ERROR) logger.error(ACME_REGISTER_FAIL_ERROR)
raise raise
@defer.inlineCallbacks async def provision_certificate(self):
def provision_certificate(self):
logger.warning("Reprovisioning %s", self._acme_domain) logger.warning("Reprovisioning %s", self._acme_domain)
try: try:
yield self._issuer.issue_cert(self._acme_domain) await self._issuer.issue_cert(self._acme_domain)
except Exception: except Exception:
logger.exception("Fail!") logger.exception("Fail!")
raise raise