diff options
author | Schanzenbach, Martin <mschanzenbach@posteo.de> | 2019-10-11 11:06:24 +0200 |
---|---|---|
committer | Schanzenbach, Martin <mschanzenbach@posteo.de> | 2019-10-11 11:06:24 +0200 |
commit | 3b80c8d9daddaeaf033d0b0d3f6cda842a939c8d (patch) | |
tree | fff664c29355e61990a3e9e8be043770ea89c1d7 /src/identity | |
parent | f412ffb84409079f236e7046344ef99fdcd02a9a (diff) | |
download | gnunet-3b80c8d9daddaeaf033d0b0d3f6cda842a939c8d.tar.gz gnunet-3b80c8d9daddaeaf033d0b0d3f6cda842a939c8d.zip |
fix changes in identities
Diffstat (limited to 'src/identity')
-rw-r--r-- | src/identity/plugin_rest_identity.c | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/src/identity/plugin_rest_identity.c b/src/identity/plugin_rest_identity.c index 247d09282..e052ac6b3 100644 --- a/src/identity/plugin_rest_identity.c +++ b/src/identity/plugin_rest_identity.c | |||
@@ -1234,11 +1234,46 @@ init_egos (void *cls, | |||
1234 | GNUNET_IDENTITY_ego_get_public_key (ego, &pk); | 1234 | GNUNET_IDENTITY_ego_get_public_key (ego, &pk); |
1235 | ego_entry->keystring = GNUNET_CRYPTO_ecdsa_public_key_to_string (&pk); | 1235 | ego_entry->keystring = GNUNET_CRYPTO_ecdsa_public_key_to_string (&pk); |
1236 | ego_entry->ego = ego; | 1236 | ego_entry->ego = ego; |
1237 | GNUNET_asprintf (&ego_entry->identifier, "%s", identifier); | 1237 | ego_entry->identifier = GNUNET_strdup (identifier); |
1238 | GNUNET_CONTAINER_DLL_insert_tail (handle->ego_head, | 1238 | GNUNET_CONTAINER_DLL_insert_tail (handle->ego_head, |
1239 | handle->ego_tail, | 1239 | handle->ego_tail, |
1240 | ego_entry); | 1240 | ego_entry); |
1241 | return; | ||
1242 | } | ||
1243 | // Check if ego exists | ||
1244 | for (ego_entry = handle->ego_head; NULL != ego_entry;) | ||
1245 | { | ||
1246 | struct EgoEntry *tmp = ego_entry; | ||
1247 | ego_entry = ego_entry->next; | ||
1248 | if (ego != tmp->ego) | ||
1249 | continue; | ||
1250 | // Deleted | ||
1251 | if (NULL == identifier) | ||
1252 | { | ||
1253 | GNUNET_CONTAINER_DLL_remove (handle->ego_head, | ||
1254 | handle->ego_tail, | ||
1255 | tmp); | ||
1256 | GNUNET_free (tmp->keystring); | ||
1257 | GNUNET_free (tmp->identifier); | ||
1258 | GNUNET_free (tmp); | ||
1259 | } | ||
1260 | else { | ||
1261 | // Renamed | ||
1262 | GNUNET_free (tmp->identifier); | ||
1263 | tmp->identifier = GNUNET_strdup (identifier); | ||
1264 | } | ||
1265 | return; | ||
1241 | } | 1266 | } |
1267 | // New ego | ||
1268 | ego_entry = GNUNET_new (struct EgoEntry); | ||
1269 | GNUNET_IDENTITY_ego_get_public_key (ego, &pk); | ||
1270 | ego_entry->keystring = GNUNET_CRYPTO_ecdsa_public_key_to_string (&pk); | ||
1271 | ego_entry->ego = ego; | ||
1272 | GNUNET_asprintf (&ego_entry->identifier, "%s", identifier); | ||
1273 | GNUNET_CONTAINER_DLL_insert_tail (handle->ego_head, | ||
1274 | handle->ego_tail, | ||
1275 | ego_entry); | ||
1276 | |||
1242 | } | 1277 | } |
1243 | 1278 | ||
1244 | /** | 1279 | /** |