From 29bc265a6e10d4e5daaf9fa87aa82dd010d192e8 Mon Sep 17 00:00:00 2001 From: Anton Date: Tue, 26 Feb 2019 21:12:27 +0400 Subject: pica-client: handle multilogin message in queued slot, in order to avoid calling PICA_close_c2n() inside callback which results in segfault inside PICA_event_loop() on return --- pica-client/skynet.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'pica-client/skynet.h') diff --git a/pica-client/skynet.h b/pica-client/skynet.h index 1c0c7d9..cb948e0 100644 --- a/pica-client/skynet.h +++ b/pica-client/skynet.h @@ -74,6 +74,7 @@ signals: void OutgoingFileResumed(QByteArray peer_id); void OutgoingFileFinished(QByteArray peer_id); void IncomingFileFinished(QByteArray peer_id); + void MultiloginMessageReceived(quint64 timestamp, QString node_addr, quint16 node_port); void c2cClosed(QByteArray peer_id); @@ -120,6 +121,7 @@ private: void emit_OutgoingFileFinished(QByteArray peer_id); void emit_IncomingFileFinished(QByteArray peer_id); + void emit_MultiloginMessageReceived(quint64 timestamp, QString node_addr, quint16 node_port); void emit_c2cClosed(QByteArray peer_id); @@ -162,13 +164,13 @@ private: static void listener_error_cb(struct PICA_listener *lst, int errorcode); - static void multilogin_cb(time_t timestamp, void *addr_bin, const char *addr_str, uint16_t port); + static void multilogin_cb(uint64_t timestamp, void *addr_bin, const char *addr_str, uint16_t port); private slots: void nodelink_activated(PICA_c2n *c2n); void nodelink_closed(PICA_c2n *c2n, int error); void nodelink_failed(PICA_c2n *c2n, int error); - void multilogin_event(time_t timestamp, const char *addr, uint16_t port); + void multilogin_event(quint64 timestamp, QString node_addr, quint16 node_port); void node_status_changed(Nodes::NodeRecord nr, bool alive); void verify_peer_cert(QByteArray peer_id, QString cert_pem, bool *verified); -- cgit v1.2.1