aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarkus Voggenreiter <Markus.Voggenreiter@tum.de>2019-10-29 21:02:17 +0100
committerSchanzenbach, Martin <mschanzenbach@posteo.de>2020-01-13 13:31:03 +0100
commit6157f0cb7ae89094f91f19fe09b92445efc746e4 (patch)
tree5d18e990f1cbae991e6b53d48a33a166d4d291fa /src
parentb62682f35d3752eff4b9d7ff52d47e0bfbd6b6f5 (diff)
downloadgnunet-6157f0cb7ae89094f91f19fe09b92445efc746e4.tar.gz
gnunet-6157f0cb7ae89094f91f19fe09b92445efc746e4.zip
Fixed Reference Deletion
Diffstat (limited to 'src')
-rw-r--r--src/include/gnunet_gnsrecord_lib.h16
-rw-r--r--src/reclaim/gnunet-service-reclaim.c36
-rw-r--r--src/reclaim/plugin_gnsrecord_reclaim.c6
3 files changed, 43 insertions, 15 deletions
diff --git a/src/include/gnunet_gnsrecord_lib.h b/src/include/gnunet_gnsrecord_lib.h
index 9e430c2aa..b49e39b76 100644
--- a/src/include/gnunet_gnsrecord_lib.h
+++ b/src/include/gnunet_gnsrecord_lib.h
@@ -141,14 +141,24 @@ extern "C" {
141#define GNUNET_GNSRECORD_TYPE_RECLAIM_OIDC_REDIRECT 65553 141#define GNUNET_GNSRECORD_TYPE_RECLAIM_OIDC_REDIRECT 65553
142 142
143/** 143/**
144 * Record type for reclaim attestation records 144 * Record type for reclaim identity attestation
145 */ 145 */
146#define GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_ATTR 65554 146#define GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_ATTR 65554
147 147
148/** 148/**
149 * Record type for reclaim attestation references 149 * Record type for reclaim identity references
150 */
151#define GNUNET_GNSRECORD_TYPE_RECLAIM_REFERENCE 65555
152
153/**
154 * Record type for reclaim attestation records
155 */
156#define GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_REF 65556
157
158/**
159 * Record type for reclaim reference records
150 */ 160 */
151#define GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_REF 65555 161#define GNUNET_GNSRECORD_TYPE_RECLAIM_REFERENCE_REF 65557
152 162
153/** 163/**
154 * Flags that can be set for a record. 164 * Flags that can be set for a record.
diff --git a/src/reclaim/gnunet-service-reclaim.c b/src/reclaim/gnunet-service-reclaim.c
index 1f320e196..0c27cdbef 100644
--- a/src/reclaim/gnunet-service-reclaim.c
+++ b/src/reclaim/gnunet-service-reclaim.c
@@ -1296,7 +1296,7 @@ ref_add_cb (void *cls,
1296 } 1296 }
1297 rd_new[rd_count].data_size = buf_size; 1297 rd_new[rd_count].data_size = buf_size;
1298 rd_new[rd_count].data = buf; 1298 rd_new[rd_count].data = buf;
1299 rd_new[rd_count].record_type = GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_REF; 1299 rd_new[rd_count].record_type = GNUNET_GNSRECORD_TYPE_RECLAIM_REFERENCE;
1300 rd_new[rd_count].flags = GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION; 1300 rd_new[rd_count].flags = GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION;
1301 rd_new[rd_count].expiration_time = ash->exp.rel_value_us; 1301 rd_new[rd_count].expiration_time = ash->exp.rel_value_us;
1302 ash->ns_qe = GNUNET_NAMESTORE_records_store (nsh, 1302 ash->ns_qe = GNUNET_NAMESTORE_records_store (nsh,
@@ -1450,19 +1450,27 @@ ticket_iter (void *cls,
1450 struct AttributeDeleteHandle *adh = cls; 1450 struct AttributeDeleteHandle *adh = cls;
1451 struct TicketRecordsEntry *le; 1451 struct TicketRecordsEntry *le;
1452 int has_changed = GNUNET_NO; 1452 int has_changed = GNUNET_NO;
1453
1454 for (int i = 0; i < rd_count; i++) 1453 for (int i = 0; i < rd_count; i++)
1455 { 1454 {
1455 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1456 "Next Zone Iteration %u and record type is %u\n", rd_count,
1457 rd[i].record_type);
1456 if ((GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR_REF != rd[i].record_type) && 1458 if ((GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR_REF != rd[i].record_type) &&
1457 (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_ATTR != rd[i].record_type) && 1459 (GNUNET_GNSRECORD_TYPE_RECLAIM_REFERENCE_REF != rd[i].record_type) &&
1458 (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_REF != rd[i].record_type)) 1460 (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_REF != rd[i].record_type))
1459 continue; 1461 continue;
1460 if (0 != memcmp (rd[i].data, &adh->claim->id, sizeof(uint64_t))) 1462 if (&adh->claim != NULL)
1461 continue; 1463 {
1462 if (0 != memcmp (rd[i].data, (&adh->attest->id), sizeof(uint64_t))) 1464 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Claim is existend: %u \n", adh->claim->id);
1463 continue; 1465 if (0 != memcmp (rd[i].data, &adh->claim->id, sizeof(uint64_t)))
1464 if (0 != memcmp (rd[i].data, &adh->reference->id, sizeof(uint64_t))) 1466 continue;
1465 continue; 1467 }
1468 if (&adh->attest != NULL)
1469 if (0 != memcmp (rd[i].data, &adh->attest->id, sizeof(uint64_t)))
1470 continue;
1471 if (&adh->reference != NULL)
1472 if (0 != memcmp (rd[i].data, &adh->reference->id, sizeof(uint64_t)))
1473 continue;
1466 1474
1467 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 1475 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1468 "Attribute or Attestation/Reference to delete found (%s)\n", 1476 "Attribute or Attestation/Reference to delete found (%s)\n",
@@ -1482,6 +1490,7 @@ ticket_iter (void *cls,
1482 adh->tickets_to_update_tail, 1490 adh->tickets_to_update_tail,
1483 le); 1491 le);
1484 } 1492 }
1493 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Next Zone Iteration \n");
1485 GNUNET_NAMESTORE_zone_iterator_next (adh->ns_it, 1); 1494 GNUNET_NAMESTORE_zone_iterator_next (adh->ns_it, 1);
1486} 1495}
1487 1496
@@ -1558,7 +1567,7 @@ update_tickets (void *cls)
1558 if ((GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR_REF == rd[i].record_type) 1567 if ((GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR_REF == rd[i].record_type)
1559 && (0 == memcmp (rd[i].data, &adh->claim->id, sizeof(uint64_t)))) 1568 && (0 == memcmp (rd[i].data, &adh->claim->id, sizeof(uint64_t))))
1560 continue; 1569 continue;
1561 if ((GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_ATTR == rd[i].record_type) 1570 if ((GNUNET_GNSRECORD_TYPE_RECLAIM_REFERENCE_REF == rd[i].record_type)
1562 && (0 == memcmp (rd[i].data, &adh->attest->id, sizeof(uint64_t)))) 1571 && (0 == memcmp (rd[i].data, &adh->attest->id, sizeof(uint64_t))))
1563 continue; 1572 continue;
1564 if ((GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_REF == rd[i].record_type) 1573 if ((GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_REF == rd[i].record_type)
@@ -1706,6 +1715,8 @@ handle_attribute_delete_message (void *cls,
1706 adh = GNUNET_new (struct AttributeDeleteHandle); 1715 adh = GNUNET_new (struct AttributeDeleteHandle);
1707 adh->claim = GNUNET_RECLAIM_ATTRIBUTE_deserialize ((char *) &dam[1], 1716 adh->claim = GNUNET_RECLAIM_ATTRIBUTE_deserialize ((char *) &dam[1],
1708 data_len); 1717 data_len);
1718 adh->reference = NULL;
1719 adh->attest = NULL;
1709 1720
1710 adh->r_id = ntohl (dam->id); 1721 adh->r_id = ntohl (dam->id);
1711 adh->identity = dam->identity; 1722 adh->identity = dam->identity;
@@ -1792,6 +1803,8 @@ handle_attestation_delete_message (void *cls,
1792 adh = GNUNET_new (struct AttributeDeleteHandle); 1803 adh = GNUNET_new (struct AttributeDeleteHandle);
1793 adh->attest = GNUNET_RECLAIM_ATTESTATION_deserialize ((char *) &dam[1], 1804 adh->attest = GNUNET_RECLAIM_ATTESTATION_deserialize ((char *) &dam[1],
1794 data_len); 1805 data_len);
1806 adh->reference = NULL;
1807 adh->claim = NULL;
1795 1808
1796 adh->r_id = ntohl (dam->id); 1809 adh->r_id = ntohl (dam->id);
1797 adh->identity = dam->identity; 1810 adh->identity = dam->identity;
@@ -1947,6 +1960,9 @@ handle_reference_delete_message (void *cls,
1947 adh = GNUNET_new (struct AttributeDeleteHandle); 1960 adh = GNUNET_new (struct AttributeDeleteHandle);
1948 adh->reference = GNUNET_RECLAIM_ATTESTATION_REF_deserialize ((char *) &dam[1], 1961 adh->reference = GNUNET_RECLAIM_ATTESTATION_REF_deserialize ((char *) &dam[1],
1949 data_len); 1962 data_len);
1963 adh->attest = NULL;
1964 adh->claim = NULL;
1965
1950 adh->r_id = ntohl (dam->id); 1966 adh->r_id = ntohl (dam->id);
1951 adh->identity = dam->identity; 1967 adh->identity = dam->identity;
1952 adh->label 1968 adh->label
diff --git a/src/reclaim/plugin_gnsrecord_reclaim.c b/src/reclaim/plugin_gnsrecord_reclaim.c
index e00b246c2..0f59082dc 100644
--- a/src/reclaim/plugin_gnsrecord_reclaim.c
+++ b/src/reclaim/plugin_gnsrecord_reclaim.c
@@ -55,7 +55,7 @@ value_to_string (void *cls, uint32_t type, const void *data, size_t data_size)
55 case GNUNET_GNSRECORD_TYPE_RECLAIM_TICKET: 55 case GNUNET_GNSRECORD_TYPE_RECLAIM_TICKET:
56 case GNUNET_GNSRECORD_TYPE_RECLAIM_MASTER: 56 case GNUNET_GNSRECORD_TYPE_RECLAIM_MASTER:
57 case GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_ATTR: 57 case GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_ATTR:
58 case GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_REF: 58 case GNUNET_GNSRECORD_TYPE_RECLAIM_REFERENCE:
59 return GNUNET_STRINGS_data_to_string_alloc (data, data_size); 59 return GNUNET_STRINGS_data_to_string_alloc (data, data_size);
60 60
61 default: 61 default:
@@ -96,7 +96,7 @@ string_to_value (void *cls, uint32_t type, const char *s, void **data,
96 case GNUNET_GNSRECORD_TYPE_RECLAIM_MASTER: 96 case GNUNET_GNSRECORD_TYPE_RECLAIM_MASTER:
97 case GNUNET_GNSRECORD_TYPE_RECLAIM_TICKET: 97 case GNUNET_GNSRECORD_TYPE_RECLAIM_TICKET:
98 case GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_ATTR: 98 case GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_ATTR:
99 case GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_REF: 99 case GNUNET_GNSRECORD_TYPE_RECLAIM_REFERENCE:
100 return GNUNET_STRINGS_string_to_data (s, strlen (s), *data, *data_size); 100 return GNUNET_STRINGS_string_to_data (s, strlen (s), *data, *data_size);
101 101
102 default: 102 default:
@@ -121,6 +121,8 @@ static struct
121 { "RECLAIM_OIDC_CLIENT", GNUNET_GNSRECORD_TYPE_RECLAIM_OIDC_CLIENT }, 121 { "RECLAIM_OIDC_CLIENT", GNUNET_GNSRECORD_TYPE_RECLAIM_OIDC_CLIENT },
122 { "RECLAIM_OIDC_REDIRECT", GNUNET_GNSRECORD_TYPE_RECLAIM_OIDC_REDIRECT }, 122 { "RECLAIM_OIDC_REDIRECT", GNUNET_GNSRECORD_TYPE_RECLAIM_OIDC_REDIRECT },
123 { "RECLAIM_TICKET", GNUNET_GNSRECORD_TYPE_RECLAIM_TICKET }, 123 { "RECLAIM_TICKET", GNUNET_GNSRECORD_TYPE_RECLAIM_TICKET },
124 { "RECLAIM_REFERENCE", GNUNET_GNSRECORD_TYPE_RECLAIM_REFERENCE },
125 { "RECLAIM_REFERENCE_REF", GNUNET_GNSRECORD_TYPE_RECLAIM_REFERENCE_REF },
124 { "RECLAIM_ATTEST_REF", GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_REF }, 126 { "RECLAIM_ATTEST_REF", GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_REF },
125 { NULL, UINT32_MAX } 127 { NULL, UINT32_MAX }
126}; 128};