diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2016-09-07 20:57:19 +0200 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2016-09-07 20:57:19 +0200 |
| commit | 2a85d71df40746ae1c8c674d83edad53356cc2a2 (patch) | |
| tree | d52eb1c154b1943583c995e79ca7b68d556f9d67 | |
| parent | 987dc35e38883a12757a836ca67e8cbf58a4e1e8 (diff) | |
| download | manager-2a85d71df40746ae1c8c674d83edad53356cc2a2.tar.gz manager-2a85d71df40746ae1c8c674d83edad53356cc2a2.zip | |
Automatically disconnect assigned DCC connection on dcc connect
| -rw-r--r-- | src/crsm.cpp | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp index 2e14319..05d30ae 100644 --- a/src/crsm.cpp +++ b/src/crsm.cpp @@ -617,40 +617,37 @@ void CRSM::dccChatRequest(const ClientInfo &client, QString extraArgs) { if(dccNickConnections.contains(client.nick)) { - respond(client, "Diesem Nick ist bereits eine DCC-Verbindung zugewiesen.\n"); - } - else - { - QHostInfo info = QHostInfo::fromName(Config.DCC.Address); - connection->sendCommand(IrcCommand::createCtcpRequest(client.nick, "DCC CHAT chat " + QString::number(info.addresses().first().toIPv4Address()) + " " + QString::number(Config.DCC.ListenPort) + (!extraArgs.isEmpty() ? " " + extraArgs: extraArgs))); + QTimer::singleShot(0, dccNickConnections[client.nick].socket, &QTcpSocket::close); } + + QHostInfo info = QHostInfo::fromName(Config.DCC.Address); + connection->sendCommand(IrcCommand::createCtcpRequest(client.nick, "DCC CHAT chat " + QString::number(info.addresses().first().toIPv4Address()) + " " + QString::number(Config.DCC.ListenPort) + (!extraArgs.isEmpty() ? " " + extraArgs: extraArgs))); } // modified version of http://stackoverflow.com/a/18866593 QString GetRandomString(int length = 5) { - static const QString possibleCharacters("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); + static const QString possibleCharacters("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); - QString randomString; - for(int i=0; i<length; ++i) - { - int index = qrand() % possibleCharacters.length(); - QChar nextChar = possibleCharacters.at(index); - randomString.append(nextChar); - } - return randomString; + QString randomString; + for(int i=0; i<length; ++i) + { + int index = qrand() % possibleCharacters.length(); + QChar nextChar = possibleCharacters.at(index); + randomString.append(nextChar); + } + return randomString; } void CRSM::newDCCData() { QTcpSocket* socket = (QTcpSocket*)sender(); const DCCConnection& dccConnection = dccSocketConnections[socket]; - QString message = QString::fromUtf8(socket->readLine()); - if(message.endsWith('\n')) + QString message = QString::fromUtf8(socket->readLine()).trimmed(); + if(message.length() > 0) { - message.chop(1); + handleIrcMessage(dccConnection.client, message, connection->nickName(), true, false); } - handleIrcMessage(dccConnection.client, message, connection->nickName(), true, false); } void CRSM::newDCCConnection() |
