diff options
| author | Anton <anton@picapica> | 2019-02-26 21:12:27 +0400 |
|---|---|---|
| committer | Anton <anton@picapica> | 2019-02-26 21:12:27 +0400 |
| commit | 29bc265a6e10d4e5daaf9fa87aa82dd010d192e8 (patch) | |
| tree | cf635f73ec76419b834c60833a970a1c0d480dcf /pica-client/skynet.h | |
| parent | 567fe3dd1c29882ecc88b2cc7505d2e423afd6f7 (diff) | |
| download | pica-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.h | 6 |
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); |
