From: Daniel Albers Date: Wed, 8 Feb 2012 00:45:00 +0000 (+0100) Subject: properly rewind oidentd config file X-Git-Tag: 0.8-beta1~17 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=a72e2b4a90ce18c58b54e111161691ba008dc47d;hp=2e80003ab40313767d0624e05533a62e2eee387b properly rewind oidentd config file --- diff --git a/src/core/oidentdconfiggenerator.cpp b/src/core/oidentdconfiggenerator.cpp index 072b1595..eca0fcdd 100644 --- a/src/core/oidentdconfiggenerator.cpp +++ b/src/core/oidentdconfiggenerator.cpp @@ -43,10 +43,12 @@ bool OidentdConfigGenerator::init() { _configFile = new QFile(configPath); qDebug() << "1: _configFile" << _configFile->fileName(); - quasselStanza = QRegExp(QString("^lport .* { .* } #%1$").arg(configTag)); + quasselStanza = QRegExp(QString("^lport .* \\{ .* \\} #%1\\n").arg(configTag)); + _mutex.lock(); if (parseConfig(false) && writeConfig()) _initialized = true; + _mutex.unlock(); qDebug() << "OidentdConfigGenerator" << (!_initialized ? "not" : "") << "initialized"; @@ -64,7 +66,9 @@ bool OidentdConfigGenerator::addSocket(const CoreIdentity *identity, const QHost _config.append(QString("lport %1 { reply \"%2\" } #%3\n").arg(localPort).arg(ident).arg(configTag)); + _mutex.lock(); bool ret = writeConfig(); + _mutex.unlock(); qDebug() << "config written" << ret; return ret; @@ -99,16 +103,16 @@ bool OidentdConfigGenerator::parseConfig(bool keepQuasselStanzas) { } bool OidentdConfigGenerator::writeConfig() { - if (!_configFile->isOpen() && !_configFile->open(QFile::WriteOnly | QFile::Truncate)) + if (!_configFile->isOpen() && !_configFile->open(QIODevice::ReadWrite | QIODevice::Text | QFile::Truncate)) return false; - //FIXME: thread safety - QTextStream out(_configFile); - out << _config; + _configFile->seek(0); + _configFile->resize(0); + _configFile->write(_config); return _configFile->flush(); } bool OidentdConfigGenerator::lineByUs(const QByteArray &line) { - return !quasselStanza.exactMatch(line); + return quasselStanza.exactMatch(line); } diff --git a/src/core/oidentdconfiggenerator.h b/src/core/oidentdconfiggenerator.h index 5d96b6cd..bc2e25a7 100644 --- a/src/core/oidentdconfiggenerator.h +++ b/src/core/oidentdconfiggenerator.h @@ -26,6 +26,7 @@ #include #include #include +#include #include "quassel.h" #include "coreidentity.h" @@ -53,6 +54,7 @@ private: QDateTime _lastSync; QFile *_configFile; QByteArray _config; + QMutex _mutex; QDir configDir; QString configFileName;