diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/datastore/Makefile.am | 1 | ||||
-rw-r--r-- | src/datastore/datastore_api.c | 108 | ||||
-rw-r--r-- | src/datastore/perf_datastore_api.c | 6 | ||||
-rw-r--r-- | src/datastore/perf_datastore_api_iterators.c | 6 | ||||
-rw-r--r-- | src/datastore/plugin_datastore_sqlite.c | 204 | ||||
-rw-r--r-- | src/datastore/test_datastore_api.c | 198 | ||||
-rw-r--r-- | src/include/gnunet_datastore_service.h | 2 | ||||
-rw-r--r-- | src/transport/plugin_transport_tcp.c | 8 | ||||
-rw-r--r-- | src/transport/test_transport_api_data.conf | 2 | ||||
-rw-r--r-- | src/transport/test_transport_api_peer1.conf | 2 | ||||
-rw-r--r-- | src/transport/test_transport_api_peer2.conf | 2 | ||||
-rw-r--r-- | src/util/disk.c | 8 |
12 files changed, 340 insertions, 207 deletions
diff --git a/src/datastore/Makefile.am b/src/datastore/Makefile.am index 1ad59099c..c3b8a9b15 100644 --- a/src/datastore/Makefile.am +++ b/src/datastore/Makefile.am | |||
@@ -43,6 +43,7 @@ plugin_LTLIBRARIES = \ | |||
43 | libgnunet_plugin_datastore_sqlite_la_SOURCES = \ | 43 | libgnunet_plugin_datastore_sqlite_la_SOURCES = \ |
44 | plugin_datastore_sqlite.c | 44 | plugin_datastore_sqlite.c |
45 | libgnunet_plugin_datastore_sqlite_la_LIBADD = \ | 45 | libgnunet_plugin_datastore_sqlite_la_LIBADD = \ |
46 | $(top_builddir)/src/statistics/libgnunetstatistics.la \ | ||
46 | $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) -lsqlite3 | 47 | $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) -lsqlite3 |
47 | libgnunet_plugin_datastore_sqlite_la_LDFLAGS = \ | 48 | libgnunet_plugin_datastore_sqlite_la_LDFLAGS = \ |
48 | $(GN_PLUGIN_LDFLAGS) | 49 | $(GN_PLUGIN_LDFLAGS) |
diff --git a/src/datastore/datastore_api.c b/src/datastore/datastore_api.c index 968e09b20..3b9e22a3a 100644 --- a/src/datastore/datastore_api.c +++ b/src/datastore/datastore_api.c | |||
@@ -113,6 +113,32 @@ struct GNUNET_DATASTORE_Handle *GNUNET_DATASTORE_connect (struct | |||
113 | 113 | ||
114 | 114 | ||
115 | /** | 115 | /** |
116 | * Transmit DROP message to Database service. | ||
117 | */ | ||
118 | static size_t | ||
119 | transmit_drop (void *cls, | ||
120 | size_t size, void *buf) | ||
121 | { | ||
122 | struct GNUNET_DATASTORE_Handle *h = cls; | ||
123 | struct GNUNET_MessageHeader *hdr; | ||
124 | |||
125 | if (buf == NULL) | ||
126 | { | ||
127 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
128 | _("Failed to transmit request to drop database.\n")); | ||
129 | GNUNET_DATASTORE_disconnect (h, GNUNET_NO); | ||
130 | return 0; | ||
131 | } | ||
132 | GNUNET_assert (size >= sizeof(struct GNUNET_MessageHeader)); | ||
133 | hdr = buf; | ||
134 | hdr->size = htons(sizeof(struct GNUNET_MessageHeader)); | ||
135 | hdr->type = htons(GNUNET_MESSAGE_TYPE_DATASTORE_DROP)); | ||
136 | GNUNET_DATASTORE_disconnect (h, GNUNET_NO); | ||
137 | return sizeof(struct GNUNET_MessageHeader); | ||
138 | } | ||
139 | |||
140 | |||
141 | /** | ||
116 | * Disconnect from the datastore service (and free | 142 | * Disconnect from the datastore service (and free |
117 | * associated resources). | 143 | * associated resources). |
118 | * | 144 | * |
@@ -124,7 +150,14 @@ void GNUNET_DATASTORE_disconnect (struct GNUNET_DATASTORE_Handle *h, | |||
124 | { | 150 | { |
125 | if (GNUNET_YES == drop) | 151 | if (GNUNET_YES == drop) |
126 | { | 152 | { |
127 | /* FIXME: send 'drop' request */ | 153 | if (NULL != |
154 | GNUNET_CLIENT_notify_transmit_ready (h->client, | ||
155 | sizeof(struct GNUNET_MessageHeader), | ||
156 | GNUNET_TIME_UNIT_MINUTES, | ||
157 | &transmit_drop, | ||
158 | h)) | ||
159 | return; | ||
160 | GNUNET_break (0); | ||
128 | } | 161 | } |
129 | GNUNET_CLIENT_disconnect (h->client); | 162 | GNUNET_CLIENT_disconnect (h->client); |
130 | GNUNET_free (h); | 163 | GNUNET_free (h); |
@@ -132,6 +165,45 @@ void GNUNET_DATASTORE_disconnect (struct GNUNET_DATASTORE_Handle *h, | |||
132 | 165 | ||
133 | 166 | ||
134 | /** | 167 | /** |
168 | * The closure is followed by the data message. | ||
169 | */ | ||
170 | struct PutClosure | ||
171 | { | ||
172 | struct GNUNET_DATASTORE_Handle *h; | ||
173 | GNUNET_DATASTORE_ContinuationWithStatus cont; | ||
174 | void *cont_cls; | ||
175 | }; | ||
176 | |||
177 | |||
178 | /** | ||
179 | * Transmit PUT message to Database service. | ||
180 | */ | ||
181 | static size_t | ||
182 | transmit_put (void *cls, | ||
183 | size_t size, void *buf) | ||
184 | { | ||
185 | struct PutClosure *pc = cls; | ||
186 | struct DataMessage *dm; | ||
187 | uint16_t msize; | ||
188 | |||
189 | if (buf == NULL) | ||
190 | { | ||
191 | pc->cont (pc->cont_cls, GNUNET_SYSERR, | ||
192 | gettext_noop ("Error transmitting `PUT' message to datastore service.\n")); | ||
193 | GNUNET_free (pc); | ||
194 | return 0; | ||
195 | } | ||
196 | dm = (struct DataMessage*) &pc[1]; | ||
197 | msize = ntohs(dm->size); | ||
198 | GNUNET_assert (msize <= size); | ||
199 | memcpy (buf, dm, msize); | ||
200 | /* FIXME: wait for response from datastore, then | ||
201 | call our continuation! */ | ||
202 | return msize; | ||
203 | } | ||
204 | |||
205 | |||
206 | /** | ||
135 | * Store an item in the datastore. If the item is already present, | 207 | * Store an item in the datastore. If the item is already present, |
136 | * the priorities are summed up and the higher expiration time and | 208 | * the priorities are summed up and the higher expiration time and |
137 | * lower anonymity level is used. | 209 | * lower anonymity level is used. |
@@ -144,6 +216,7 @@ void GNUNET_DATASTORE_disconnect (struct GNUNET_DATASTORE_Handle *h, | |||
144 | * @param priority priority of the content | 216 | * @param priority priority of the content |
145 | * @param anonymity anonymity-level for the content | 217 | * @param anonymity anonymity-level for the content |
146 | * @param expiration expiration time for the content | 218 | * @param expiration expiration time for the content |
219 | * @param timeout timeout for the operation | ||
147 | * @param cont continuation to call when done | 220 | * @param cont continuation to call when done |
148 | * @param cont_cls closure for cont | 221 | * @param cont_cls closure for cont |
149 | */ | 222 | */ |
@@ -157,10 +230,41 @@ GNUNET_DATASTORE_put (struct GNUNET_DATASTORE_Handle *h, | |||
157 | uint32_t priority, | 230 | uint32_t priority, |
158 | uint32_t anonymity, | 231 | uint32_t anonymity, |
159 | struct GNUNET_TIME_Absolute expiration, | 232 | struct GNUNET_TIME_Absolute expiration, |
233 | struct GNUNET_TIME_Relative timeout, | ||
160 | GNUNET_DATASTORE_ContinuationWithStatus cont, | 234 | GNUNET_DATASTORE_ContinuationWithStatus cont, |
161 | void *cont_cls) | 235 | void *cont_cls) |
162 | { | 236 | { |
163 | cont (cont_cls, GNUNET_SYSERR, "not implemented"); | 237 | struct PutClosure *pc; |
238 | struct DataMessage *dm; | ||
239 | |||
240 | pc = GNUNET_malloc (sizeof(struct PutClosure) + | ||
241 | sizeof(struct DataMessage) + | ||
242 | size); | ||
243 | dm = (struct DataMessage*) &pc[1]; | ||
244 | pc->h = h; | ||
245 | pc->cont = cont; | ||
246 | pc->cont_cls = cont_cls; | ||
247 | dm->header.type = htons(GNUNET_MESSAGE_TYPE_DATASTORE_PUT); | ||
248 | dm->header.size = htons(sizeof(struct DataMessage) + size); | ||
249 | dm->rid = htonl(rid); | ||
250 | dm->size = htonl(size); | ||
251 | dm->type = htonl(type); | ||
252 | dm->priority = htonl(priority); | ||
253 | dm->anonymity = htonl(anonymity); | ||
254 | dm->uid = GNUNET_htonll(0); | ||
255 | dm->expiration = GNUNET_htonll(expiration); | ||
256 | dm->key = *key; | ||
257 | memcpy (&dm[1], data, size); | ||
258 | if (NULL == GNUNET_CLIENT_notify_transmit_ready (h->client, | ||
259 | sizeof(struct DataMessage) + size, | ||
260 | timeout, | ||
261 | &transmit_put, | ||
262 | pc)) | ||
263 | { | ||
264 | GNUNET_break (0); | ||
265 | cont (cont_cls, GNUNET_SYSERR, | ||
266 | gettext_noop ("Not ready to transmit request to datastore service")); | ||
267 | } | ||
164 | } | 268 | } |
165 | 269 | ||
166 | 270 | ||
diff --git a/src/datastore/perf_datastore_api.c b/src/datastore/perf_datastore_api.c index 95ee18dad..f10f6d0f5 100644 --- a/src/datastore/perf_datastore_api.c +++ b/src/datastore/perf_datastore_api.c | |||
@@ -104,6 +104,9 @@ static unsigned long long stored_ops; | |||
104 | 104 | ||
105 | static struct GNUNET_TIME_Absolute start_time; | 105 | static struct GNUNET_TIME_Absolute start_time; |
106 | 106 | ||
107 | static int ok; | ||
108 | |||
109 | |||
107 | static int | 110 | static int |
108 | putValue (int i, int k) | 111 | putValue (int i, int k) |
109 | { | 112 | { |
@@ -206,7 +209,6 @@ run (void *cls, | |||
206 | static int | 209 | static int |
207 | check () | 210 | check () |
208 | { | 211 | { |
209 | int ok = 1 + 2 + 4 + 8; | ||
210 | pid_t pid; | 212 | pid_t pid; |
211 | char *const argv[] = { "perf-datastore-api", | 213 | char *const argv[] = { "perf-datastore-api", |
212 | "-c", | 214 | "-c", |
@@ -228,7 +230,7 @@ check () | |||
228 | sleep (1); | 230 | sleep (1); |
229 | GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, | 231 | GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, |
230 | argv, "perf-datastore-api", "nohelp", | 232 | argv, "perf-datastore-api", "nohelp", |
231 | options, &run, &ok); | 233 | options, &run, NULL); |
232 | if (0 != PLIBC_KILL (pid, SIGTERM)) | 234 | if (0 != PLIBC_KILL (pid, SIGTERM)) |
233 | { | 235 | { |
234 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); | 236 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); |
diff --git a/src/datastore/perf_datastore_api_iterators.c b/src/datastore/perf_datastore_api_iterators.c index 328cceb75..635fa1f28 100644 --- a/src/datastore/perf_datastore_api_iterators.c +++ b/src/datastore/perf_datastore_api_iterators.c | |||
@@ -52,6 +52,9 @@ static unsigned long long stored_ops; | |||
52 | static struct GNUNET_CONFIGURATION_Handle *cfg; | 52 | static struct GNUNET_CONFIGURATION_Handle *cfg; |
53 | 53 | ||
54 | static struct GNUNET_SCHEDULER_Handle *sched; | 54 | static struct GNUNET_SCHEDULER_Handle *sched; |
55 | |||
56 | static int ok; | ||
57 | |||
55 | 58 | ||
56 | static int | 59 | static int |
57 | putValue (struct GNUNET_DATASTORE_PluginFunctions * api, int i, int k) | 60 | putValue (struct GNUNET_DATASTORE_PluginFunctions * api, int i, int k) |
@@ -271,7 +274,6 @@ run (void *cls, | |||
271 | static int | 274 | static int |
272 | check () | 275 | check () |
273 | { | 276 | { |
274 | int ok = 1 + 2 + 4 + 8; | ||
275 | char *const argv[] = { "perf-datastore-api-iterators", | 277 | char *const argv[] = { "perf-datastore-api-iterators", |
276 | "-c", | 278 | "-c", |
277 | "test_datastore_api_data.conf", | 279 | "test_datastore_api_data.conf", |
@@ -285,7 +287,7 @@ check () | |||
285 | }; | 287 | }; |
286 | GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, | 288 | GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, |
287 | argv, "perf-datastore-api-iterators", "nohelp", | 289 | argv, "perf-datastore-api-iterators", "nohelp", |
288 | options, &run, &ok); | 290 | options, &run, NULL); |
289 | if (ok != 0) | 291 | if (ok != 0) |
290 | fprintf (stderr, "Missed some testcases: %u\n", ok); | 292 | fprintf (stderr, "Missed some testcases: %u\n", ok); |
291 | return ok; | 293 | return ok; |
diff --git a/src/datastore/plugin_datastore_sqlite.c b/src/datastore/plugin_datastore_sqlite.c index 5ae03b9bb..6abb08dd8 100644 --- a/src/datastore/plugin_datastore_sqlite.c +++ b/src/datastore/plugin_datastore_sqlite.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of GNUnet | 2 | This file is part of GNUnet |
3 | (C) 2009 Christian Grothoff (and other contributing authors) | 3 | (C) 2009 Christian Grothoff (and other contributing authors) |
4 | 4 | ||
@@ -63,11 +63,11 @@ | |||
63 | "ORDER BY prio ASC, hash ASC LIMIT 1" | 63 | "ORDER BY prio ASC, hash ASC LIMIT 1" |
64 | 64 | ||
65 | #define SELECT_IT_NON_ANONYMOUS_1 \ | 65 | #define SELECT_IT_NON_ANONYMOUS_1 \ |
66 | "SELECT size,type,prio,anonLevel,expire,hash,value,_ROWID_ FROM gn080 WHERE (prio = ? AND hash < ? AND anonLevel = 0) "\ | 66 | "SELECT size,type,prio,anonLevel,expire,hash,value,_ROWID_ FROM gn080 WHERE (prio = ? AND hash < ? AND anonLevel = 0 AND expire > %llu) "\ |
67 | " ORDER BY hash DESC LIMIT 1" | 67 | " ORDER BY hash DESC LIMIT 1" |
68 | 68 | ||
69 | #define SELECT_IT_NON_ANONYMOUS_2 \ | 69 | #define SELECT_IT_NON_ANONYMOUS_2 \ |
70 | "SELECT size,type,prio,anonLevel,expire,hash,value,_ROWID_ FROM gn080 WHERE (prio < ? AND anonLevel = 0)"\ | 70 | "SELECT size,type,prio,anonLevel,expire,hash,value,_ROWID_ FROM gn080 WHERE (prio < ? AND anonLevel = 0 AND expire > %llu)"\ |
71 | " ORDER BY prio DESC, hash DESC LIMIT 1" | 71 | " ORDER BY prio DESC, hash DESC LIMIT 1" |
72 | 72 | ||
73 | #define SELECT_IT_EXPIRATION_TIME_1 \ | 73 | #define SELECT_IT_EXPIRATION_TIME_1 \ |
@@ -83,7 +83,7 @@ | |||
83 | " ORDER BY hash DESC LIMIT 1" | 83 | " ORDER BY hash DESC LIMIT 1" |
84 | 84 | ||
85 | #define SELECT_IT_MIGRATION_ORDER_2 \ | 85 | #define SELECT_IT_MIGRATION_ORDER_2 \ |
86 | "SELECT size,type,prio,anonLevel,expire,hash,value,_ROWID_ FROM gn080 WHERE (expire < ?) "\ | 86 | "SELECT size,type,prio,anonLevel,expire,hash,value,_ROWID_ FROM gn080 WHERE (expire < ? AND expire > %llu) "\ |
87 | " ORDER BY expire DESC, hash DESC LIMIT 1" | 87 | " ORDER BY expire DESC, hash DESC LIMIT 1" |
88 | 88 | ||
89 | /** | 89 | /** |
@@ -220,7 +220,6 @@ database_setup (struct GNUNET_CONFIGURATION_Handle *cfg, | |||
220 | struct Plugin *plugin) | 220 | struct Plugin *plugin) |
221 | { | 221 | { |
222 | sqlite3_stmt *stmt; | 222 | sqlite3_stmt *stmt; |
223 | char *dir; | ||
224 | char *afsdir; | 223 | char *afsdir; |
225 | #if ENULL_DEFINED | 224 | #if ENULL_DEFINED |
226 | char *e; | 225 | char *e; |
@@ -228,33 +227,31 @@ database_setup (struct GNUNET_CONFIGURATION_Handle *cfg, | |||
228 | 227 | ||
229 | if (GNUNET_OK != | 228 | if (GNUNET_OK != |
230 | GNUNET_CONFIGURATION_get_value_filename (cfg, | 229 | GNUNET_CONFIGURATION_get_value_filename (cfg, |
231 | "FS", | 230 | "datastore-sqlite", |
232 | "DIR", | 231 | "FILENAME", |
233 | &afsdir)) | 232 | &afsdir)) |
234 | { | 233 | { |
235 | GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, | 234 | GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, |
236 | "sqlite", | 235 | "sqlite", |
237 | _("Option `%s' in section `%s' missing in configuration!\n"), | 236 | _("Option `%s' in section `%s' missing in configuration!\n"), |
238 | "DIR", | 237 | "FILENAME", |
239 | "FS"); | 238 | "datastore-sqlite"); |
240 | return GNUNET_SYSERR; | 239 | return GNUNET_SYSERR; |
241 | } | 240 | } |
242 | GNUNET_asprintf (&dir, "%s/content/gnunet.dat", afsdir); | 241 | if (GNUNET_OK != GNUNET_DISK_directory_create_for_file (afsdir)) |
243 | GNUNET_free (afsdir); | ||
244 | if (GNUNET_OK != GNUNET_DISK_directory_create_for_file (dir)) | ||
245 | { | 242 | { |
246 | GNUNET_break (0); | 243 | GNUNET_break (0); |
247 | GNUNET_free (dir); | 244 | GNUNET_free (afsdir); |
248 | return GNUNET_SYSERR; | 245 | return GNUNET_SYSERR; |
249 | } | 246 | } |
250 | plugin->fn = GNUNET_STRINGS_to_utf8 (dir, strlen (dir), | 247 | plugin->fn = GNUNET_STRINGS_to_utf8 (afsdir, strlen (afsdir), |
251 | #ifdef ENABLE_NLS | 248 | #ifdef ENABLE_NLS |
252 | nl_langinfo (CODESET) | 249 | nl_langinfo (CODESET) |
253 | #else | 250 | #else |
254 | "UTF-8" /* good luck */ | 251 | "UTF-8" /* good luck */ |
255 | #endif | 252 | #endif |
256 | ); | 253 | ); |
257 | GNUNET_free (dir); | 254 | GNUNET_free (afsdir); |
258 | 255 | ||
259 | /* Open database and precompile statements */ | 256 | /* Open database and precompile statements */ |
260 | if (sqlite3_open (plugin->fn, &plugin->dbh) != SQLITE_OK) | 257 | if (sqlite3_open (plugin->fn, &plugin->dbh) != SQLITE_OK) |
@@ -794,7 +791,7 @@ iter_next_prepare (void *cls, | |||
794 | { | 791 | { |
795 | struct IterContext *ic = cls; | 792 | struct IterContext *ic = cls; |
796 | struct Plugin *plugin = nc->plugin; | 793 | struct Plugin *plugin = nc->plugin; |
797 | struct GNUNET_TIME_Absolute now; | 794 | int ret; |
798 | 795 | ||
799 | if (nc == NULL) | 796 | if (nc == NULL) |
800 | { | 797 | { |
@@ -802,7 +799,6 @@ iter_next_prepare (void *cls, | |||
802 | sqlite3_finalize (ic->stmt_2); | 799 | sqlite3_finalize (ic->stmt_2); |
803 | return GNUNET_SYSERR; | 800 | return GNUNET_SYSERR; |
804 | } | 801 | } |
805 | now = GNUNET_TIME_absolute_get (); | ||
806 | if (ic->is_prio) | 802 | if (ic->is_prio) |
807 | { | 803 | { |
808 | sqlite3_bind_int (ic->stmt_1, 1, nc->lastPriority); | 804 | sqlite3_bind_int (ic->stmt_1, 1, nc->lastPriority); |
@@ -817,13 +813,7 @@ iter_next_prepare (void *cls, | |||
817 | &ic->key, | 813 | &ic->key, |
818 | sizeof (GNUNET_HashCode), | 814 | sizeof (GNUNET_HashCode), |
819 | SQLITE_TRANSIENT); | 815 | SQLITE_TRANSIENT); |
820 | datum_1 = NULL; | 816 | if (SQLITE_ROW == (ret = sqlite3_step (ic->stmt_1))) |
821 | datum_2 = last_datum_2; | ||
822 | last_datum_2 = NULL; | ||
823 | |||
824 | if ( (SQLITE_ROW == (ret = sqlite3_step (stmt_1))) && | ||
825 | ( (GNUNET_NO == ic->is_migr) || | ||
826 | (sqlite3_column_int64 (stmt_1, 4) >= now.value) ) ) | ||
827 | { | 817 | { |
828 | nc->stmt = ic->stmt_1; | 818 | nc->stmt = ic->stmt_1; |
829 | return GNUNET_OK; | 819 | return GNUNET_OK; |
@@ -836,117 +826,30 @@ iter_next_prepare (void *cls, | |||
836 | "sqlite3_step"); | 826 | "sqlite3_step"); |
837 | return GNUNET_SYSERR; | 827 | return GNUNET_SYSERR; |
838 | } | 828 | } |
839 | if (SQLITE_OK != sqlite3_reset (stmt_1)) | 829 | if (SQLITE_OK != sqlite3_reset (ic->stmt_1)) |
840 | LOG_SQLITE (handle, NULL, | 830 | LOG_SQLITE (plugin, NULL, |
841 | GNUNET_ERROR_TYPE_ERROR | | 831 | GNUNET_ERROR_TYPE_ERROR | |
842 | GNUNET_ERROR_TYPE_BULK, | 832 | GNUNET_ERROR_TYPE_BULK, |
843 | "sqlite3_reset"); | 833 | "sqlite3_reset"); |
844 | 834 | if (SQLITE_ROW == (ret = sqlite3_step (ic->stmt_2))) | |
845 | if (datum_2 == NULL) | ||
846 | { | ||
847 | if ( (SQLITE_ROW == (ret = sqlite3_step (ic->stmt_2))) && | ||
848 | ( (GNUNET_NO == ic->is_migr) || | ||
849 | sqlite3_column_int64 (stmt_2, 4) >= now.value) ) | ||
850 | { | ||
851 | nc->stmt = ic->stmt_2; | ||
852 | return GNUNET_OK; | ||
853 | } | ||
854 | if (ret != SQLITE_DONE) | ||
855 | { | ||
856 | LOG_SQLITE (plugin, NULL, | ||
857 | GNUNET_ERROR_TYPE_ERROR | | ||
858 | GNUNET_ERROR_TYPE_BULK, | ||
859 | "sqlite3_step"); | ||
860 | return GNUNET_SYSERR; | ||
861 | } | ||
862 | if (SQLITE_OK != sqlite3_reset (stmt_2)) | ||
863 | LOG_SQLITE (plugin, NULL, | ||
864 | GNUNET_ERROR_TYPE_ERROR | | ||
865 | GNUNET_ERROR_TYPE_BULK, | ||
866 | "sqlite3_reset"); | ||
867 | } | ||
868 | datum = NULL; | ||
869 | if (datum_1 == NULL) | ||
870 | { | ||
871 | datum = datum_2; | ||
872 | rowid = rowid_2; | ||
873 | key = key_2; | ||
874 | } | ||
875 | else if (datum_2 == NULL) | ||
876 | { | 835 | { |
877 | datum = datum_1; | 836 | nc->stmt = ic->stmt_2; |
878 | rowid = rowid_1; | 837 | return GNUNET_OK; |
879 | key = key_1; | ||
880 | } | ||
881 | else | ||
882 | { | ||
883 | /* have to pick between 1 and 2 */ | ||
884 | if (is_prio) | ||
885 | { | ||
886 | if ((ntohl (datum_1->priority) < ntohl (datum_2->priority)) == | ||
887 | is_asc) | ||
888 | { | ||
889 | datum = datum_1; | ||
890 | rowid = rowid_1; | ||
891 | key = key_1; | ||
892 | last_datum_2 = datum_2; | ||
893 | } | ||
894 | else | ||
895 | { | ||
896 | datum = datum_2; | ||
897 | rowid = rowid_2; | ||
898 | key = key_2; | ||
899 | GNUNET_free (datum_1); | ||
900 | } | ||
901 | } | ||
902 | else | ||
903 | { | ||
904 | if ((GNUNET_ntohll (datum_1->expiration_time) < | ||
905 | GNUNET_ntohll (datum_2->expiration_time)) == is_asc) | ||
906 | { | ||
907 | datum = datum_1; | ||
908 | rowid = rowid_1; | ||
909 | key = key_1; | ||
910 | last_datum_2 = datum_2; | ||
911 | } | ||
912 | else | ||
913 | { | ||
914 | datum = datum_2; | ||
915 | rowid = rowid_2; | ||
916 | key = key_2; | ||
917 | GNUNET_free (datum_1); | ||
918 | } | ||
919 | } | ||
920 | } | 838 | } |
921 | if (datum == NULL) | 839 | if (ret != SQLITE_DONE) |
922 | break; | ||
923 | #if 0 | ||
924 | printf ("FOUND %4u prio %4u exp %20llu old: %4u, %20llu\n", | ||
925 | (ntohl (datum->size) - sizeof (GNUNET_DatastoreValue)), | ||
926 | ntohl (datum->priority), | ||
927 | GNUNET_ntohll (datum->expiration_time), lastPrio, lastExp); | ||
928 | #endif | ||
929 | if (((GNUNET_NO == limit_nonanonymous) || | ||
930 | (ntohl (datum->anonymity_level) == 0)) && | ||
931 | ((type == GNUNET_ECRS_BLOCKTYPE_ANY) || | ||
932 | (type == ntohl (datum->type)))) | ||
933 | { | 840 | { |
934 | count++; | 841 | LOG_SQLITE (plugin, NULL, |
935 | if (iter != NULL) | 842 | GNUNET_ERROR_TYPE_ERROR | |
936 | { | 843 | GNUNET_ERROR_TYPE_BULK, |
937 | ret = iter (&key, datum, closure, rowid); | 844 | "sqlite3_step"); |
938 | if (ret == GNUNET_SYSERR) | 845 | return GNUNET_SYSERR; |
939 | { | ||
940 | GNUNET_free (datum); | ||
941 | break; | ||
942 | } | ||
943 | if (ret == GNUNET_NO) | ||
944 | { | ||
945 | payload -= getContentDatastoreSize (datum); | ||
946 | delete_by_rowid (handle, rowid); | ||
947 | } | ||
948 | } | ||
949 | } | 846 | } |
847 | if (SQLITE_OK != sqlite3_reset (ic->stmt_2)) | ||
848 | LOG_SQLITE (plugin, NULL, | ||
849 | GNUNET_ERROR_TYPE_ERROR | | ||
850 | GNUNET_ERROR_TYPE_BULK, | ||
851 | "sqlite3_reset"); | ||
852 | return GNUNET_NO; | ||
950 | } | 853 | } |
951 | 854 | ||
952 | 855 | ||
@@ -1070,8 +973,13 @@ sqlite_plugin_iter_zero_anonymity (void *cls, | |||
1070 | PluginIterator iter, | 973 | PluginIterator iter, |
1071 | void *iter_cls) | 974 | void *iter_cls) |
1072 | { | 975 | { |
1073 | static struct GNUNET_TIME_Absolute zero; | 976 | basic_iter (cls, |
1074 | iter (iter_cls, NULL, NULL, 0, NULL, 0, 0, 0, zero, 0); | 977 | type, |
978 | GNUNET_NO, GNUNET_YES, | ||
979 | GNUNET_NO, GNUNET_YES, | ||
980 | SELECT_IT_NON_ANONYMOUS_1, | ||
981 | SELECT_IT_NON_ANONYMOUS_2, | ||
982 | iter, iter_cls); | ||
1075 | } | 983 | } |
1076 | 984 | ||
1077 | 985 | ||
@@ -1092,10 +1000,24 @@ sqlite_plugin_iter_ascending_expiration (void *cls, | |||
1092 | PluginIterator iter, | 1000 | PluginIterator iter, |
1093 | void *iter_cls) | 1001 | void *iter_cls) |
1094 | { | 1002 | { |
1095 | static struct GNUNET_TIME_Absolute zero; | 1003 | struct GNUNET_TIME_Absolute now; |
1096 | iter (iter_cls, NULL, NULL, 0, NULL, 0, 0, 0, zero, 0); | 1004 | char *q1; |
1097 | } | 1005 | char *q2; |
1098 | 1006 | ||
1007 | now = GNUNET_TIME_absolute_get (); | ||
1008 | GNUNET_asprintf (&q1, SELECT_IT_EXPIRATION_TIME_1, | ||
1009 | now.value); | ||
1010 | GNUNET_asprintf (&q2, SELECT_IT_EXPIRATION_TIME_2, | ||
1011 | now.value); | ||
1012 | basic_iter (cls, | ||
1013 | type, | ||
1014 | GNUNET_YES, GNUNET_NO, | ||
1015 | GNUNET_NO, GNUNET_NO, | ||
1016 | q1, q2, | ||
1017 | iter, iter_cls); | ||
1018 | GNUNET_free (q1); | ||
1019 | GNUNET_free (q2); | ||
1020 | } | ||
1099 | 1021 | ||
1100 | 1022 | ||
1101 | /** | 1023 | /** |
@@ -1114,8 +1036,20 @@ sqlite_plugin_iter_migration_order (void *cls, | |||
1114 | PluginIterator iter, | 1036 | PluginIterator iter, |
1115 | void *iter_cls) | 1037 | void *iter_cls) |
1116 | { | 1038 | { |
1117 | static struct GNUNET_TIME_Absolute zero; | 1039 | struct GNUNET_TIME_Absolute now; |
1118 | iter (iter_cls, NULL, NULL, 0, NULL, 0, 0, 0, zero, 0); | 1040 | char *q; |
1041 | |||
1042 | now = GNUNET_TIME_absolute_get (); | ||
1043 | GNUNET_asprintf (&q, SELECT_IT_MIGRATION_ORDER_2, | ||
1044 | now.value); | ||
1045 | basic_iter (cls, | ||
1046 | type, | ||
1047 | GNUNET_NO, GNUNET_NO, | ||
1048 | GNUNET_YES, GNUNET_NO, | ||
1049 | SELECT_IT_MIGRATION_ORDER_1, | ||
1050 | q, | ||
1051 | iter, iter_cls); | ||
1052 | GNUNET_free (q); | ||
1119 | } | 1053 | } |
1120 | 1054 | ||
1121 | 1055 | ||
diff --git a/src/datastore/test_datastore_api.c b/src/datastore/test_datastore_api.c index 0b08cfe8f..b4da05fda 100644 --- a/src/datastore/test_datastore_api.c +++ b/src/datastore/test_datastore_api.c | |||
@@ -37,6 +37,8 @@ static struct GNUNET_DATASTORE_Handle *datastore; | |||
37 | 37 | ||
38 | static struct GNUNET_TIME_Absolute now; | 38 | static struct GNUNET_TIME_Absolute now; |
39 | 39 | ||
40 | static int ok; | ||
41 | |||
40 | 42 | ||
41 | static size_t | 43 | static size_t |
42 | get_size (int i) | 44 | get_size (int i) |
@@ -84,13 +86,47 @@ get_expiration (int i) | |||
84 | return av; | 86 | return av; |
85 | } | 87 | } |
86 | 88 | ||
89 | enum RunPhase | ||
90 | { | ||
91 | RP_DONE = 0, | ||
92 | RP_PUT, | ||
93 | RP_GET, | ||
94 | RP_DEL, | ||
95 | RP_DELVALIDATE | ||
96 | }; | ||
97 | |||
98 | |||
99 | struct CpsRunContext | ||
100 | { | ||
101 | GNUNET_HashCode key; | ||
102 | int i; | ||
103 | int *iptr; | ||
104 | struct GNUNET_SCHEDULER_Handle *sched; | ||
105 | struct GNUNET_CONFIGURATION_Handle *cfg; | ||
106 | enum RunPhase phase; | ||
107 | }; | ||
108 | |||
109 | |||
110 | static void | ||
111 | run_continuation (void *cls, | ||
112 | const struct GNUNET_SCHEDULER_TaskContext *tc); | ||
113 | |||
87 | 114 | ||
88 | static void | 115 | static void |
89 | check_success (void *cls, | 116 | check_success (void *cls, |
90 | int success, | 117 | int success, |
91 | const char *msg) | 118 | const char *msg) |
92 | { | 119 | { |
120 | struct CpsRunContext *crc = cls; | ||
121 | if (GNUNET_OK != success) | ||
122 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
123 | "%s\n", msg); | ||
93 | GNUNET_assert (GNUNET_OK == success); | 124 | GNUNET_assert (GNUNET_OK == success); |
125 | GNUNET_SCHEDULER_add_continuation (crc->sched, | ||
126 | GNUNET_NO, | ||
127 | &run_continuation, | ||
128 | crc, | ||
129 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); | ||
94 | } | 130 | } |
95 | 131 | ||
96 | 132 | ||
@@ -99,8 +135,14 @@ check_failure (void *cls, | |||
99 | int success, | 135 | int success, |
100 | const char *msg) | 136 | const char *msg) |
101 | { | 137 | { |
138 | struct CpsRunContext *crc = cls; | ||
102 | GNUNET_assert (GNUNET_OK != success); | 139 | GNUNET_assert (GNUNET_OK != success); |
103 | GNUNET_assert (NULL != msg); | 140 | GNUNET_assert (NULL != msg); |
141 | GNUNET_SCHEDULER_add_continuation (crc->sched, | ||
142 | GNUNET_NO, | ||
143 | &run_continuation, | ||
144 | crc, | ||
145 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); | ||
104 | } | 146 | } |
105 | 147 | ||
106 | 148 | ||
@@ -115,18 +157,23 @@ check_value (void *cls, | |||
115 | struct GNUNET_TIME_Absolute | 157 | struct GNUNET_TIME_Absolute |
116 | expiration, uint64_t uid) | 158 | expiration, uint64_t uid) |
117 | { | 159 | { |
118 | int *iptr = cls; | 160 | struct CpsRunContext *crc = cls; |
119 | int i; | 161 | int i; |
120 | 162 | ||
121 | if (key == NULL) | 163 | if (key == NULL) |
122 | return; | 164 | return; |
123 | i = *iptr; | 165 | i = crc->i; |
124 | GNUNET_assert (size == get_size (i)); | 166 | GNUNET_assert (size == get_size (i)); |
125 | GNUNET_assert (0 == memcmp (data, get_data(i), size)); | 167 | GNUNET_assert (0 == memcmp (data, get_data(i), size)); |
126 | GNUNET_assert (type == get_type (i)); | 168 | GNUNET_assert (type == get_type (i)); |
127 | GNUNET_assert (priority == get_priority (i)); | 169 | GNUNET_assert (priority == get_priority (i)); |
128 | GNUNET_assert (anonymity == get_anonymity(i)); | 170 | GNUNET_assert (anonymity == get_anonymity(i)); |
129 | GNUNET_assert (expiration.value == get_expiration(i).value); | 171 | GNUNET_assert (expiration.value == get_expiration(i).value); |
172 | GNUNET_SCHEDULER_add_continuation (crc->sched, | ||
173 | GNUNET_NO, | ||
174 | &run_continuation, | ||
175 | crc, | ||
176 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); | ||
130 | } | 177 | } |
131 | 178 | ||
132 | 179 | ||
@@ -141,6 +188,7 @@ delete_value (void *cls, | |||
141 | struct GNUNET_TIME_Absolute | 188 | struct GNUNET_TIME_Absolute |
142 | expiration, uint64_t uid) | 189 | expiration, uint64_t uid) |
143 | { | 190 | { |
191 | struct CpsRunContext *crc = cls; | ||
144 | if (key == NULL) | 192 | if (key == NULL) |
145 | return; | 193 | return; |
146 | GNUNET_DATASTORE_remove (datastore, | 194 | GNUNET_DATASTORE_remove (datastore, |
@@ -156,6 +204,11 @@ delete_value (void *cls, | |||
156 | data, | 204 | data, |
157 | &check_failure, | 205 | &check_failure, |
158 | NULL); | 206 | NULL); |
207 | GNUNET_SCHEDULER_add_continuation (crc->sched, | ||
208 | GNUNET_NO, | ||
209 | &run_continuation, | ||
210 | crc, | ||
211 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); | ||
159 | } | 212 | } |
160 | 213 | ||
161 | 214 | ||
@@ -171,78 +224,112 @@ check_nothing (void *cls, | |||
171 | struct GNUNET_TIME_Absolute | 224 | struct GNUNET_TIME_Absolute |
172 | expiration, uint64_t uid) | 225 | expiration, uint64_t uid) |
173 | { | 226 | { |
227 | struct CpsRunContext *crc = cls; | ||
174 | GNUNET_assert (key == NULL); | 228 | GNUNET_assert (key == NULL); |
229 | GNUNET_SCHEDULER_add_continuation (crc->sched, | ||
230 | GNUNET_NO, | ||
231 | &run_continuation, | ||
232 | crc, | ||
233 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); | ||
175 | } | 234 | } |
176 | 235 | ||
177 | 236 | ||
178 | |||
179 | static void | 237 | static void |
180 | run (void *cls, | 238 | run_continuation (void *cls, |
181 | struct GNUNET_SCHEDULER_Handle *sched, | 239 | const struct GNUNET_SCHEDULER_TaskContext *tc) |
182 | char *const *args, | ||
183 | const char *cfgfile, struct GNUNET_CONFIGURATION_Handle *cfg) | ||
184 | { | 240 | { |
185 | GNUNET_HashCode key; | 241 | struct CpsRunContext *crc = cls; |
186 | int i; | 242 | ok = (int) crc->phase; |
187 | int *iptr; | 243 | switch (crc->phase) |
188 | |||
189 | datastore = GNUNET_DATASTORE_connect (cfg, sched); | ||
190 | now.value = 1000000; | ||
191 | for (i = 0; i < 256; i++) | ||
192 | { | 244 | { |
193 | memset (&key, 256 - i, sizeof (GNUNET_HashCode)); | 245 | case RP_PUT: |
246 | memset (&crc->key, 256 - crc->i, sizeof (GNUNET_HashCode)); | ||
194 | GNUNET_DATASTORE_put (datastore, | 247 | GNUNET_DATASTORE_put (datastore, |
195 | 0, | 248 | 0, |
196 | &key, | 249 | &crc->key, |
197 | get_size (i), | 250 | get_size (crc->i), |
198 | get_data (i), | 251 | get_data (crc->i), |
199 | get_type (i), | 252 | get_type (crc->i), |
200 | get_priority (i), | 253 | get_priority (crc->i), |
201 | get_anonymity (i), | 254 | get_anonymity (crc->i), |
202 | get_expiration (i), | 255 | get_expiration (crc->i), |
203 | &check_success, | 256 | &check_success, |
204 | NULL); | 257 | crc); |
205 | } | 258 | crc->i++; |
206 | for (i = 255; i >= 0; i--) | 259 | if (crc->i == 256) |
207 | { | 260 | crc->phase = RP_GET; |
208 | memset (&key, 256 - i, sizeof (GNUNET_HashCode)); | 261 | break; |
209 | iptr = GNUNET_malloc(sizeof(int)); | 262 | case RP_GET: |
210 | *iptr = i; | 263 | crc->i--; |
264 | memset (&crc->key, 256 - crc->i, sizeof (GNUNET_HashCode)); | ||
211 | GNUNET_DATASTORE_get (datastore, | 265 | GNUNET_DATASTORE_get (datastore, |
212 | &key, | 266 | &crc->key, |
213 | get_type (i), | 267 | get_type (crc->i), |
214 | &check_value, | 268 | &check_value, |
215 | iptr); | 269 | crc); |
216 | } | 270 | if (crc->i == 0) |
217 | for (i = 255; i >= 0; i--) | 271 | { |
218 | { | 272 | crc->phase = RP_DEL; |
219 | memset (&key, 256 - i, sizeof (GNUNET_HashCode)); | 273 | crc->i = 256; |
220 | iptr = GNUNET_malloc(sizeof(int)); | 274 | } |
221 | *iptr = i; | 275 | break; |
276 | case RP_DEL: | ||
277 | crc->i--; | ||
278 | memset (&crc->key, 256 - crc->i, sizeof (GNUNET_HashCode)); | ||
222 | GNUNET_DATASTORE_get (datastore, | 279 | GNUNET_DATASTORE_get (datastore, |
223 | &key, | 280 | &crc->key, |
224 | get_type (i), | 281 | get_type (crc->i), |
225 | &delete_value, | 282 | &delete_value, |
226 | iptr); | 283 | crc); |
227 | } | 284 | if (crc->i == 0) |
228 | for (i = 255; i >= 0; i--) | 285 | { |
229 | { | 286 | crc->phase = RP_DELVALIDATE; |
230 | memset (&key, 256 - i, sizeof (GNUNET_HashCode)); | 287 | crc->i = 256; |
231 | iptr = GNUNET_malloc(sizeof(int)); | 288 | } |
232 | *iptr = i; | 289 | break; |
290 | case RP_DELVALIDATE: | ||
291 | crc->i--; | ||
292 | memset (&crc->key, 256 - crc->i, sizeof (GNUNET_HashCode)); | ||
233 | GNUNET_DATASTORE_get (datastore, | 293 | GNUNET_DATASTORE_get (datastore, |
234 | &key, | 294 | &crc->key, |
235 | get_type (i), | 295 | get_type (crc->i), |
236 | &check_nothing, | 296 | &check_nothing, |
237 | iptr); | 297 | crc); |
238 | } | 298 | if (crc->i == 0) |
299 | { | ||
300 | crc->phase = RP_DONE; | ||
301 | } | ||
302 | break; | ||
239 | /* check reservations */ | 303 | /* check reservations */ |
240 | |||
241 | /* check update */ | 304 | /* check update */ |
242 | |||
243 | /* test multiple results */ | 305 | /* test multiple results */ |
306 | case RP_DONE: | ||
307 | GNUNET_DATASTORE_disconnect (datastore, GNUNET_YES); | ||
308 | ok = 0; | ||
309 | } | ||
310 | } | ||
311 | |||
312 | |||
313 | static void | ||
314 | run (void *cls, | ||
315 | struct GNUNET_SCHEDULER_Handle *sched, | ||
316 | char *const *args, | ||
317 | const char *cfgfile, struct GNUNET_CONFIGURATION_Handle *cfg) | ||
318 | { | ||
319 | struct CpsRunContext *crc; | ||
320 | |||
321 | crc = GNUNET_malloc(sizeof(struct CpsRunContext)); | ||
322 | crc->sched = sched; | ||
323 | crc->cfg = cfg; | ||
324 | crc->phase = RP_PUT; | ||
325 | now.value = 1000000; | ||
326 | datastore = GNUNET_DATASTORE_connect (cfg, sched); | ||
327 | GNUNET_SCHEDULER_add_continuation (crc->sched, | ||
328 | GNUNET_NO, | ||
329 | &run_continuation, | ||
330 | crc, | ||
331 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); | ||
244 | 332 | ||
245 | GNUNET_DATASTORE_disconnect (datastore, GNUNET_YES); | ||
246 | } | 333 | } |
247 | 334 | ||
248 | 335 | ||
@@ -250,7 +337,6 @@ run (void *cls, | |||
250 | static int | 337 | static int |
251 | check () | 338 | check () |
252 | { | 339 | { |
253 | int ok = 1 + 2 + 4 + 8; | ||
254 | pid_t pid; | 340 | pid_t pid; |
255 | char *const argv[] = { "test-datastore-api", | 341 | char *const argv[] = { "test-datastore-api", |
256 | "-c", | 342 | "-c", |
@@ -272,7 +358,7 @@ check () | |||
272 | sleep (1); | 358 | sleep (1); |
273 | GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, | 359 | GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, |
274 | argv, "test-datastore-api", "nohelp", | 360 | argv, "test-datastore-api", "nohelp", |
275 | options, &run, &ok); | 361 | options, &run, NULL); |
276 | if (0 != PLIBC_KILL (pid, SIGTERM)) | 362 | if (0 != PLIBC_KILL (pid, SIGTERM)) |
277 | { | 363 | { |
278 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); | 364 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); |
diff --git a/src/include/gnunet_datastore_service.h b/src/include/gnunet_datastore_service.h index 10b2157d3..2dcc153e6 100644 --- a/src/include/gnunet_datastore_service.h +++ b/src/include/gnunet_datastore_service.h | |||
@@ -122,6 +122,7 @@ GNUNET_DATASTORE_reserve (struct GNUNET_DATASTORE_Handle *h, | |||
122 | * @param priority priority of the content | 122 | * @param priority priority of the content |
123 | * @param anonymity anonymity-level for the content | 123 | * @param anonymity anonymity-level for the content |
124 | * @param expiration expiration time for the content | 124 | * @param expiration expiration time for the content |
125 | * @param timeout timeout for the operation | ||
125 | * @param cont continuation to call when done | 126 | * @param cont continuation to call when done |
126 | * @param cont_cls closure for cont | 127 | * @param cont_cls closure for cont |
127 | */ | 128 | */ |
@@ -135,6 +136,7 @@ GNUNET_DATASTORE_put (struct GNUNET_DATASTORE_Handle *h, | |||
135 | uint32_t priority, | 136 | uint32_t priority, |
136 | uint32_t anonymity, | 137 | uint32_t anonymity, |
137 | struct GNUNET_TIME_Absolute expiration, | 138 | struct GNUNET_TIME_Absolute expiration, |
139 | struct GNUNET_TIME_Relative timeout, | ||
138 | GNUNET_DATASTORE_ContinuationWithStatus cont, | 140 | GNUNET_DATASTORE_ContinuationWithStatus cont, |
139 | void *cont_cls); | 141 | void *cont_cls); |
140 | 142 | ||
diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c index 792f777ed..629e355ad 100644 --- a/src/transport/plugin_transport_tcp.c +++ b/src/transport/plugin_transport_tcp.c | |||
@@ -1683,7 +1683,7 @@ libgnunet_plugin_transport_tcp_init (void *cls) | |||
1683 | unsigned long long aport; | 1683 | unsigned long long aport; |
1684 | unsigned long long bport; | 1684 | unsigned long long bport; |
1685 | 1685 | ||
1686 | service = GNUNET_SERVICE_start ("tcp", env->sched, env->cfg); | 1686 | service = GNUNET_SERVICE_start ("transport-tcp", env->sched, env->cfg); |
1687 | if (service == NULL) | 1687 | if (service == NULL) |
1688 | { | 1688 | { |
1689 | GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING, | 1689 | GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING, |
@@ -1696,13 +1696,13 @@ libgnunet_plugin_transport_tcp_init (void *cls) | |||
1696 | aport = 0; | 1696 | aport = 0; |
1697 | if ((GNUNET_OK != | 1697 | if ((GNUNET_OK != |
1698 | GNUNET_CONFIGURATION_get_value_number (env->cfg, | 1698 | GNUNET_CONFIGURATION_get_value_number (env->cfg, |
1699 | "tcp", | 1699 | "transport-tcp", |
1700 | "PORT", | 1700 | "PORT", |
1701 | &bport)) || | 1701 | &bport)) || |
1702 | (bport > 65535) || | 1702 | (bport > 65535) || |
1703 | ((GNUNET_OK == | 1703 | ((GNUNET_OK == |
1704 | GNUNET_CONFIGURATION_get_value_number (env->cfg, | 1704 | GNUNET_CONFIGURATION_get_value_number (env->cfg, |
1705 | "tcp", | 1705 | "transport-tcp", |
1706 | "ADVERTISED-PORT", | 1706 | "ADVERTISED-PORT", |
1707 | &aport)) && (aport > 65535))) | 1707 | &aport)) && (aport > 65535))) |
1708 | { | 1708 | { |
@@ -1710,7 +1710,7 @@ libgnunet_plugin_transport_tcp_init (void *cls) | |||
1710 | "tcp", | 1710 | "tcp", |
1711 | _ | 1711 | _ |
1712 | ("Require valid port number for service `%s' in configuration!\n"), | 1712 | ("Require valid port number for service `%s' in configuration!\n"), |
1713 | "tcp"); | 1713 | "transport-tcp"); |
1714 | GNUNET_SERVICE_stop (service); | 1714 | GNUNET_SERVICE_stop (service); |
1715 | return NULL; | 1715 | return NULL; |
1716 | } | 1716 | } |
diff --git a/src/transport/test_transport_api_data.conf b/src/transport/test_transport_api_data.conf index 0fa611350..518f0d09d 100644 --- a/src/transport/test_transport_api_data.conf +++ b/src/transport/test_transport_api_data.conf | |||
@@ -14,7 +14,7 @@ PORT = 2366 | |||
14 | [statistics] | 14 | [statistics] |
15 | PORT = 2367 | 15 | PORT = 2367 |
16 | 16 | ||
17 | [tcp] | 17 | [transport-tcp] |
18 | PORT = 2368 | 18 | PORT = 2368 |
19 | 19 | ||
20 | [peerinfo] | 20 | [peerinfo] |
diff --git a/src/transport/test_transport_api_peer1.conf b/src/transport/test_transport_api_peer1.conf index dcc0ab4cf..46d7ceec9 100644 --- a/src/transport/test_transport_api_peer1.conf +++ b/src/transport/test_transport_api_peer1.conf | |||
@@ -15,7 +15,7 @@ PORT = 12366 | |||
15 | [statistics] | 15 | [statistics] |
16 | PORT = 12367 | 16 | PORT = 12367 |
17 | 17 | ||
18 | [tcp] | 18 | [transport-tcp] |
19 | PORT = 12368 | 19 | PORT = 12368 |
20 | 20 | ||
21 | [peerinfo] | 21 | [peerinfo] |
diff --git a/src/transport/test_transport_api_peer2.conf b/src/transport/test_transport_api_peer2.conf index 8567c6ac8..f980fbe1b 100644 --- a/src/transport/test_transport_api_peer2.conf +++ b/src/transport/test_transport_api_peer2.conf | |||
@@ -15,7 +15,7 @@ PORT = 22366 | |||
15 | [statistics] | 15 | [statistics] |
16 | PORT = 22367 | 16 | PORT = 22367 |
17 | 17 | ||
18 | [tcp] | 18 | [transport-tcp] |
19 | PORT = 22368 | 19 | PORT = 22368 |
20 | 20 | ||
21 | [peerinfo] | 21 | [peerinfo] |
diff --git a/src/util/disk.c b/src/util/disk.c index df6e5df8a..a7e4a0865 100644 --- a/src/util/disk.c +++ b/src/util/disk.c | |||
@@ -981,16 +981,19 @@ GNUNET_DISK_file_open (const char *fn, int flags, ...) | |||
981 | char *expfn; | 981 | char *expfn; |
982 | struct GNUNET_IO_Handle *ret; | 982 | struct GNUNET_IO_Handle *ret; |
983 | #ifdef MINGW | 983 | #ifdef MINGW |
984 | DWORD access, disp; | 984 | DWORD access; |
985 | DWORD disp; | ||
985 | HANDLE h; | 986 | HANDLE h; |
986 | #else | 987 | #else |
987 | int oflags, mode; | 988 | int oflags; |
989 | int mode; | ||
988 | int fd; | 990 | int fd; |
989 | #endif | 991 | #endif |
990 | 992 | ||
991 | expfn = GNUNET_STRINGS_filename_expand (fn); | 993 | expfn = GNUNET_STRINGS_filename_expand (fn); |
992 | 994 | ||
993 | #ifndef MINGW | 995 | #ifndef MINGW |
996 | mode = 0; | ||
994 | oflags = 0; | 997 | oflags = 0; |
995 | if (GNUNET_DISK_OPEN_READWRITE == (flags & GNUNET_DISK_OPEN_READWRITE)) | 998 | if (GNUNET_DISK_OPEN_READWRITE == (flags & GNUNET_DISK_OPEN_READWRITE)) |
996 | oflags = O_RDWR; /* note: O_RDWR is NOT always O_RDONLY | O_WRONLY */ | 999 | oflags = O_RDWR; /* note: O_RDWR is NOT always O_RDONLY | O_WRONLY */ |
@@ -1020,7 +1023,6 @@ GNUNET_DISK_file_open (const char *fn, int flags, ...) | |||
1020 | perm = va_arg (arg, int); | 1023 | perm = va_arg (arg, int); |
1021 | va_end (arg); | 1024 | va_end (arg); |
1022 | 1025 | ||
1023 | mode = 0; | ||
1024 | if (perm & GNUNET_DISK_PERM_USER_READ) | 1026 | if (perm & GNUNET_DISK_PERM_USER_READ) |
1025 | mode |= S_IRUSR; | 1027 | mode |= S_IRUSR; |
1026 | if (perm & GNUNET_DISK_PERM_USER_WRITE) | 1028 | if (perm & GNUNET_DISK_PERM_USER_WRITE) |