aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2016-07-13 10:02:09 +0000
committerChristian Grothoff <christian@grothoff.org>2016-07-13 10:02:09 +0000
commitc99ee078ba2c713839aad1043d846e2a4a61d501 (patch)
treed2d25af8a280e54aa4170a0c0dbcc9672d10c8a8 /src
parent40bcae34248944ddb77b7939a69ddde62d682277 (diff)
downloadgnunet-c99ee078ba2c713839aad1043d846e2a4a61d501.tar.gz
gnunet-c99ee078ba2c713839aad1043d846e2a4a61d501.zip
-notes on issues
Diffstat (limited to 'src')
-rw-r--r--src/psycstore/plugin_psycstore_mysql.c215
1 files changed, 119 insertions, 96 deletions
diff --git a/src/psycstore/plugin_psycstore_mysql.c b/src/psycstore/plugin_psycstore_mysql.c
index b1d36a160..80a560d0f 100644
--- a/src/psycstore/plugin_psycstore_mysql.c
+++ b/src/psycstore/plugin_psycstore_mysql.c
@@ -244,7 +244,7 @@ mysql_trace (void *cls, const char *sql)
244 */ 244 */
245static int 245static int
246mysql_prepare (struct GNUNET_MYSQL_Context *mc, 246mysql_prepare (struct GNUNET_MYSQL_Context *mc,
247 const char *sql, 247 const char *sql,
248 struct GNUNET_MYSQL_StatementHandle *stmt) 248 struct GNUNET_MYSQL_StatementHandle *stmt)
249{ 249{
250 stmt = GNUNET_MYSQL_statement_prepare (mc, 250 stmt = GNUNET_MYSQL_statement_prepare (mc,
@@ -326,9 +326,9 @@ database_setup (struct Plugin *plugin)
326 { 326 {
327 LOG(GNUNET_ERROR_TYPE_ERROR, 327 LOG(GNUNET_ERROR_TYPE_ERROR,
328 _("Unable to initialize Mysql.\n")); 328 _("Unable to initialize Mysql.\n"));
329 return GNUNET_SYSERR; 329 return GNUNET_SYSERR;
330 } 330 }
331 331
332/* 332/*
333#if DEBUG_PSYCSTORE 333#if DEBUG_PSYCSTORE
334 sqlite3_trace (plugin->dbh, &sql_trace, NULL); 334 sqlite3_trace (plugin->dbh, &sql_trace, NULL);
@@ -418,27 +418,27 @@ database_setup (struct Plugin *plugin)
418 ");"); 418 ");");
419 419
420 /* Prepare statements */ 420 /* Prepare statements */
421 mysql_prepare (plugin->mc, 421 mysql_prepare (plugin->mc,
422 "BEGIN", 422 "BEGIN",
423 plugin->transaction_begin); 423 plugin->transaction_begin);
424 424
425 mysql_prepare (plugin->mc, 425 mysql_prepare (plugin->mc,
426 "COMMIT", 426 "COMMIT",
427 plugin->transaction_commit); 427 plugin->transaction_commit);
428 428
429 mysql_prepare (plugin->mc, 429 mysql_prepare (plugin->mc,
430 "ROLLBACK;", 430 "ROLLBACK;",
431 plugin->transaction_rollback); 431 plugin->transaction_rollback);
432 432
433 mysql_prepare (plugin->mc, 433 mysql_prepare (plugin->mc,
434 "INSERT OR IGNORE INTO channels (pub_key) VALUES (?);", 434 "INSERT OR IGNORE INTO channels (pub_key) VALUES (?);",
435 plugin->insert_channel_key); 435 plugin->insert_channel_key);
436 436
437 mysql_prepare (plugin->mc, 437 mysql_prepare (plugin->mc,
438 "INSERT OR IGNORE INTO slaves (pub_key) VALUES (?);", 438 "INSERT OR IGNORE INTO slaves (pub_key) VALUES (?);",
439 plugin->insert_slave_key); 439 plugin->insert_slave_key);
440 440
441 mysql_prepare (plugin->mc, 441 mysql_prepare (plugin->mc,
442 "INSERT INTO membership\n" 442 "INSERT INTO membership\n"
443 " (channel_id, slave_id, did_join, announced_at,\n" 443 " (channel_id, slave_id, did_join, announced_at,\n"
444 " effective_since, group_generation)\n" 444 " effective_since, group_generation)\n"
@@ -675,14 +675,14 @@ exec_channel (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *stmt,
675 params)) 675 params))
676 { 676 {
677 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 677 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
678 "mysql exec_channel", statement); 678 "mysql exec_channel", statement);
679 } 679 }
680 680
681 if (0 != mysql_stmt_reset (statement)) 681 if (0 != mysql_stmt_reset (statement))
682 { 682 {
683 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 683 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
684 "mysql_stmt_reset", statement); 684 "mysql_stmt_reset", statement);
685 return GNUNET_SYSERR; 685 return GNUNET_SYSERR;
686 } 686 }
687 687
688 return GNUNET_OK; 688 return GNUNET_OK;
@@ -717,14 +717,14 @@ transaction_begin (struct Plugin *plugin, enum Transactions transaction)
717 { 717 {
718 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 718 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
719 "mysql extract_result", statement); 719 "mysql extract_result", statement);
720 return GNUNET_SYSERR; 720 return GNUNET_SYSERR;
721 } 721 }
722 722
723 if (0 != mysql_stmt_reset (statement)) 723 if (0 != mysql_stmt_reset (statement))
724 { 724 {
725 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 725 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
726 "mysql_stmt_reset", statement); 726 "mysql_stmt_reset", statement);
727 return GNUNET_SYSERR; 727 return GNUNET_SYSERR;
728 } 728 }
729 729
730 plugin->transaction = transaction; 730 plugin->transaction = transaction;
@@ -747,7 +747,7 @@ transaction_commit (struct Plugin *plugin)
747 { 747 {
748 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 748 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
749 "mysql statement invalide", statement); 749 "mysql statement invalide", statement);
750 return GNUNET_SYSERR; 750 return GNUNET_SYSERR;
751 } 751 }
752 752
753 struct GNUNET_MY_QueryParam params[] = { 753 struct GNUNET_MY_QueryParam params[] = {
@@ -760,14 +760,14 @@ transaction_commit (struct Plugin *plugin)
760 { 760 {
761 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 761 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
762 "mysql extract_result", statement); 762 "mysql extract_result", statement);
763 return GNUNET_SYSERR; 763 return GNUNET_SYSERR;
764 } 764 }
765 765
766 if (0 != mysql_stmt_reset (statement)) 766 if (0 != mysql_stmt_reset (statement))
767 { 767 {
768 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 768 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
769 "mysql_stmt_reset", statement); 769 "mysql_stmt_reset", statement);
770 return GNUNET_SYSERR; 770 return GNUNET_SYSERR;
771 } 771 }
772 772
773 plugin->transaction = TRANSACTION_NONE; 773 plugin->transaction = TRANSACTION_NONE;
@@ -789,7 +789,7 @@ transaction_rollback (struct Plugin *plugin)
789 { 789 {
790 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 790 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
791 "mysql statement invalide", statement); 791 "mysql statement invalide", statement);
792 return GNUNET_SYSERR; 792 return GNUNET_SYSERR;
793 } 793 }
794 794
795 struct GNUNET_MY_QueryParam params[] = { 795 struct GNUNET_MY_QueryParam params[] = {
@@ -802,14 +802,14 @@ transaction_rollback (struct Plugin *plugin)
802 { 802 {
803 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 803 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
804 "mysql extract_result", statement); 804 "mysql extract_result", statement);
805 return GNUNET_SYSERR; 805 return GNUNET_SYSERR;
806 } 806 }
807 807
808 if (0 != mysql_stmt_reset (statement)) 808 if (0 != mysql_stmt_reset (statement))
809 { 809 {
810 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 810 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
811 "mysql_stmt_reset", statement); 811 "mysql_stmt_reset", statement);
812 return GNUNET_SYSERR; 812 return GNUNET_SYSERR;
813 } 813 }
814 814
815 plugin->transaction = TRANSACTION_NONE; 815 plugin->transaction = TRANSACTION_NONE;
@@ -830,7 +830,7 @@ channel_key_store (struct Plugin *plugin,
830 { 830 {
831 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 831 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
832 "mysql statement invalide", statement); 832 "mysql statement invalide", statement);
833 return GNUNET_SYSERR; 833 return GNUNET_SYSERR;
834 } 834 }
835 835
836 struct GNUNET_MY_QueryParam params[] = { 836 struct GNUNET_MY_QueryParam params[] = {
@@ -851,7 +851,7 @@ channel_key_store (struct Plugin *plugin,
851 { 851 {
852 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 852 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
853 "mysql_stmt_reset", statement); 853 "mysql_stmt_reset", statement);
854 return GNUNET_SYSERR; 854 return GNUNET_SYSERR;
855 } 855 }
856 856
857 return GNUNET_OK; 857 return GNUNET_OK;
@@ -871,7 +871,7 @@ slave_key_store (struct Plugin *plugin,
871 { 871 {
872 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 872 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
873 "mysql statement invalide", statement); 873 "mysql statement invalide", statement);
874 return GNUNET_SYSERR; 874 return GNUNET_SYSERR;
875 } 875 }
876 876
877 struct GNUNET_MY_QueryParam params[] = { 877 struct GNUNET_MY_QueryParam params[] = {
@@ -892,7 +892,7 @@ slave_key_store (struct Plugin *plugin,
892 { 892 {
893 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 893 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
894 "mysql_stmt_reset", statement); 894 "mysql_stmt_reset", statement);
895 return GNUNET_SYSERR; 895 return GNUNET_SYSERR;
896 } 896 }
897 897
898 return GNUNET_OK; 898 return GNUNET_OK;
@@ -917,7 +917,7 @@ mysql_membership_store (void *cls,
917 uint64_t group_generation) 917 uint64_t group_generation)
918{ 918{
919 struct Plugin *plugin = cls; 919 struct Plugin *plugin = cls;
920 920
921 uint32_t idid_join = (uint32_t)did_join; 921 uint32_t idid_join = (uint32_t)did_join;
922 uint64_t iannounced_at = (uint64_t)announced_at; 922 uint64_t iannounced_at = (uint64_t)announced_at;
923 uint64_t ieffective_since = (uint64_t)effective_since; 923 uint64_t ieffective_since = (uint64_t)effective_since;
@@ -926,7 +926,7 @@ mysql_membership_store (void *cls,
926 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->insert_membership; 926 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->insert_membership;
927 MYSQL_STMT *statement = NULL; 927 MYSQL_STMT *statement = NULL;
928 928
929/**** FAIL HERE ****/ 929/**** FAIL HERE ****/
930 statement = GNUNET_MYSQL_statement_get_stmt (stmt); 930 statement = GNUNET_MYSQL_statement_get_stmt (stmt);
931 931
932 GNUNET_assert (TRANSACTION_NONE == plugin->transaction); 932 GNUNET_assert (TRANSACTION_NONE == plugin->transaction);
@@ -959,14 +959,14 @@ mysql_membership_store (void *cls,
959 { 959 {
960 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 960 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
961 "mysql extract_result", statement); 961 "mysql extract_result", statement);
962 return GNUNET_SYSERR; 962 return GNUNET_SYSERR;
963 } 963 }
964 964
965 if (0 != mysql_stmt_reset (statement)) 965 if (0 != mysql_stmt_reset (statement))
966 { 966 {
967 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 967 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
968 "mysql_stmt_reset", statement); 968 "mysql_stmt_reset", statement);
969 return GNUNET_SYSERR; 969 return GNUNET_SYSERR;
970 } 970 }
971 return GNUNET_OK; 971 return GNUNET_OK;
972} 972}
@@ -989,7 +989,7 @@ membership_test (void *cls,
989 989
990 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_membership; 990 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_membership;
991 MYSQL_STMT *statement = NULL; 991 MYSQL_STMT *statement = NULL;
992 992
993 uint32_t did_join = 0; 993 uint32_t did_join = 0;
994 994
995 statement = GNUNET_MYSQL_statement_get_stmt (stmt); 995 statement = GNUNET_MYSQL_statement_get_stmt (stmt);
@@ -998,7 +998,7 @@ membership_test (void *cls,
998 { 998 {
999 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 999 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1000 "mysql statement invalide", statement); 1000 "mysql statement invalide", statement);
1001 return GNUNET_SYSERR; 1001 return GNUNET_SYSERR;
1002 } 1002 }
1003 1003
1004 int ret = GNUNET_SYSERR; 1004 int ret = GNUNET_SYSERR;
@@ -1016,7 +1016,7 @@ membership_test (void *cls,
1016 { 1016 {
1017 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1017 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1018 "mysql execute prepared", statement); 1018 "mysql execute prepared", statement);
1019 return GNUNET_SYSERR; 1019 return GNUNET_SYSERR;
1020 } 1020 }
1021 1021
1022 struct GNUNET_MY_ResultSpec results_select[] = { 1022 struct GNUNET_MY_ResultSpec results_select[] = {
@@ -1029,7 +1029,7 @@ membership_test (void *cls,
1029 { 1029 {
1030 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1030 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1031 "mysql extract_result", statement); 1031 "mysql extract_result", statement);
1032 return GNUNET_SYSERR; 1032 return GNUNET_SYSERR;
1033 } 1033 }
1034 1034
1035 if(0 != did_join) 1035 if(0 != did_join)
@@ -1045,7 +1045,7 @@ membership_test (void *cls,
1045 { 1045 {
1046 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1046 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1047 "mysql_stmt_reset", statement); 1047 "mysql_stmt_reset", statement);
1048 return GNUNET_SYSERR; 1048 return GNUNET_SYSERR;
1049 } 1049 }
1050 1050
1051 return ret; 1051 return ret;
@@ -1065,7 +1065,7 @@ fragment_store (void *cls,
1065 uint32_t psycstore_flags) 1065 uint32_t psycstore_flags)
1066{ 1066{
1067 struct Plugin *plugin = cls; 1067 struct Plugin *plugin = cls;
1068 1068
1069 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->insert_fragment; 1069 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->insert_fragment;
1070 MYSQL_STMT *statement = NULL; 1070 MYSQL_STMT *statement = NULL;
1071 1071
@@ -1113,16 +1113,16 @@ fragment_store (void *cls,
1113 { 1113 {
1114 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1114 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1115 "mysql execute prepared", statement); 1115 "mysql execute prepared", statement);
1116 return GNUNET_SYSERR; 1116 return GNUNET_SYSERR;
1117 } 1117 }
1118 1118
1119 if (0 != mysql_stmt_reset (statement)) 1119 if (0 != mysql_stmt_reset (statement))
1120 { 1120 {
1121 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1121 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1122 "mysql_stmt_reset", statement); 1122 "mysql_stmt_reset", statement);
1123 return GNUNET_SYSERR; 1123 return GNUNET_SYSERR;
1124 } 1124 }
1125 1125
1126 return GNUNET_OK; 1126 return GNUNET_OK;
1127} 1127}
1128 1128
@@ -1161,54 +1161,77 @@ message_add_flags (void *cls,
1161 { 1161 {
1162 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1162 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1163 "mysql execute prepared", statement); 1163 "mysql execute prepared", statement);
1164 return GNUNET_SYSERR; 1164 return GNUNET_SYSERR;
1165 } 1165 }
1166 1166
1167 if (0 != mysql_stmt_reset (statement)) 1167 if (0 != mysql_stmt_reset (statement))
1168 { 1168 {
1169 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1169 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1170 "mysql_stmt_reset", statement); 1170 "mysql_stmt_reset", statement);
1171 return GNUNET_SYSERR; 1171 return GNUNET_SYSERR;
1172 } 1172 }
1173 1173
1174 return ret; 1174 return ret;
1175} 1175}
1176 1176
1177
1177static int 1178static int
1178fragment_row (struct GNUNET_MYSQL_StatementHandle *stmt, GNUNET_PSYCSTORE_FragmentCallback cb, 1179fragment_row (struct GNUNET_MYSQL_StatementHandle *stmt,
1180 GNUNET_PSYCSTORE_FragmentCallback cb,
1179 void *cb_cls) 1181 void *cb_cls)
1180{ 1182{
1181 int data_size = 0 ;
1182 uint64_t data8 = 0;
1183 MYSQL_STMT * statement = NULL;
1184 statement = GNUNET_MYSQL_statement_get_stmt (stmt);
1185
1186 struct GNUNET_MULTICAST_MessageHeader *msg
1187 = GNUNET_malloc (sizeof (*msg) + data_size);
1188 1183
1184 uint64_t fragment_id;
1185 uint64_t fragment_offset;
1186 uint64_t message_id;
1187 uint64_t group_generation;
1188 struct GNUNET_MULTICAST_MessageHeader msg; // to be removed...
1189 void *buf;
1190 size_t buf_size;
1191 int ret;
1192 uint64_t flags;
1193 struct GNUNET_MULTICAST_MessageHeader *mp;
1189 struct GNUNET_MY_ResultSpec results[] = { 1194 struct GNUNET_MY_ResultSpec results[] = {
1190 GNUNET_MY_result_spec_uint32 ((uint32_t *)&msg->hop_counter), 1195 GNUNET_MY_result_spec_uint32 ((uint32_t *)&msg.hop_counter), // FIXME
1191 GNUNET_MY_result_spec_auto_from_type (&msg->signature), 1196 GNUNET_MY_result_spec_auto_from_type (&msg.signature), // FIXME
1192 GNUNET_MY_result_spec_auto_from_type (&msg->purpose), 1197 GNUNET_MY_result_spec_auto_from_type (&msg.purpose), // FIXME
1193 GNUNET_MY_result_spec_uint64 (&msg->fragment_id), 1198 GNUNET_MY_result_spec_uint64 (&fragment_id),
1194 GNUNET_MY_result_spec_uint64 (&msg->fragment_offset), 1199 GNUNET_MY_result_spec_uint64 (&fragment_offset),
1195 GNUNET_MY_result_spec_uint64 (&msg->message_id), 1200 GNUNET_MY_result_spec_uint64 (&message_id),
1196 GNUNET_MY_result_spec_uint64 (&msg->group_generation), 1201 GNUNET_MY_result_spec_uint64 (&group_generation),
1197 GNUNET_MY_result_spec_uint32 (&msg->flags), 1202 GNUNET_MY_result_spec_uint32 (&msg.flags), // FIXME
1198 GNUNET_MY_result_spec_uint64 (&data8), 1203 GNUNET_MY_result_spec_uint64 (&flags),
1199 GNUNET_MY_result_spec_auto_from_type (&msg[1]), 1204 GNUNET_MY_result_spec_variable_size (&buf,
1205 &buf_size),
1200 GNUNET_MY_result_spec_end 1206 GNUNET_MY_result_spec_end
1201 }; 1207 };
1202 1208
1203 if (GNUNET_OK != GNUNET_MY_extract_result (stmt, 1209 if (GNUNET_OK !=
1204 results)) 1210 GNUNET_MY_extract_result (stmt,
1211 results))
1205 { 1212 {
1206 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1213 LOG_MYSQL(plugin,
1207 "mysql extract_result", statement); 1214 GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1215 "mysql extract_result",
1216 GNUNET_MYSQL_statement_get_stmt (stmt));
1208 return GNUNET_SYSERR; 1217 return GNUNET_SYSERR;
1209 } 1218 }
1210 1219
1211 return cb (cb_cls, (void *) msg, data8); 1220 mp = GNUNET_malloc (sizeof (msg) + buf_size);
1221 *mp = msg;
1222 mp->fragment_id = GNUNET_htonll (fragment_id);
1223 mp->fragment_offset = GNUNET_htonllk (fragment_offset);
1224 mp->message_id = GNUNET_htonllk (message_id);
1225 mp->group_generation = GNUNET_htonllk (group_generation);
1226 GNUNET_memcpy (&mp[1],
1227 buf,
1228 buf_size);
1229 ret = cb (cb_cls,
1230 mp,
1231 (enum GNUNET_PSYCSTORE_MessageFlags) flags);
1232 GNUNET_free (mp);
1233 GNUNET_MY_cleanup_result (results);
1234 return ret;
1212} 1235}
1213 1236
1214 1237
@@ -1274,7 +1297,7 @@ fragment_select (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *stm
1274 break; 1297 break;
1275 default: 1298 default:
1276 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1299 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1277 "mysql extract_result", statement); 1300 "mysql extract_result", statement);
1278 } 1301 }
1279 } 1302 }
1280 while (sql_ret == GNUNET_YES); 1303 while (sql_ret == GNUNET_YES);
@@ -1308,7 +1331,7 @@ fragment_get (void *cls,
1308 { 1331 {
1309 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1332 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1310 "mysql get_stmt", statement); 1333 "mysql get_stmt", statement);
1311 return GNUNET_SYSERR; 1334 return GNUNET_SYSERR;
1312 } 1335 }
1313 1336
1314 int ret = GNUNET_SYSERR; 1337 int ret = GNUNET_SYSERR;
@@ -1327,7 +1350,7 @@ fragment_get (void *cls,
1327 { 1350 {
1328 LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1351 LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1329 "mysql_stmt_reset", statement); 1352 "mysql_stmt_reset", statement);
1330 return GNUNET_SYSERR; 1353 return GNUNET_SYSERR;
1331 } 1354 }
1332 1355
1333 return ret; 1356 return ret;
@@ -1371,8 +1394,8 @@ fragment_get_latest (void *cls,
1371 { 1394 {
1372 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1395 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1373 "mysql_stmt_reset", statement); 1396 "mysql_stmt_reset", statement);
1374 return GNUNET_SYSERR; 1397 return GNUNET_SYSERR;
1375 } 1398 }
1376 1399
1377 return ret; 1400 return ret;
1378} 1401}
@@ -1419,8 +1442,8 @@ message_get (void *cls,
1419 { 1442 {
1420 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1443 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1421 "mysql_stmt_reset", statement); 1444 "mysql_stmt_reset", statement);
1422 return GNUNET_SYSERR; 1445 return GNUNET_SYSERR;
1423 } 1446 }
1424 1447
1425 return ret; 1448 return ret;
1426} 1449}
@@ -1464,8 +1487,8 @@ message_get_latest (void *cls,
1464 { 1487 {
1465 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1488 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1466 "mysql_stmt_reset", statement); 1489 "mysql_stmt_reset", statement);
1467 return GNUNET_SYSERR; 1490 return GNUNET_SYSERR;
1468 } 1491 }
1469 1492
1470 return ret; 1493 return ret;
1471} 1494}
@@ -1509,7 +1532,7 @@ message_get_fragment (void *cls,
1509 { 1532 {
1510 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1533 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1511 "mysql execute prepared", statement); 1534 "mysql execute prepared", statement);
1512 return GNUNET_SYSERR; 1535 return GNUNET_SYSERR;
1513 } 1536 }
1514/****** CHANGER ICI ****/ 1537/****** CHANGER ICI ****/
1515 ret = fragment_row (stmt, cb, cb_cls); 1538 ret = fragment_row (stmt, cb, cb_cls);
@@ -1518,8 +1541,8 @@ message_get_fragment (void *cls,
1518 { 1541 {
1519 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1542 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1520 "mysql_stmt_reset", statement); 1543 "mysql_stmt_reset", statement);
1521 return GNUNET_SYSERR; 1544 return GNUNET_SYSERR;
1522 } 1545 }
1523 1546
1524 return ret; 1547 return ret;
1525} 1548}
@@ -1539,7 +1562,7 @@ counters_message_get (void *cls,
1539 uint64_t *max_group_generation) 1562 uint64_t *max_group_generation)
1540{ 1563{
1541 struct Plugin *plugin = cls; 1564 struct Plugin *plugin = cls;
1542 1565
1543 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_counters_message; 1566 struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_counters_message;
1544 MYSQL_STMT *statement = NULL; 1567 MYSQL_STMT *statement = NULL;
1545 1568
@@ -1549,7 +1572,7 @@ counters_message_get (void *cls,
1549 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1572 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1550 "mysql get statement", statement); 1573 "mysql get statement", statement);
1551 return GNUNET_SYSERR; 1574 return GNUNET_SYSERR;
1552 } 1575 }
1553 1576
1554 int ret = GNUNET_SYSERR; 1577 int ret = GNUNET_SYSERR;
1555 1578
@@ -1588,8 +1611,8 @@ counters_message_get (void *cls,
1588 { 1611 {
1589 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1612 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1590 "mysql_stmt_reset", statement); 1613 "mysql_stmt_reset", statement);
1591 return GNUNET_SYSERR; 1614 return GNUNET_SYSERR;
1592 } 1615 }
1593 1616
1594 return ret; 1617 return ret;
1595} 1618}
@@ -1616,7 +1639,7 @@ counters_state_get (void *cls,
1616 { 1639 {
1617 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1640 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1618 "mysql get_stmt", statement); 1641 "mysql get_stmt", statement);
1619 return GNUNET_SYSERR; 1642 return GNUNET_SYSERR;
1620 } 1643 }
1621 1644
1622 int ret = GNUNET_SYSERR; 1645 int ret = GNUNET_SYSERR;
@@ -1654,8 +1677,8 @@ counters_state_get (void *cls,
1654 { 1677 {
1655 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1678 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1656 "mysql_stmt_reset", statement); 1679 "mysql_stmt_reset", statement);
1657 return GNUNET_SYSERR; 1680 return GNUNET_SYSERR;
1658 } 1681 }
1659 1682
1660 return ret; 1683 return ret;
1661} 1684}
@@ -1705,8 +1728,8 @@ state_assign (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *stmt,
1705 { 1728 {
1706 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1729 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1707 "mysql_stmt_reset", statement); 1730 "mysql_stmt_reset", statement);
1708 return GNUNET_SYSERR; 1731 return GNUNET_SYSERR;
1709 } 1732 }
1710 1733
1711 return ret; 1734 return ret;
1712} 1735}
@@ -1746,9 +1769,9 @@ update_message_id (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *s
1746 { 1769 {
1747 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 1770 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
1748 "mysql_stmt_reset", statement); 1771 "mysql_stmt_reset", statement);
1749 return GNUNET_SYSERR; 1772 return GNUNET_SYSERR;
1750 } 1773 }
1751 1774
1752 return GNUNET_OK; 1775 return GNUNET_OK;
1753} 1776}
1754 1777
@@ -2006,8 +2029,8 @@ state_get (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
2006 { 2029 {
2007 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 2030 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
2008 "mysql_stmt_reset", statement); 2031 "mysql_stmt_reset", statement);
2009 return GNUNET_SYSERR; 2032 return GNUNET_SYSERR;
2010 } 2033 }
2011 2034
2012 return ret; 2035 return ret;
2013} 2036}
@@ -2093,7 +2116,7 @@ state_get_prefix (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_
2093 { 2116 {
2094 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 2117 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
2095 "mysql_stmt_reset", statement); 2118 "mysql_stmt_reset", statement);
2096 return GNUNET_SYSERR; 2119 return GNUNET_SYSERR;
2097 } 2120 }
2098 2121
2099 return ret; 2122 return ret;
@@ -2123,7 +2146,7 @@ state_get_signed (void *cls,
2123 { 2146 {
2124 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 2147 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
2125 "mysql get_stmt", statement); 2148 "mysql get_stmt", statement);
2126 return GNUNET_SYSERR; 2149 return GNUNET_SYSERR;
2127 } 2150 }
2128 2151
2129 struct GNUNET_MY_QueryParam params_select[] = { 2152 struct GNUNET_MY_QueryParam params_select[] = {
@@ -2176,7 +2199,7 @@ state_get_signed (void *cls,
2176 { 2199 {
2177 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, 2200 LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
2178 "mysql_stmt_reset", statement); 2201 "mysql_stmt_reset", statement);
2179 return GNUNET_SYSERR; 2202 return GNUNET_SYSERR;
2180 } 2203 }
2181 2204
2182 return ret; 2205 return ret;