aboutsummaryrefslogtreecommitdiff
path: root/src/testbed/testbed_api_barriers.c
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2013-09-02 10:01:01 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2013-09-02 10:01:01 +0000
commit719fb81dbaf034f624abaf6cc0a51c05446191f4 (patch)
treef31237c562e3e442ad20cd9c0308bcd13db7ae2f /src/testbed/testbed_api_barriers.c
parent6c684b3367b9f21ea46b0565b6e4aac8daf85f51 (diff)
downloadgnunet-719fb81dbaf034f624abaf6cc0a51c05446191f4.tar.gz
gnunet-719fb81dbaf034f624abaf6cc0a51c05446191f4.zip
- more barrier stuff
Diffstat (limited to 'src/testbed/testbed_api_barriers.c')
-rw-r--r--src/testbed/testbed_api_barriers.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/testbed/testbed_api_barriers.c b/src/testbed/testbed_api_barriers.c
index 231e00600..ab468a088 100644
--- a/src/testbed/testbed_api_barriers.c
+++ b/src/testbed/testbed_api_barriers.c
@@ -102,7 +102,7 @@ barrier_remove (struct GNUNET_TESTBED_Barrier *barrier)
102 */ 102 */
103int 103int
104GNUNET_TESTBED_handle_barrier_status_ (struct GNUNET_TESTBED_Controller *c, 104GNUNET_TESTBED_handle_barrier_status_ (struct GNUNET_TESTBED_Controller *c,
105 const struct GNUNET_TESTBED_BarrierStatus 105 const struct GNUNET_TESTBED_BarrierStatusMsg
106 *msg) 106 *msg)
107{ 107{
108 struct GNUNET_TESTBED_Barrier *barrier; 108 struct GNUNET_TESTBED_Barrier *barrier;
@@ -119,17 +119,17 @@ GNUNET_TESTBED_handle_barrier_status_ (struct GNUNET_TESTBED_Controller *c,
119 msize = ntohs (msg->header.size); 119 msize = ntohs (msg->header.size);
120 name = msg->data; 120 name = msg->data;
121 name_len = ntohs (msg->name_len); 121 name_len = ntohs (msg->name_len);
122 if ( (sizeof (struct GNUNET_TESTBED_BarrierStatus) + name_len + 1 > msize) 122 if ( (sizeof (struct GNUNET_TESTBED_BarrierStatusMsg) + name_len + 1 > msize)
123 || ('\0' != name[name_len]) ) 123 || ('\0' != name[name_len]) )
124 { 124 {
125 GNUNET_break_op (0); 125 GNUNET_break_op (0);
126 return GNUNET_SYSERR; 126 return GNUNET_SYSERR;
127 } 127 }
128 status = ntohs (msg->status); 128 status = ntohs (msg->status);
129 if (0 != status) 129 if (BARRIER_STATUS_ERROR == status)
130 { 130 {
131 status = -1; 131 status = -1;
132 emsg_len = msize - (sizeof (struct GNUNET_TESTBED_BarrierStatus) + name_len 132 emsg_len = msize - (sizeof (struct GNUNET_TESTBED_BarrierStatusMsg) + name_len
133 + 1); 133 + 1);
134 if (0 == emsg_len) 134 if (0 == emsg_len)
135 { 135 {
@@ -150,6 +150,8 @@ GNUNET_TESTBED_handle_barrier_status_ (struct GNUNET_TESTBED_Controller *c,
150 goto cleanup; 150 goto cleanup;
151 GNUNET_assert (NULL != barrier->cb); 151 GNUNET_assert (NULL != barrier->cb);
152 barrier->cb (barrier->cls, name, barrier, status, emsg); 152 barrier->cb (barrier->cls, name, barrier, status, emsg);
153 if (BARRIER_STATUS_INITIALISED == status)
154 return GNUNET_OK; /* just initialised; skip cleanup */
153 155
154 cleanup: 156 cleanup:
155 GNUNET_free_non_null (emsg); 157 GNUNET_free_non_null (emsg);
@@ -219,3 +221,5 @@ GNUNET_TESTBED_barrier_cancel (struct GNUNET_TESTBED_Barrier *barrier)
219{ 221{
220 barrier_remove (barrier); 222 barrier_remove (barrier);
221} 223}
224
225/* end of testbed_api_barriers.c */