aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gnsrecord/gnsrecord_serialization.c14
-rw-r--r--src/namestore/gnunet-namestore.c50
-rw-r--r--src/namestore/gnunet-service-namestore.c55
-rw-r--r--src/namestore/plugin_namestore_sqlite.c122
-rw-r--r--src/util/strings.c3
-rw-r--r--src/vpn/gnunet-service-vpn.c4
6 files changed, 167 insertions, 81 deletions
diff --git a/src/gnsrecord/gnsrecord_serialization.c b/src/gnsrecord/gnsrecord_serialization.c
index e2cabafd3..190f62fc2 100644
--- a/src/gnsrecord/gnsrecord_serialization.c
+++ b/src/gnsrecord/gnsrecord_serialization.c
@@ -48,7 +48,7 @@ struct NetworkRecord
48 48
49 /** 49 /**
50 * Expiration time for the DNS record; relative or absolute depends 50 * Expiration time for the DNS record; relative or absolute depends
51 * on 'flags', network byte order. 51 * on @e flags, network byte order.
52 */ 52 */
53 uint64_t expiration_time GNUNET_PACKED; 53 uint64_t expiration_time GNUNET_PACKED;
54 54
@@ -119,24 +119,26 @@ GNUNET_GNSRECORD_records_serialize (unsigned int rd_count,
119 off = 0; 119 off = 0;
120 for (i=0;i<rd_count;i++) 120 for (i=0;i<rd_count;i++)
121 { 121 {
122#if 0
123 LOG (GNUNET_ERROR_TYPE_DEBUG, 122 LOG (GNUNET_ERROR_TYPE_DEBUG,
124 "Serializing record %u with flags %d and expiration time %llu\n", 123 "Serializing record %u with flags %d and expiration time %llu\n",
125 i, 124 i,
126 rd[i].flags, 125 rd[i].flags,
127 (unsigned long long) rd[i].expiration_time); 126 (unsigned long long) rd[i].expiration_time);
128#endif
129 rec.expiration_time = GNUNET_htonll (rd[i].expiration_time); 127 rec.expiration_time = GNUNET_htonll (rd[i].expiration_time);
130 rec.data_size = htonl ((uint32_t) rd[i].data_size); 128 rec.data_size = htonl ((uint32_t) rd[i].data_size);
131 rec.record_type = htonl (rd[i].record_type); 129 rec.record_type = htonl (rd[i].record_type);
132 rec.flags = htonl (rd[i].flags); 130 rec.flags = htonl (rd[i].flags);
133 if (off + sizeof (rec) > dest_size) 131 if (off + sizeof (rec) > dest_size)
134 return -1; 132 return -1;
135 GNUNET_memcpy (&dest[off], &rec, sizeof (rec)); 133 GNUNET_memcpy (&dest[off],
134 &rec,
135 sizeof (rec));
136 off += sizeof (rec); 136 off += sizeof (rec);
137 if (off + rd[i].data_size > dest_size) 137 if (off + rd[i].data_size > dest_size)
138 return -1; 138 return -1;
139 GNUNET_memcpy (&dest[off], rd[i].data, rd[i].data_size); 139 GNUNET_memcpy (&dest[off],
140 rd[i].data,
141 rd[i].data_size);
140 off += rd[i].data_size; 142 off += rd[i].data_size;
141 } 143 }
142 return off; 144 return off;
@@ -177,13 +179,11 @@ GNUNET_GNSRECORD_records_deserialize (size_t len,
177 return GNUNET_SYSERR; 179 return GNUNET_SYSERR;
178 dest[i].data = &src[off]; 180 dest[i].data = &src[off];
179 off += dest[i].data_size; 181 off += dest[i].data_size;
180#if 0
181 LOG (GNUNET_ERROR_TYPE_DEBUG, 182 LOG (GNUNET_ERROR_TYPE_DEBUG,
182 "Deserialized record %u with flags %d and expiration time %llu\n", 183 "Deserialized record %u with flags %d and expiration time %llu\n",
183 i, 184 i,
184 dest[i].flags, 185 dest[i].flags,
185 (unsigned long long) dest[i].expiration_time); 186 (unsigned long long) dest[i].expiration_time);
186#endif
187 } 187 }
188 return GNUNET_OK; 188 return GNUNET_OK;
189} 189}
diff --git a/src/namestore/gnunet-namestore.c b/src/namestore/gnunet-namestore.c
index 82213497c..9e654cc34 100644
--- a/src/namestore/gnunet-namestore.c
+++ b/src/namestore/gnunet-namestore.c
@@ -411,7 +411,8 @@ display_record (void *cls,
411 rd[i].data_size); 411 rd[i].data_size);
412 if (NULL == s) 412 if (NULL == s)
413 { 413 {
414 FPRINTF (stdout, _("\tCorrupt or unsupported record of type %u\n"), 414 FPRINTF (stdout,
415 _("\tCorrupt or unsupported record of type %u\n"),
415 (unsigned int) rd[i].record_type); 416 (unsigned int) rd[i].record_type);
416 continue; 417 continue;
417 } 418 }
@@ -579,7 +580,9 @@ get_existing_record (void *cls,
579 break; 580 break;
580 } 581 }
581 memset (rdn, 0, sizeof (struct GNUNET_GNSRECORD_Data)); 582 memset (rdn, 0, sizeof (struct GNUNET_GNSRECORD_Data));
582 GNUNET_memcpy (&rdn[1], rd, rd_count * sizeof (struct GNUNET_GNSRECORD_Data)); 583 GNUNET_memcpy (&rdn[1],
584 rd,
585 rd_count * sizeof (struct GNUNET_GNSRECORD_Data));
583 rde = &rdn[0]; 586 rde = &rdn[0];
584 rde->data = data; 587 rde->data = data;
585 rde->data_size = data_size; 588 rde->data_size = data_size;
@@ -846,7 +849,8 @@ testservice_task (void *cls,
846 { 849 {
847 fprintf (stderr, 850 fprintf (stderr,
848 _("Missing option `%s' for operation `%s'\n"), 851 _("Missing option `%s' for operation `%s'\n"),
849 "-e", _("add")); 852 "-e",
853 _("add"));
850 GNUNET_SCHEDULER_shutdown (); 854 GNUNET_SCHEDULER_shutdown ();
851 ret = 1; 855 ret = 1;
852 return; 856 return;
@@ -862,12 +866,19 @@ testservice_task (void *cls,
862 &etime_rel)) 866 &etime_rel))
863 { 867 {
864 etime_is_rel = GNUNET_YES; 868 etime_is_rel = GNUNET_YES;
869 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
870 "Storing record with relative expiration time of %s\n",
871 GNUNET_STRINGS_relative_time_to_string (etime_rel,
872 GNUNET_NO));
865 } 873 }
866 else if (GNUNET_OK == 874 else if (GNUNET_OK ==
867 GNUNET_STRINGS_fancy_time_to_absolute (expirationstring, 875 GNUNET_STRINGS_fancy_time_to_absolute (expirationstring,
868 &etime_abs)) 876 &etime_abs))
869 { 877 {
870 etime_is_rel = GNUNET_NO; 878 etime_is_rel = GNUNET_NO;
879 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
880 "Storing record with absolute expiration time of %s\n",
881 GNUNET_STRINGS_absolute_time_to_string (etime_abs));
871 } 882 }
872 else 883 else
873 { 884 {
@@ -996,8 +1007,11 @@ testservice_task (void *cls,
996 ret = 1; 1007 ret = 1;
997 return; 1008 return;
998 } 1009 }
999 add_qe_uri = GNUNET_NAMESTORE_set_nick(ns, &zone_pkey, nickstring, 1010 add_qe_uri = GNUNET_NAMESTORE_set_nick(ns,
1000 &add_continuation, &add_qe_uri); 1011 &zone_pkey,
1012 nickstring,
1013 &add_continuation,
1014 &add_qe_uri);
1001 } 1015 }
1002 if (monitor) 1016 if (monitor)
1003 { 1017 {
@@ -1084,7 +1098,8 @@ id_connect_cb (void *cls,
1084 { 1098 {
1085 get_default = GNUNET_IDENTITY_get (idh, 1099 get_default = GNUNET_IDENTITY_get (idh,
1086 "namestore", 1100 "namestore",
1087 &default_ego_cb, (void *) cfg); 1101 &default_ego_cb,
1102 (void *) cfg);
1088 } 1103 }
1089} 1104}
1090 1105
@@ -1093,6 +1108,7 @@ static void
1093testservice_id_task (void *cls, int result) 1108testservice_id_task (void *cls, int result)
1094{ 1109{
1095 const struct GNUNET_CONFIGURATION_Handle *cfg = cls; 1110 const struct GNUNET_CONFIGURATION_Handle *cfg = cls;
1111
1096 if (result != GNUNET_YES) 1112 if (result != GNUNET_YES)
1097 { 1113 {
1098 fprintf (stderr, 1114 fprintf (stderr,
@@ -1101,11 +1117,14 @@ testservice_id_task (void *cls, int result)
1101 ret = -1; 1117 ret = -1;
1102 return; 1118 return;
1103 } 1119 }
1104 GNUNET_SCHEDULER_add_shutdown (&do_shutdown, (void *) cfg); 1120 GNUNET_SCHEDULER_add_shutdown (&do_shutdown,
1121 (void *) cfg);
1105 1122
1106 if (NULL == ego_name) 1123 if (NULL == ego_name)
1107 { 1124 {
1108 idh = GNUNET_IDENTITY_connect (cfg, &id_connect_cb, (void *) cfg); 1125 idh = GNUNET_IDENTITY_connect (cfg,
1126 &id_connect_cb,
1127 (void *) cfg);
1109 if (NULL == idh) 1128 if (NULL == idh)
1110 fprintf (stderr, _("Cannot connect to identity service\n")); 1129 fprintf (stderr, _("Cannot connect to identity service\n"));
1111 ret = -1; 1130 ret = -1;
@@ -1127,7 +1146,9 @@ testservice_id_task (void *cls, int result)
1127 * @param cfg configuration 1146 * @param cfg configuration
1128 */ 1147 */
1129static void 1148static void
1130run (void *cls, char *const *args, const char *cfgfile, 1149run (void *cls,
1150 char *const *args,
1151 const char *cfgfile,
1131 const struct GNUNET_CONFIGURATION_Handle *cfg) 1152 const struct GNUNET_CONFIGURATION_Handle *cfg)
1132{ 1153{
1133 if ( (NULL != args[0]) && (NULL == uri) ) 1154 if ( (NULL != args[0]) && (NULL == uri) )
@@ -1148,7 +1169,8 @@ run (void *cls, char *const *args, const char *cfgfile,
1148 * @return 0 ok, 1 on error 1169 * @return 0 ok, 1 on error
1149 */ 1170 */
1150int 1171int
1151main (int argc, char *const *argv) 1172main (int argc,
1173 char *const *argv)
1152{ 1174{
1153 is_public = -1; 1175 is_public = -1;
1154 is_shadow = -1; 1176 is_shadow = -1;
@@ -1202,9 +1224,13 @@ main (int argc, char *const *argv)
1202 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv)) 1224 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
1203 return 2; 1225 return 2;
1204 1226
1205 GNUNET_log_setup ("gnunet-namestore", "WARNING", NULL); 1227 GNUNET_log_setup ("gnunet-namestore",
1228 "WARNING",
1229 NULL);
1206 if (GNUNET_OK != 1230 if (GNUNET_OK !=
1207 GNUNET_PROGRAM_run (argc, argv, "gnunet-namestore", 1231 GNUNET_PROGRAM_run (argc,
1232 argv,
1233 "gnunet-namestore",
1208 _("GNUnet zone manipulation tool"), 1234 _("GNUnet zone manipulation tool"),
1209 options, 1235 options,
1210 &run, NULL)) 1236 &run, NULL))
diff --git a/src/namestore/gnunet-service-namestore.c b/src/namestore/gnunet-service-namestore.c
index 593763894..05bcd94ce 100644
--- a/src/namestore/gnunet-service-namestore.c
+++ b/src/namestore/gnunet-service-namestore.c
@@ -472,20 +472,19 @@ get_nick_record (const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone)
472 472
473 473
474static void 474static void
475merge_with_nick_records ( const struct GNUNET_GNSRECORD_Data *nick_rd, 475merge_with_nick_records (const struct GNUNET_GNSRECORD_Data *nick_rd,
476 unsigned int rdc2, 476 unsigned int rdc2,
477 const struct GNUNET_GNSRECORD_Data *rd2, 477 const struct GNUNET_GNSRECORD_Data *rd2,
478 unsigned int *rdc_res, 478 unsigned int *rdc_res,
479 struct GNUNET_GNSRECORD_Data **rd_res) 479 struct GNUNET_GNSRECORD_Data **rd_res)
480{ 480{
481 uint64_t latest_expiration; 481 uint64_t latest_expiration;
482 int c;
483 size_t req; 482 size_t req;
484 char *data; 483 char *data;
485 int record_offset; 484 int record_offset;
486 size_t data_offset; 485 size_t data_offset;
487 (*rdc_res) = 1 + rdc2;
488 486
487 (*rdc_res) = 1 + rdc2;
489 if (0 == 1 + rdc2) 488 if (0 == 1 + rdc2)
490 { 489 {
491 (*rd_res) = NULL; 490 (*rd_res) = NULL;
@@ -493,16 +492,16 @@ merge_with_nick_records ( const struct GNUNET_GNSRECORD_Data *nick_rd,
493 } 492 }
494 493
495 req = 0; 494 req = 0;
496 for (c=0; c< 1; c++) 495 for (unsigned int c=0; c< 1; c++)
497 req += sizeof (struct GNUNET_GNSRECORD_Data) + nick_rd[c].data_size; 496 req += sizeof (struct GNUNET_GNSRECORD_Data) + nick_rd[c].data_size;
498 for (c=0; c< rdc2; c++) 497 for (unsigned int c=0; c< rdc2; c++)
499 req += sizeof (struct GNUNET_GNSRECORD_Data) + rd2[c].data_size; 498 req += sizeof (struct GNUNET_GNSRECORD_Data) + rd2[c].data_size;
500 (*rd_res) = GNUNET_malloc (req); 499 (*rd_res) = GNUNET_malloc (req);
501 data = (char *) &(*rd_res)[1 + rdc2]; 500 data = (char *) &(*rd_res)[1 + rdc2];
502 data_offset = 0; 501 data_offset = 0;
503 latest_expiration = 0; 502 latest_expiration = 0;
504 503
505 for (c=0; c< rdc2; c++) 504 for (unsigned int c=0; c< rdc2; c++)
506 { 505 {
507 if (0 != (rd2[c].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION)) 506 if (0 != (rd2[c].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION))
508 { 507 {
@@ -514,19 +513,17 @@ merge_with_nick_records ( const struct GNUNET_GNSRECORD_Data *nick_rd,
514 latest_expiration = rd2[c].expiration_time; 513 latest_expiration = rd2[c].expiration_time;
515 (*rd_res)[c] = rd2[c]; 514 (*rd_res)[c] = rd2[c];
516 (*rd_res)[c].data = (void *) &data[data_offset]; 515 (*rd_res)[c].data = (void *) &data[data_offset];
517 // WTF?
518 GNUNET_memcpy ((void *) (*rd_res)[c].data, 516 GNUNET_memcpy ((void *) (*rd_res)[c].data,
519 rd2[c].data, 517 rd2[c].data,
520 rd2[c].data_size); 518 rd2[c].data_size);
521 data_offset += (*rd_res)[c].data_size; 519 data_offset += (*rd_res)[c].data_size;
522 } 520 }
523 record_offset = rdc2; 521 record_offset = rdc2;
524 for (c=0; c< 1; c++) 522 for (unsigned int c=0; c< 1; c++)
525 { 523 {
526 (*rd_res)[c+record_offset] = nick_rd[c]; 524 (*rd_res)[c+record_offset] = nick_rd[c];
527 (*rd_res)[c+record_offset].expiration_time = latest_expiration; 525 (*rd_res)[c+record_offset].expiration_time = latest_expiration;
528 (*rd_res)[c+record_offset].data = (void *) &data[data_offset]; 526 (*rd_res)[c+record_offset].data = (void *) &data[data_offset];
529 // WTF?
530 GNUNET_memcpy ((void *) (*rd_res)[c+record_offset].data, 527 GNUNET_memcpy ((void *) (*rd_res)[c+record_offset].data,
531 nick_rd[c].data, 528 nick_rd[c].data,
532 nick_rd[c].data_size); 529 nick_rd[c].data_size);
@@ -571,15 +568,17 @@ send_lookup_response (struct GNUNET_SERVER_NotificationContext *nc,
571 if ((NULL != nick) && (0 != strcmp(name, GNUNET_GNS_MASTERZONE_STR))) 568 if ((NULL != nick) && (0 != strcmp(name, GNUNET_GNS_MASTERZONE_STR)))
572 { 569 {
573 nick->flags = (nick->flags | GNUNET_GNSRECORD_RF_PRIVATE) ^ GNUNET_GNSRECORD_RF_PRIVATE; 570 nick->flags = (nick->flags | GNUNET_GNSRECORD_RF_PRIVATE) ^ GNUNET_GNSRECORD_RF_PRIVATE;
574 merge_with_nick_records (nick, rd_count, rd, &res_count, &res); 571 merge_with_nick_records (nick,
575 //fprintf (stderr, "Merging %u records for `%s' with NICK records\n",rd_count, name); 572 rd_count,
573 rd,
574 &res_count,
575 &res);
576 GNUNET_free (nick); 576 GNUNET_free (nick);
577 } 577 }
578 else 578 else
579 { 579 {
580 res_count = rd_count; 580 res_count = rd_count;
581 res = (struct GNUNET_GNSRECORD_Data *) rd; 581 res = (struct GNUNET_GNSRECORD_Data *) rd;
582 //fprintf (stderr, "Not merging %u records for `%s' with NICK records\n",rd_count, name);
583 } 582 }
584 583
585 name_len = strlen (name) + 1; 584 name_len = strlen (name) + 1;
@@ -599,8 +598,7 @@ send_lookup_response (struct GNUNET_SERVER_NotificationContext *nc,
599 rd_ser = &name_tmp[name_len]; 598 rd_ser = &name_tmp[name_len];
600 GNUNET_GNSRECORD_records_serialize (res_count, res, rd_ser_len, rd_ser); 599 GNUNET_GNSRECORD_records_serialize (res_count, res, rd_ser_len, rd_ser);
601 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 600 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
602 "Sending `%s' message with %u records and size %zu\n", 601 "Sending RECORD_RESULT message with %u records and size %zu\n",
603 "RECORD_RESULT",
604 res_count, 602 res_count,
605 msg_size); 603 msg_size);
606 GNUNET_SERVER_notification_context_unicast (nc, 604 GNUNET_SERVER_notification_context_unicast (nc,
@@ -776,7 +774,9 @@ lookup_it (void *cls,
776 rlc->found = GNUNET_YES; 774 rlc->found = GNUNET_YES;
777 if (0 != rd_count) 775 if (0 != rd_count)
778 { 776 {
779 if ((NULL != rlc->nick) && (0 != strcmp(label, GNUNET_GNS_MASTERZONE_STR))) 777 if ( (NULL != rlc->nick) &&
778 (0 != strcmp (label,
779 GNUNET_GNS_MASTERZONE_STR)) )
780 { 780 {
781 /* Merge */ 781 /* Merge */
782 rd_res = NULL; 782 rd_res = NULL;
@@ -786,10 +786,14 @@ lookup_it (void *cls,
786 rd_count, rd, 786 rd_count, rd,
787 &rdc_res, &rd_res); 787 &rdc_res, &rd_res);
788 788
789 rlc->rd_ser_len = GNUNET_GNSRECORD_records_get_size (rdc_res, rd_res); 789 rlc->rd_ser_len = GNUNET_GNSRECORD_records_get_size (rdc_res,
790 rd_res);
790 rlc->res_rd_count = rdc_res; 791 rlc->res_rd_count = rdc_res;
791 rlc->res_rd = GNUNET_malloc (rlc->rd_ser_len); 792 rlc->res_rd = GNUNET_malloc (rlc->rd_ser_len);
792 GNUNET_GNSRECORD_records_serialize (rdc_res, rd_res, rlc->rd_ser_len , rlc->res_rd); 793 GNUNET_GNSRECORD_records_serialize (rdc_res,
794 rd_res,
795 rlc->rd_ser_len,
796 rlc->res_rd);
793 797
794 GNUNET_free (rd_res); 798 GNUNET_free (rd_res);
795 GNUNET_free (rlc->nick); 799 GNUNET_free (rlc->nick);
@@ -797,10 +801,14 @@ lookup_it (void *cls,
797 } 801 }
798 else 802 else
799 { 803 {
800 rlc->rd_ser_len = GNUNET_GNSRECORD_records_get_size (rd_count, rd); 804 rlc->rd_ser_len = GNUNET_GNSRECORD_records_get_size (rd_count,
805 rd);
801 rlc->res_rd_count = rd_count; 806 rlc->res_rd_count = rd_count;
802 rlc->res_rd = GNUNET_malloc (rlc->rd_ser_len); 807 rlc->res_rd = GNUNET_malloc (rlc->rd_ser_len);
803 GNUNET_GNSRECORD_records_serialize (rd_count, rd, rlc->rd_ser_len , rlc->res_rd); 808 GNUNET_GNSRECORD_records_serialize (rd_count,
809 rd,
810 rlc->rd_ser_len,
811 rlc->res_rd);
804 } 812 }
805 } 813 }
806 else 814 else
@@ -923,7 +931,6 @@ handle_record_lookup (void *cls,
923 client, 931 client,
924 &llr_msg->gns_header.header, 932 &llr_msg->gns_header.header,
925 GNUNET_NO); 933 GNUNET_NO);
926
927 GNUNET_free_non_null (rlc.res_rd); 934 GNUNET_free_non_null (rlc.res_rd);
928 GNUNET_free (llr_msg); 935 GNUNET_free (llr_msg);
929} 936}
diff --git a/src/namestore/plugin_namestore_sqlite.c b/src/namestore/plugin_namestore_sqlite.c
index e93f800c3..d64ce10a8 100644
--- a/src/namestore/plugin_namestore_sqlite.c
+++ b/src/namestore/plugin_namestore_sqlite.c
@@ -137,16 +137,20 @@ create_indices (sqlite3 * dbh)
137{ 137{
138 /* create indices */ 138 /* create indices */
139 if ( (SQLITE_OK != 139 if ( (SQLITE_OK !=
140 sqlite3_exec (dbh, "CREATE INDEX IF NOT EXISTS ir_pkey_reverse ON ns097records (zone_private_key,pkey)", 140 sqlite3_exec (dbh,
141 "CREATE INDEX IF NOT EXISTS ir_pkey_reverse ON ns097records (zone_private_key,pkey)",
141 NULL, NULL, NULL)) || 142 NULL, NULL, NULL)) ||
142 (SQLITE_OK != 143 (SQLITE_OK !=
143 sqlite3_exec (dbh, "CREATE INDEX IF NOT EXISTS ir_pkey_iter ON ns097records (zone_private_key,rvalue)", 144 sqlite3_exec (dbh,
145 "CREATE INDEX IF NOT EXISTS ir_pkey_iter ON ns097records (zone_private_key,rvalue)",
144 NULL, NULL, NULL)) || 146 NULL, NULL, NULL)) ||
145 (SQLITE_OK != 147 (SQLITE_OK !=
146 sqlite3_exec (dbh, "CREATE INDEX IF NOT EXISTS it_iter ON ns097records (rvalue)", 148 sqlite3_exec (dbh,
149 "CREATE INDEX IF NOT EXISTS it_iter ON ns097records (rvalue)",
147 NULL, NULL, NULL)) ) 150 NULL, NULL, NULL)) )
148 LOG (GNUNET_ERROR_TYPE_ERROR, 151 LOG (GNUNET_ERROR_TYPE_ERROR,
149 "Failed to create indices: %s\n", sqlite3_errmsg (dbh)); 152 "Failed to create indices: %s\n",
153 sqlite3_errmsg (dbh));
150} 154}
151 155
152 156
@@ -178,16 +182,21 @@ database_setup (struct Plugin *plugin)
178#endif 182#endif
179 183
180 if (GNUNET_OK != 184 if (GNUNET_OK !=
181 GNUNET_CONFIGURATION_get_value_filename (plugin->cfg, "namestore-sqlite", 185 GNUNET_CONFIGURATION_get_value_filename (plugin->cfg,
182 "FILENAME", &afsdir)) 186 "namestore-sqlite",
187 "FILENAME",
188 &afsdir))
183 { 189 {
184 GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, 190 GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
185 "namestore-sqlite", "FILENAME"); 191 "namestore-sqlite",
192 "FILENAME");
186 return GNUNET_SYSERR; 193 return GNUNET_SYSERR;
187 } 194 }
188 if (GNUNET_OK != GNUNET_DISK_file_test (afsdir)) 195 if (GNUNET_OK !=
196 GNUNET_DISK_file_test (afsdir))
189 { 197 {
190 if (GNUNET_OK != GNUNET_DISK_directory_create_for_file (afsdir)) 198 if (GNUNET_OK !=
199 GNUNET_DISK_directory_create_for_file (afsdir))
191 { 200 {
192 GNUNET_break (0); 201 GNUNET_break (0);
193 GNUNET_free (afsdir); 202 GNUNET_free (afsdir);
@@ -206,28 +215,37 @@ database_setup (struct Plugin *plugin)
206 return GNUNET_SYSERR; 215 return GNUNET_SYSERR;
207 } 216 }
208 CHECK (SQLITE_OK == 217 CHECK (SQLITE_OK ==
209 sqlite3_exec (plugin->dbh, "PRAGMA temp_store=MEMORY", NULL, NULL, 218 sqlite3_exec (plugin->dbh,
219 "PRAGMA temp_store=MEMORY", NULL, NULL,
210 ENULL)); 220 ENULL));
211 CHECK (SQLITE_OK == 221 CHECK (SQLITE_OK ==
212 sqlite3_exec (plugin->dbh, "PRAGMA synchronous=NORMAL", NULL, NULL, 222 sqlite3_exec (plugin->dbh,
223 "PRAGMA synchronous=NORMAL", NULL, NULL,
213 ENULL)); 224 ENULL));
214 CHECK (SQLITE_OK == 225 CHECK (SQLITE_OK ==
215 sqlite3_exec (plugin->dbh, "PRAGMA legacy_file_format=OFF", NULL, NULL, 226 sqlite3_exec (plugin->dbh,
227 "PRAGMA legacy_file_format=OFF", NULL, NULL,
216 ENULL)); 228 ENULL));
217 CHECK (SQLITE_OK == 229 CHECK (SQLITE_OK ==
218 sqlite3_exec (plugin->dbh, "PRAGMA auto_vacuum=INCREMENTAL", NULL, 230 sqlite3_exec (plugin->dbh,
231 "PRAGMA auto_vacuum=INCREMENTAL", NULL,
219 NULL, ENULL)); 232 NULL, ENULL));
220 CHECK (SQLITE_OK == 233 CHECK (SQLITE_OK ==
221 sqlite3_exec (plugin->dbh, "PRAGMA encoding=\"UTF-8\"", NULL, 234 sqlite3_exec (plugin->dbh,
235 "PRAGMA encoding=\"UTF-8\"", NULL,
222 NULL, ENULL)); 236 NULL, ENULL));
223 CHECK (SQLITE_OK == 237 CHECK (SQLITE_OK ==
224 sqlite3_exec (plugin->dbh, "PRAGMA locking_mode=EXCLUSIVE", NULL, NULL, 238 sqlite3_exec (plugin->dbh,
239 "PRAGMA locking_mode=EXCLUSIVE", NULL, NULL,
225 ENULL)); 240 ENULL));
226 CHECK (SQLITE_OK == 241 CHECK (SQLITE_OK ==
227 sqlite3_exec (plugin->dbh, "PRAGMA page_size=4092", NULL, NULL, 242 sqlite3_exec (plugin->dbh,
243 "PRAGMA page_size=4092", NULL, NULL,
228 ENULL)); 244 ENULL));
229 245
230 CHECK (SQLITE_OK == sqlite3_busy_timeout (plugin->dbh, BUSY_TIMEOUT_MS)); 246 CHECK (SQLITE_OK ==
247 sqlite3_busy_timeout (plugin->dbh,
248 BUSY_TIMEOUT_MS));
231 249
232 250
233 /* Create table */ 251 /* Create table */
@@ -248,7 +266,8 @@ database_setup (struct Plugin *plugin)
248 ")", 266 ")",
249 NULL, NULL, NULL) != SQLITE_OK)) 267 NULL, NULL, NULL) != SQLITE_OK))
250 { 268 {
251 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR, "sqlite3_exec"); 269 LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR,
270 "sqlite3_exec");
252 sqlite3_finalize (stmt); 271 sqlite3_finalize (stmt);
253 return GNUNET_SYSERR; 272 return GNUNET_SYSERR;
254 } 273 }
@@ -371,14 +390,17 @@ namestore_sqlite_store_records (void *cls,
371 for (i=0;i<rd_count;i++) 390 for (i=0;i<rd_count;i++)
372 if (GNUNET_GNSRECORD_TYPE_PKEY == rd[i].record_type) 391 if (GNUNET_GNSRECORD_TYPE_PKEY == rd[i].record_type)
373 { 392 {
374 GNUNET_break (sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey) == rd[i].data_size); 393 GNUNET_break (sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey) ==
394 rd[i].data_size);
375 GNUNET_memcpy (&pkey, 395 GNUNET_memcpy (&pkey,
376 rd[i].data, 396 rd[i].data,
377 rd[i].data_size); 397 rd[i].data_size);
378 break; 398 break;
379 } 399 }
380 rvalue = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK, UINT64_MAX); 400 rvalue = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
381 data_size = GNUNET_GNSRECORD_records_get_size (rd_count, rd); 401 UINT64_MAX);
402 data_size = GNUNET_GNSRECORD_records_get_size (rd_count,
403 rd);
382 if (data_size > 64 * 65536) 404 if (data_size > 64 * 65536)
383 { 405 {
384 GNUNET_break (0); 406 GNUNET_break (0);
@@ -387,17 +409,29 @@ namestore_sqlite_store_records (void *cls,
387 { 409 {
388 char data[data_size]; 410 char data[data_size];
389 411
390 if (data_size != GNUNET_GNSRECORD_records_serialize (rd_count, rd, 412 if (data_size !=
391 data_size, data)) 413 GNUNET_GNSRECORD_records_serialize (rd_count,
414 rd,
415 data_size,
416 data))
392 { 417 {
393 GNUNET_break (0); 418 GNUNET_break (0);
394 return GNUNET_SYSERR; 419 return GNUNET_SYSERR;
395 } 420 }
396 421
397 /* First delete 'old' records */ 422 /* First delete 'old' records */
398 if ((SQLITE_OK != sqlite3_bind_blob (plugin->delete_records, 1, 423 if ((SQLITE_OK !=
399 zone_key, sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey), SQLITE_STATIC)) || 424 sqlite3_bind_blob (plugin->delete_records,
400 (SQLITE_OK != sqlite3_bind_text (plugin->delete_records, 2, label, -1, SQLITE_STATIC))) 425 1,
426 zone_key,
427 sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey),
428 SQLITE_STATIC)) ||
429 (SQLITE_OK !=
430 sqlite3_bind_text (plugin->delete_records,
431 2,
432 label,
433 -1,
434 SQLITE_STATIC)))
401 { 435 {
402 LOG_SQLITE (plugin, 436 LOG_SQLITE (plugin,
403 GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 437 GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
@@ -416,14 +450,30 @@ namestore_sqlite_store_records (void *cls,
416 450
417 if (0 != rd_count) 451 if (0 != rd_count)
418 { 452 {
419 if ((SQLITE_OK != sqlite3_bind_blob (plugin->store_records, 1, 453 if ((SQLITE_OK !=
420 zone_key, sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey), SQLITE_STATIC)) || 454 sqlite3_bind_blob (plugin->store_records,
421 (SQLITE_OK != sqlite3_bind_blob (plugin->store_records, 2, 455 1,
422 &pkey, sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey), SQLITE_STATIC)) || 456 zone_key,
423 (SQLITE_OK != sqlite3_bind_int64 (plugin->store_records, 3, rvalue)) || 457 sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey),
424 (SQLITE_OK != sqlite3_bind_int (plugin->store_records, 4, rd_count)) || 458 SQLITE_STATIC)) ||
425 (SQLITE_OK != sqlite3_bind_blob (plugin->store_records, 5, data, data_size, SQLITE_STATIC)) || 459 (SQLITE_OK !=
426 (SQLITE_OK != sqlite3_bind_text (plugin->store_records, 6, label, -1, SQLITE_STATIC))) 460 sqlite3_bind_blob (plugin->store_records,
461 2,
462 &pkey,
463 sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey),
464 SQLITE_STATIC)) ||
465 (SQLITE_OK !=
466 sqlite3_bind_int64 (plugin->store_records, 3, rvalue)) ||
467 (SQLITE_OK !=
468 sqlite3_bind_int (plugin->store_records, 4, rd_count)) ||
469 (SQLITE_OK !=
470 sqlite3_bind_blob (plugin->store_records, 5,
471 data, data_size,
472 SQLITE_STATIC)) ||
473 (SQLITE_OK !=
474 sqlite3_bind_text (plugin->store_records, 6,
475 label, -1,
476 SQLITE_STATIC)))
427 { 477 {
428 LOG_SQLITE (plugin, 478 LOG_SQLITE (plugin,
429 GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 479 GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
diff --git a/src/util/strings.c b/src/util/strings.c
index 21470628e..8d10a81b8 100644
--- a/src/util/strings.c
+++ b/src/util/strings.c
@@ -354,7 +354,8 @@ GNUNET_STRINGS_fancy_time_to_absolute (const char *fancy_time,
354 struct tm tv; 354 struct tm tv;
355 time_t t; 355 time_t t;
356 356
357 if (0 == strcasecmp ("end of time", fancy_time)) 357 if (0 == strcasecmp ("end of time",
358 fancy_time))
358 { 359 {
359 *atime = GNUNET_TIME_UNIT_FOREVER_ABS; 360 *atime = GNUNET_TIME_UNIT_FOREVER_ABS;
360 return GNUNET_OK; 361 return GNUNET_OK;
diff --git a/src/vpn/gnunet-service-vpn.c b/src/vpn/gnunet-service-vpn.c
index 52b1e764e..629b59173 100644
--- a/src/vpn/gnunet-service-vpn.c
+++ b/src/vpn/gnunet-service-vpn.c
@@ -2749,6 +2749,7 @@ service_redirect_to_service (void *cls,
2749 &v4, 2749 &v4,
2750 &v6)) 2750 &v6))
2751 { 2751 {
2752 GNUNET_break (0);
2752 GNUNET_SERVER_receive_done (client, 2753 GNUNET_SERVER_receive_done (client,
2753 GNUNET_SYSERR); 2754 GNUNET_SYSERR);
2754 return; 2755 return;
@@ -2762,7 +2763,8 @@ service_redirect_to_service (void *cls,
2762 /* failure, we're done */ 2763 /* failure, we're done */
2763 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 2764 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
2764 _("Failed to allocate IP address for new destination\n")); 2765 _("Failed to allocate IP address for new destination\n"));
2765 GNUNET_SERVER_receive_done (client, GNUNET_OK); 2766 GNUNET_SERVER_receive_done (client,
2767 GNUNET_OK);
2766 return; 2768 return;
2767 } 2769 }
2768 2770