ipc: Handle None-socket in slots correctly.
This commit is contained in:
parent
27ee09a7a1
commit
b40fb4dd43
@ -141,8 +141,8 @@ class IPCServer(QObject):
|
|||||||
def on_error(self, err):
|
def on_error(self, err):
|
||||||
"""Convenience method which calls _socket_error on an error."""
|
"""Convenience method which calls _socket_error on an error."""
|
||||||
if self._socket is None:
|
if self._socket is None:
|
||||||
# Sometimes this gets called from stale sockets, especially in
|
log.ipc.warn("In on_error with None socket!")
|
||||||
# tests.
|
# Sometimes this gets called from stale sockets.
|
||||||
return
|
return
|
||||||
self._timer.stop()
|
self._timer.stop()
|
||||||
log.ipc.debug("Socket error {}: {}".format(
|
log.ipc.debug("Socket error {}: {}".format(
|
||||||
@ -185,7 +185,9 @@ class IPCServer(QObject):
|
|||||||
"""Clean up socket when the client disconnected."""
|
"""Clean up socket when the client disconnected."""
|
||||||
log.ipc.debug("Client disconnected.")
|
log.ipc.debug("Client disconnected.")
|
||||||
self._timer.stop()
|
self._timer.stop()
|
||||||
if self._socket is not None:
|
if self._socket is None:
|
||||||
|
log.ipc.warn("In on_disconnected with None socket!")
|
||||||
|
else:
|
||||||
self._socket.deleteLater()
|
self._socket.deleteLater()
|
||||||
self._socket = None
|
self._socket = None
|
||||||
# Maybe another connection is waiting.
|
# Maybe another connection is waiting.
|
||||||
@ -194,7 +196,7 @@ class IPCServer(QObject):
|
|||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def on_ready_read(self):
|
def on_ready_read(self):
|
||||||
"""Read json data from the client."""
|
"""Read json data from the client."""
|
||||||
if self._socket is None: # pragma: no cover
|
if self._socket is None:
|
||||||
# This happens when doing a connection while another one is already
|
# This happens when doing a connection while another one is already
|
||||||
# active for some reason.
|
# active for some reason.
|
||||||
log.ipc.warn("In on_ready_read with None socket!")
|
log.ipc.warn("In on_ready_read with None socket!")
|
||||||
|
@ -368,3 +368,21 @@ def test_timeout(qtbot, caplog, qlocalsocket, ipc_server):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
assert caplog.records()[-1].message == "IPC connection timed out."
|
assert caplog.records()[-1].message == "IPC connection timed out."
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('method, args', [
|
||||||
|
('on_error', [0]),
|
||||||
|
('on_disconnected', []),
|
||||||
|
('on_ready_read', []),
|
||||||
|
])
|
||||||
|
def test_ipcserver_socket_none(ipc_server, caplog, method, args):
|
||||||
|
func = getattr(ipc_server, method)
|
||||||
|
assert ipc_server._socket is None
|
||||||
|
|
||||||
|
with caplog.atLevel(logging.WARNING):
|
||||||
|
func(*args)
|
||||||
|
|
||||||
|
records = caplog.records()
|
||||||
|
assert len(records) == 1
|
||||||
|
msg = "In {} with None socket!".format(method)
|
||||||
|
assert records[0].message == msg
|
||||||
|
Loading…
Reference in New Issue
Block a user