aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSchanzenbach, Martin <mschanzenbach@posteo.de>2019-10-11 11:06:24 +0200
committerSchanzenbach, Martin <mschanzenbach@posteo.de>2019-10-11 11:06:24 +0200
commit3b80c8d9daddaeaf033d0b0d3f6cda842a939c8d (patch)
treefff664c29355e61990a3e9e8be043770ea89c1d7 /src
parentf412ffb84409079f236e7046344ef99fdcd02a9a (diff)
downloadgnunet-3b80c8d9daddaeaf033d0b0d3f6cda842a939c8d.tar.gz
gnunet-3b80c8d9daddaeaf033d0b0d3f6cda842a939c8d.zip
fix changes in identities
Diffstat (limited to 'src')
-rw-r--r--src/identity/plugin_rest_identity.c37
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/**