Support old pycddl too so nix can keep working.

This commit is contained in:
Itamar Turner-Trauring 2023-01-09 10:31:48 -05:00
parent d1b464d0d8
commit 22227c7094
2 changed files with 13 additions and 3 deletions

View File

@ -137,8 +137,11 @@ install_requires = [
"werkzeug != 2.2.0",
"treq",
"cbor2",
# Need 0.4 to be able to pass in mmap()
"pycddl >= 0.4",
# Ideally we want 0.4+ to be able to pass in mmap(), but it's not strictly
# necessary yet until we fix the workaround to
# https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3963 in
# allmydata.storage.http_server.
"pycddl",
# for pid-file support
"psutil",

View File

@ -11,6 +11,7 @@ import binascii
from tempfile import TemporaryFile
from os import SEEK_END, SEEK_SET
import mmap
from importlib.metadata import version as get_package_version
from cryptography.x509 import Certificate as CryptoCertificate
from zope.interface import implementer
@ -59,6 +60,12 @@ from ..util.base32 import rfc3548_alphabet
from allmydata.interfaces import BadWriteEnablerError
# Until we figure out Nix (https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3963),
# need to support old pycddl which can only take bytes:
from distutils.version import LooseVersion
PYCDDL_BYTES_ONLY = LooseVersion(get_package_version("pycddl")) < LooseVersion("0.4")
class ClientSecretsException(Exception):
"""The client did not send the appropriate secrets."""
@ -557,7 +564,7 @@ class HTTPServer(object):
fd = request.content.fileno()
except (ValueError, OSError):
fd = -1
if fd > 0:
if fd > 0 and not PYCDDL_BYTES_ONLY:
# It's a file, so we can use mmap() to save memory.
message = mmap.mmap(fd, 0, access=mmap.ACCESS_READ)
else: