[vidalia/alpha] Add the possibility to consult the ControlReply after a SETCONF

commit 03a56b386626b056fe808021fc3f89bc62d9fc8c Author: Tomás Touceda <chiiph@torproject.org> Date: Fri Feb 3 17:25:50 2012 -0300 Add the possibility to consult the ControlReply after a SETCONF This will be used to identify when an error occurs with SETCONF, whether it is a 553 error or any other kind. If it's a 553, then the option is not wrong but tor can't apply that change while it is running. Otherwise, it's an error in the option and it should be treated as such. --- src/torcontrol/TorControl.cpp | 15 +++++++++------ src/torcontrol/TorControl.h | 6 +++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/torcontrol/TorControl.cpp b/src/torcontrol/TorControl.cpp index efa5dfc..77cd567 100644 --- a/src/torcontrol/TorControl.cpp +++ b/src/torcontrol/TorControl.cpp @@ -719,7 +719,7 @@ TorControl::setEvents(QString *errmsg) /** Sets each configuration key in <b>map</b> to the value associated * with its key. */ bool -TorControl::setConf(QHash<QString,QString> map, QString *errmsg) +TorControl::setConf(QHash<QString,QString> map, QString *errmsg, ControlReply *reply) { ControlCommand cmd("SETCONF"); @@ -739,25 +739,28 @@ TorControl::setConf(QHash<QString,QString> map, QString *errmsg) cmd.addArgument(key); } } - return send(cmd, errmsg); + + if(not reply) + reply = new ControlReply(); + return send(cmd, *reply, errmsg); } /** Sets a single configuration key to the given value. */ bool -TorControl::setConf(QString key, QString value, QString *errmsg) +TorControl::setConf(QString key, QString value, QString *errmsg, ControlReply *reply) { QHash<QString,QString> map; map.insert(key, value); - return setConf(map, errmsg); + return setConf(map, errmsg, reply); } /** Sets a single configuration string that is formatted <key=escaped value>.*/ bool -TorControl::setConf(QString keyAndValue, QString *errmsg) +TorControl::setConf(QString keyAndValue, QString *errmsg, ControlReply *reply) { QHash<QString,QString> map; map.insert(keyAndValue, ""); - return setConf(map, errmsg); + return setConf(map, errmsg, reply); } /** Gets values for a set of configuration keys, each of which has a single diff --git a/src/torcontrol/TorControl.h b/src/torcontrol/TorControl.h index 3541c86..6a58b71 100644 --- a/src/torcontrol/TorControl.h +++ b/src/torcontrol/TorControl.h @@ -134,11 +134,11 @@ public: bool setEvents(QString *errmsg = 0); /** Sets each configuration key in <b>map</b> to the value associated with its key. */ - bool setConf(QHash<QString,QString> map, QString *errmsg = 0); + bool setConf(QHash<QString,QString> map, QString *errmsg = 0, ControlReply *reply = 0); /** Sets a single configuration key to the given value. */ - bool setConf(QString key, QString value, QString *errmsg = 0); + bool setConf(QString key, QString value, QString *errmsg = 0, ControlReply *reply = 0); /** Sets a single configuration string that is formatted <key=escaped value>. */ - bool setConf(QString keyAndValue, QString *errmsg = 0); + bool setConf(QString keyAndValue, QString *errmsg = 0, ControlReply *reply = 0); /** Gets values for a set of configuration keys, each of which has a single * value. */ bool getConf(QHash<QString,QString> &map, QString *errmsg = 0);
participants (1)
-
chiiph@torproject.org