From: Jan Alexander Steffens (heftig) Date: Sat, 19 May 2018 10:31:40 +0000 (+0200) Subject: identd: Move response construction to Request X-Git-Tag: 0.13-rc1~46 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=afc90943c558eaca765530fa90ff8b656dc04a99 identd: Move response construction to Request --- diff --git a/src/core/identserver.cpp b/src/core/identserver.cpp index ea1295ef..06e6cf5a 100644 --- a/src/core/identserver.cpp +++ b/src/core/identserver.cpp @@ -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; } }); diff --git a/src/core/identserver.h b/src/core/identserver.h index cff24b77..3c0fd2a9 100644 --- a/src/core/identserver.h +++ b/src/core/identserver.h @@ -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;