Fixed return value of controller_t functions if callback returns FALSE.
authorTobias Brunner <tobias@strongswan.org>
Thu, 22 Dec 2011 12:54:30 +0000 (13:54 +0100)
committerTobias Brunner <tobias@strongswan.org>
Wed, 2 May 2012 12:45:38 +0000 (14:45 +0200)
src/libcharon/control/controller.c
src/libcharon/control/controller.h

index da66877..84adce0 100644 (file)
@@ -182,6 +182,7 @@ METHOD(listener_t, listener_log, bool,
        {
                if (!this->callback(this->param, group, level, ike_sa, format, args))
                {
+                       this->status = NEED_MORE;
                        return listener_done(this);
                }
        }
index 6adaef1..e7e9222 100644 (file)
@@ -34,8 +34,8 @@
  * @param args                 list of arguments to use for format
  * @return                             FALSE to return from invoked function
  */
-typedef bool(*controller_cb_t)(void* param, debug_t group, level_t level,
-                                                          ike_sa_t* ike_sa, char* format, va_list args);
+typedef bool (*controller_cb_t)(void* param, debug_t group, level_t level,
+                                                               ike_sa_t* ike_sa, char* format, va_list args);
 
 /**
  * Empty callback function for controller_t functions.
@@ -75,9 +75,8 @@ struct controller_t {
        /**
         * Initiate a CHILD_SA, and if required, an IKE_SA.
         *
-        * The initiate() function is synchronous and thus blocks until the
-        * IKE_SA is established or failed. Because of this, the initiate() function
-        * contains a thread cancellation point.
+        * If a callback is provided the function is synchronous and thus blocks
+        * until the IKE_SA is established or failed.
         *
         * @param peer_cfg              peer_cfg to use for IKE_SA setup
         * @param child_cfg             child_cfg to set up CHILD_SA from
@@ -97,9 +96,8 @@ struct controller_t {
        /**
         * Terminate an IKE_SA and all of its CHILD_SAs.
         *
-        * The terminate() function is synchronous and thus blocks until the
-        * IKE_SA is properly deleted, or the delete timed out.
-        * The terminate() function contains a thread cancellation point.
+        * If a callback is provided the function is synchronous and thus blocks
+        * until the IKE_SA is properly deleted, or the call timed out.
         *
         * @param unique_id             unique id of the IKE_SA to terminate.
         * @param cb                    logging callback
@@ -118,6 +116,9 @@ struct controller_t {
        /**
         * Terminate a CHILD_SA.
         *
+        * If a callback is provided the function is synchronous and thus blocks
+        * until the CHILD_SA is properly deleted, or the call timed out.
+        *
         * @param reqid                 reqid of the CHILD_SA to terminate
         * @param cb                    logging callback
         * @param param                 parameter to include in each call of cb
@@ -138,12 +139,11 @@ struct controller_t {
        void (*destroy) (controller_t *this);
 };
 
-
 /**
  * Creates a controller instance.
  *
  * @return                     controller_t object
  */
-controller_t *controller_create(void);
+controller_t *controller_create();
 
 #endif /** CONTROLLER_H_ @}*/