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

chiiph at torproject.org chiiph at torproject.org
Mon Mar 5 13:01:51 UTC 2012


commit 03a56b386626b056fe808021fc3f89bc62d9fc8c
Author: Tomás Touceda <chiiph at 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);





More information about the tor-commits mailing list