python/aqmp: add configurable read buffer limit
QMP can transmit some pretty big messages, and the default limit of 64KB isn't sufficient. Make sure that we can configure it. Reported-by: G S Niteesh Babu <niteesh.gs@gmail.com> Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-id: 20210915162955.333025-11-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
parent
774c64a58d
commit
2686ac1316
@ -189,6 +189,9 @@ class AsyncProtocol(Generic[T]):
|
|||||||
#: Logger object for debugging messages from this connection.
|
#: Logger object for debugging messages from this connection.
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
# Maximum allowable size of read buffer
|
||||||
|
_limit = (64 * 1024)
|
||||||
|
|
||||||
# -------------------------
|
# -------------------------
|
||||||
# Section: Public interface
|
# Section: Public interface
|
||||||
# -------------------------
|
# -------------------------
|
||||||
@ -452,6 +455,7 @@ class AsyncProtocol(Generic[T]):
|
|||||||
port=address[1],
|
port=address[1],
|
||||||
ssl=ssl,
|
ssl=ssl,
|
||||||
backlog=1,
|
backlog=1,
|
||||||
|
limit=self._limit,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
coro = asyncio.start_unix_server(
|
coro = asyncio.start_unix_server(
|
||||||
@ -459,6 +463,7 @@ class AsyncProtocol(Generic[T]):
|
|||||||
path=address,
|
path=address,
|
||||||
ssl=ssl,
|
ssl=ssl,
|
||||||
backlog=1,
|
backlog=1,
|
||||||
|
limit=self._limit,
|
||||||
)
|
)
|
||||||
|
|
||||||
server = await coro # Starts listening
|
server = await coro # Starts listening
|
||||||
@ -482,9 +487,18 @@ class AsyncProtocol(Generic[T]):
|
|||||||
self.logger.debug("Connecting to %s ...", address)
|
self.logger.debug("Connecting to %s ...", address)
|
||||||
|
|
||||||
if isinstance(address, tuple):
|
if isinstance(address, tuple):
|
||||||
connect = asyncio.open_connection(address[0], address[1], ssl=ssl)
|
connect = asyncio.open_connection(
|
||||||
|
address[0],
|
||||||
|
address[1],
|
||||||
|
ssl=ssl,
|
||||||
|
limit=self._limit,
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
connect = asyncio.open_unix_connection(path=address, ssl=ssl)
|
connect = asyncio.open_unix_connection(
|
||||||
|
path=address,
|
||||||
|
ssl=ssl,
|
||||||
|
limit=self._limit,
|
||||||
|
)
|
||||||
self._reader, self._writer = await connect
|
self._reader, self._writer = await connect
|
||||||
|
|
||||||
self.logger.debug("Connected.")
|
self.logger.debug("Connected.")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user