mirror of
https://mau.dev/maunium/synapse.git
synced 2024-11-17 07:21:37 +01:00
Merge pull request #3925 from matrix-org/erikj/fix_producers_unregistered
Fix spurious exceptions when client closes conncetion
This commit is contained in:
commit
94f7befc31
2 changed files with 36 additions and 14 deletions
1
changelog.d/3925.misc
Normal file
1
changelog.d/3925.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix spurious exceptions when remote http client closes conncetion
|
|
@ -84,10 +84,21 @@ def wrap_json_request_handler(h):
|
||||||
logger.info(
|
logger.info(
|
||||||
"%s SynapseError: %s - %s", request, code, e.msg
|
"%s SynapseError: %s - %s", request, code, e.msg
|
||||||
)
|
)
|
||||||
respond_with_json(
|
|
||||||
request, code, e.error_dict(), send_cors=True,
|
# Only respond with an error response if we haven't already started
|
||||||
pretty_print=_request_user_agent_is_curl(request),
|
# writing, otherwise lets just kill the connection
|
||||||
)
|
if request.startedWriting:
|
||||||
|
if request.transport:
|
||||||
|
try:
|
||||||
|
request.transport.abortConnection()
|
||||||
|
except Exception:
|
||||||
|
# abortConnection throws if the connection is already closed
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
respond_with_json(
|
||||||
|
request, code, e.error_dict(), send_cors=True,
|
||||||
|
pretty_print=_request_user_agent_is_curl(request),
|
||||||
|
)
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
# failure.Failure() fishes the original Failure out
|
# failure.Failure() fishes the original Failure out
|
||||||
|
@ -100,16 +111,26 @@ def wrap_json_request_handler(h):
|
||||||
request,
|
request,
|
||||||
f.getTraceback().rstrip(),
|
f.getTraceback().rstrip(),
|
||||||
)
|
)
|
||||||
respond_with_json(
|
# Only respond with an error response if we haven't already started
|
||||||
request,
|
# writing, otherwise lets just kill the connection
|
||||||
500,
|
if request.startedWriting:
|
||||||
{
|
if request.transport:
|
||||||
"error": "Internal server error",
|
try:
|
||||||
"errcode": Codes.UNKNOWN,
|
request.transport.abortConnection()
|
||||||
},
|
except Exception:
|
||||||
send_cors=True,
|
# abortConnection throws if the connection is already closed
|
||||||
pretty_print=_request_user_agent_is_curl(request),
|
pass
|
||||||
)
|
else:
|
||||||
|
respond_with_json(
|
||||||
|
request,
|
||||||
|
500,
|
||||||
|
{
|
||||||
|
"error": "Internal server error",
|
||||||
|
"errcode": Codes.UNKNOWN,
|
||||||
|
},
|
||||||
|
send_cors=True,
|
||||||
|
pretty_print=_request_user_agent_is_curl(request),
|
||||||
|
)
|
||||||
|
|
||||||
return wrap_async_request_handler(wrapped_request_handler)
|
return wrap_async_request_handler(wrapped_request_handler)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue