diff --git a/evennia/server/portal/amp.py b/evennia/server/portal/amp.py index b1eb0fd8f0..85f616b57e 100644 --- a/evennia/server/portal/amp.py +++ b/evennia/server/portal/amp.py @@ -288,13 +288,19 @@ class AMPMultiConnectionProtocol(amp.AMP): if data[-2:] != NULNUL: # an incomplete AMP box means more batches are forthcoming. self.multibatches += 1 - super(AMPMultiConnectionProtocol, self).dataReceived(data) + try: + super(AMPMultiConnectionProtocol, self).dataReceived(data) + except KeyError: + _LOGGER.trace("Discarded incoming partial data: {}".format(to_str(data))) elif self.multibatches: # invalid AMP, but we have a pending multi-batch that is not yet complete if data[-2:] == NULNUL: # end of existing multibatch self.multibatches = max(0, self.multibatches - 1) - super(AMPMultiConnectionProtocol, self).dataReceived(data) + try: + super(AMPMultiConnectionProtocol, self).dataReceived(data) + except KeyError: + _LOGGER.trace("Discarded incoming multi-batch data:".format(to_str(data))) else: # not an AMP communication, return warning self.transport.write(_HTTP_WARNING)