aboutsummaryrefslogtreecommitdiff
path: root/src/messenger/test_messenger.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/messenger/test_messenger.c')
-rw-r--r--src/messenger/test_messenger.c34
1 files changed, 28 insertions, 6 deletions
diff --git a/src/messenger/test_messenger.c b/src/messenger/test_messenger.c
index 8758ce562..9958ce19e 100644
--- a/src/messenger/test_messenger.c
+++ b/src/messenger/test_messenger.c
@@ -45,14 +45,23 @@ static int status = 1;
45 45
46static struct GNUNET_SCHEDULER_Task *die_task = NULL; 46static struct GNUNET_SCHEDULER_Task *die_task = NULL;
47static struct GNUNET_SCHEDULER_Task *op_task = NULL; 47static struct GNUNET_SCHEDULER_Task *op_task = NULL;
48static struct GNUNET_SCHEDULER_Task *it_task = NULL;
48 49
49struct GNUNET_MESSENGER_Handle *messenger = NULL; 50struct GNUNET_MESSENGER_Handle *messenger = NULL;
50 51
52static struct GNUNET_IDENTITY_PrivateKey identity;
53
51static void 54static void
52end (void *cls) 55end (void *cls)
53{ 56{
54 die_task = NULL; 57 die_task = NULL;
55 58
59 if (it_task)
60 {
61 GNUNET_SCHEDULER_cancel (it_task);
62 it_task = NULL;
63 }
64
56 if (op_task) 65 if (op_task)
57 { 66 {
58 GNUNET_SCHEDULER_cancel (op_task); 67 GNUNET_SCHEDULER_cancel (op_task);
@@ -100,9 +109,11 @@ static int identity_counter = 0;
100 * @param handle Handle of messenger service 109 * @param handle Handle of messenger service
101 */ 110 */
102static void 111static void
103on_identity (void *cls, 112on_iteration (void *cls)
104 struct GNUNET_MESSENGER_Handle *handle)
105{ 113{
114 struct GNUNET_MESSENGER_Handle *handle = cls;
115 it_task = NULL;
116
106 if (op_task) 117 if (op_task)
107 { 118 {
108 GNUNET_SCHEDULER_cancel (op_task); 119 GNUNET_SCHEDULER_cancel (op_task);
@@ -111,7 +122,7 @@ on_identity (void *cls,
111 122
112 const char *name = GNUNET_MESSENGER_get_name (handle); 123 const char *name = GNUNET_MESSENGER_get_name (handle);
113 124
114 if (0 != strcmp (name, TESTER_NAME)) 125 if ((!name) || (0 != strcmp (name, TESTER_NAME)))
115 { 126 {
116 op_task = GNUNET_SCHEDULER_add_now (&end_operation, "name"); 127 op_task = GNUNET_SCHEDULER_add_now (&end_operation, "name");
117 return; 128 return;
@@ -119,7 +130,10 @@ on_identity (void *cls,
119 130
120 const struct GNUNET_IDENTITY_PublicKey *key = GNUNET_MESSENGER_get_key (handle); 131 const struct GNUNET_IDENTITY_PublicKey *key = GNUNET_MESSENGER_get_key (handle);
121 132
122 if (((!identity_counter) && (key)) || ((identity_counter) && (!key))) 133 struct GNUNET_IDENTITY_PublicKey pubkey;
134 GNUNET_IDENTITY_key_get_public(&identity, &pubkey);
135
136 if (((!identity_counter) && (key)) || ((identity_counter) && ((!key) || (0 != GNUNET_memcmp (key, &pubkey)))))
123 { 137 {
124 op_task = GNUNET_SCHEDULER_add_now (&end_operation, "key"); 138 op_task = GNUNET_SCHEDULER_add_now (&end_operation, "key");
125 return; 139 return;
@@ -139,8 +153,10 @@ on_identity (void *cls,
139 return; 153 return;
140 } 154 }
141 155
142 GNUNET_MESSENGER_update (messenger); 156 GNUNET_MESSENGER_set_key (handle, &identity);
143 identity_counter++; 157 identity_counter++;
158
159 it_task = GNUNET_SCHEDULER_add_now (&on_iteration, handle);
144} 160}
145 161
146/** 162/**
@@ -160,7 +176,13 @@ run (void *cls,
160 identity_counter = 0; 176 identity_counter = 0;
161 177
162 op_task = GNUNET_SCHEDULER_add_delayed (BASE_TIMEOUT, &end_operation, "connect"); 178 op_task = GNUNET_SCHEDULER_add_delayed (BASE_TIMEOUT, &end_operation, "connect");
163 messenger = GNUNET_MESSENGER_connect (cfg, TESTER_NAME, &on_identity, NULL, NULL, NULL); 179 messenger = GNUNET_MESSENGER_connect (cfg, TESTER_NAME, NULL, NULL, NULL);
180
181 identity.type = htonl (GNUNET_IDENTITY_TYPE_ECDSA);
182 GNUNET_CRYPTO_ecdsa_key_create (&(identity.ecdsa_key));
183
184 if (messenger)
185 it_task = GNUNET_SCHEDULER_add_now (&on_iteration, messenger);
164} 186}
165 187
166/** 188/**