identd: Move response construction to Request
authorJan Alexander Steffens (heftig) <jan.steffens@gmail.com>
Sat, 19 May 2018 10:31:40 +0000 (12:31 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Mon, 18 Jun 2018 19:25:50 +0000 (21:25 +0200)
src/core/identserver.cpp
src/core/identserver.h

index ea1295e..06e6cf5 100644 (file)
@@ -117,40 +117,42 @@ void IdentServer::respond() {
 
     Request request{socket, localPort, query, transactionId, _requestId++};
     if (!success) {
-        responseUnavailable(request);
+        request.respondError("NO-USER");
     } else if (responseAvailable(request)) {
         // success
     } else if (lowestSocketId() < transactionId) {
         _requestQueue.emplace_back(request);
     } else {
-        responseUnavailable(request);
+        request.respondError("NO-USER");
     }
 }
 
+void Request::respondSuccess(const QString &user) {
+    QString data = query + " : USERID : Quassel : " + user + "\r\n";
+
+    socket->write(data.toUtf8());
+    socket->flush();
+    socket->close();
+}
+
+void Request::respondError(const QString &error) {
+    QString data = query + " : ERROR : " + error + "\r\n";
+
+    socket->write(data.toUtf8());
+    socket->flush();
+    socket->close();
+}
+
 bool IdentServer::responseAvailable(Request request) {
     if (!_connections.contains(request.localPort)) {
         return false;
     }
 
     QString user = _connections[request.localPort];
-    QString data = request.query + " : USERID : Quassel : " + user + "\r\n";
-
-    request.socket->write(data.toUtf8());
-    request.socket->flush();
-    request.socket->close();
-
+    request.respondSuccess(user);
     return true;
 }
 
-void IdentServer::responseUnavailable(Request request) {
-    QString data = request.query + " : ERROR : NO-USER\r\n";
-
-    request.socket->write(data.toUtf8());
-    request.socket->flush();
-    request.socket->close();
-}
-
-
 bool IdentServer::addSocket(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort,
                             const QHostAddress &peerAddress, quint16 peerPort, qint64 socketId) {
     Q_UNUSED(localAddress)
@@ -202,7 +204,7 @@ void IdentServer::processWaiting(qint64 socketId) {
         } else if (lowestSocketId() < request.transactionId) {
             return false;
         } else {
-            responseUnavailable(request);
+            request.respondError("NO-USER");
             return true;
         }
     });
index cff24b7..3c0fd2a 100644 (file)
@@ -33,6 +33,9 @@ struct Request {
     qint64 requestId;
 
     friend bool operator==(const Request &a, const Request &b);
+
+    void respondSuccess(const QString &user);
+    void respondError(const QString &error);
 };
 
 class IdentServer : public QObject {
@@ -54,7 +57,6 @@ private slots:
 
 private:
     bool responseAvailable(Request request);
-    void responseUnavailable(Request request);
 
     QString sysIdentForIdentity(const CoreIdentity *identity) const;