diff options
-rw-r--r-- | src/ats/gnunet-service-ats_addresses.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/ats/gnunet-service-ats_addresses.c b/src/ats/gnunet-service-ats_addresses.c index d0225635bb..22c99ecd48 100644 --- a/src/ats/gnunet-service-ats_addresses.c +++ b/src/ats/gnunet-service-ats_addresses.c @@ -1019,14 +1019,15 @@ GAS_addresses_request_address (const struct GNUNET_PeerIdentity *peer) while (NULL != cur) { if (0 == memcmp (peer, &cur->id, sizeof (cur->id))) - return; /* already suggesting */ + break; /* already suggesting */ cur = cur->next; } - - cur = GNUNET_malloc (sizeof (struct GAS_Addresses_Suggestion_Requests)); - cur->id = (*peer); - GNUNET_CONTAINER_DLL_insert (handle->r_head, handle->r_tail, cur); - + if (NULL == cur) + { + cur = GNUNET_malloc (sizeof (struct GAS_Addresses_Suggestion_Requests)); + cur->id = (*peer); + GNUNET_CONTAINER_DLL_insert (handle->r_head, handle->r_tail, cur); + } if (handle->ats_mode == MODE_SIMPLISTIC) { request_address_simple (peer); |