diff options
Diffstat (limited to 'src/messenger/test_messenger.c')
-rw-r--r-- | src/messenger/test_messenger.c | 34 |
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 | ||
46 | static struct GNUNET_SCHEDULER_Task *die_task = NULL; | 46 | static struct GNUNET_SCHEDULER_Task *die_task = NULL; |
47 | static struct GNUNET_SCHEDULER_Task *op_task = NULL; | 47 | static struct GNUNET_SCHEDULER_Task *op_task = NULL; |
48 | static struct GNUNET_SCHEDULER_Task *it_task = NULL; | ||
48 | 49 | ||
49 | struct GNUNET_MESSENGER_Handle *messenger = NULL; | 50 | struct GNUNET_MESSENGER_Handle *messenger = NULL; |
50 | 51 | ||
52 | static struct GNUNET_IDENTITY_PrivateKey identity; | ||
53 | |||
51 | static void | 54 | static void |
52 | end (void *cls) | 55 | end (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 | */ |
102 | static void | 111 | static void |
103 | on_identity (void *cls, | 112 | on_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 | /** |