summaryrefslogtreecommitdiffstats
path: root/pica-client/skynet.h
diff options
context:
space:
mode:
authorAnton <anton@picapica>2019-02-26 21:12:27 +0400
committerAnton <anton@picapica>2019-02-26 21:12:27 +0400
commit29bc265a6e10d4e5daaf9fa87aa82dd010d192e8 (patch)
treecf635f73ec76419b834c60833a970a1c0d480dcf /pica-client/skynet.h
parent567fe3dd1c29882ecc88b2cc7505d2e423afd6f7 (diff)
downloadpica-pica-29bc265a6e10d4e5daaf9fa87aa82dd010d192e8.tar.gz
pica-pica-29bc265a6e10d4e5daaf9fa87aa82dd010d192e8.zip
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
Diffstat (limited to 'pica-client/skynet.h')
-rw-r--r--pica-client/skynet.h6
1 files changed, 4 insertions, 2 deletions
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);