Improve identd
[quassel.git] / src / core / identserver.h
index fac112c..6c7340d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2018 by the Quassel Project                        *
+ *   Copyright (C) 2005-2019 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -35,31 +35,43 @@ struct Request
 {
     QPointer<QTcpSocket> socket;
     uint16_t localPort;
+    uint16_t remotePort;
     QString query;
     qint64 transactionId;
     qint64 requestId;
 
-    friend bool operator==(const Request &a, const Request &b);
+    friend bool operator==(const Request& a, const Request& b);
 
-    void respondSuccess(const QString &user);
-    void respondError(const QString &error);
-};
+    void respondSuccess(const QString& user);
+    void respondError(const QString& error);
 
+    const static int DISCONNECTION_TIMEOUT = 500;
+};
 
 class IdentServer : public QObject
 {
     Q_OBJECT
 
 public:
-    IdentServer(bool strict, QObject *parent = nullptr);
+    IdentServer(QObject* parent = nullptr);
 
     bool startListening();
-    void stopListening(const QString &msg);
+    void stopListening(const QStringmsg);
     qint64 addWaitingSocket();
 
 public slots:
-    void addSocket(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort, qint64 socketId);
-    void removeSocket(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort, qint64 socketId);
+    void addSocket(const CoreIdentity* identity,
+                   const QHostAddress& localAddress,
+                   quint16 localPort,
+                   const QHostAddress& peerAddress,
+                   quint16 peerPort,
+                   qint64 socketId);
+    void removeSocket(const CoreIdentity* identity,
+                      const QHostAddress& localAddress,
+                      quint16 localPort,
+                      const QHostAddress& peerAddress,
+                      quint16 peerPort,
+                      qint64 socketId);
 
 private slots:
     void incomingConnection();
@@ -76,8 +88,6 @@ private:
 
     QTcpServer _server, _v6server;
 
-    bool _strict;
-
     QHash<uint16_t, QString> _connections;
     std::list<Request> _requestQueue;
     std::list<qint64> _waiting;