diff options
author | Christophe Genevey Metat <genevey.christophe@gmail.com> | 2016-07-08 14:04:58 +0000 |
---|---|---|
committer | Christophe Genevey Metat <genevey.christophe@gmail.com> | 2016-07-08 14:04:58 +0000 |
commit | dedde9454bd4cb4ce90c5803fcf135968408aaac (patch) | |
tree | f681dc4702bb3337c821627499b71e61a7d339a1 /src/psycstore | |
parent | 837043ed07163a8654827676602f30b9132ff4d0 (diff) | |
download | gnunet-dedde9454bd4cb4ce90c5803fcf135968408aaac.tar.gz gnunet-dedde9454bd4cb4ce90c5803fcf135968408aaac.zip |
plugin psycstore_mysql
Diffstat (limited to 'src/psycstore')
-rw-r--r-- | src/psycstore/plugin_psycstore_mysql.c | 410 |
1 files changed, 254 insertions, 156 deletions
diff --git a/src/psycstore/plugin_psycstore_mysql.c b/src/psycstore/plugin_psycstore_mysql.c index 5226c296c..abb8ecfb9 100644 --- a/src/psycstore/plugin_psycstore_mysql.c +++ b/src/psycstore/plugin_psycstore_mysql.c | |||
@@ -40,8 +40,6 @@ | |||
40 | #include "psycstore.h" | 40 | #include "psycstore.h" |
41 | #include "gnunet_my_lib.h" | 41 | #include "gnunet_my_lib.h" |
42 | #include "gnunet_mysql_lib.h" | 42 | #include "gnunet_mysql_lib.h" |
43 | |||
44 | #include <sqlite3.h> | ||
45 | #include <mysql/mysql.h> | 43 | #include <mysql/mysql.h> |
46 | 44 | ||
47 | /** | 45 | /** |
@@ -233,9 +231,9 @@ struct Plugin | |||
233 | #if DEBUG_PSYCSTORE | 231 | #if DEBUG_PSYCSTORE |
234 | 232 | ||
235 | static void | 233 | static void |
236 | sql_trace (void *cls, const char *sql) | 234 | mysql_trace (void *cls, const char *sql) |
237 | { | 235 | { |
238 | LOG (GNUNET_ERROR_TYPE_DEBUG, "MYSQL query:\n%s\n", sql); | 236 | LOG(GNUNET_ERROR_TYPE_DEBUG, "MYSQL query:\n%s\n", sql); |
239 | } | 237 | } |
240 | 238 | ||
241 | #endif | 239 | #endif |
@@ -257,10 +255,10 @@ mysql_prepare (struct GNUNET_MYSQL_Context *mc, | |||
257 | stmt = GNUNET_MYSQL_statement_prepare (mc, | 255 | stmt = GNUNET_MYSQL_statement_prepare (mc, |
258 | sql); | 256 | sql); |
259 | 257 | ||
260 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 258 | LOG(GNUNET_ERROR_TYPE_DEBUG, |
261 | "Prepared `%s' / %p\n", sql, stmt); | 259 | "Prepared `%s' / %p\n", sql, stmt); |
262 | if(NULL == stmt) | 260 | if(NULL == stmt) |
263 | LOG (GNUNET_ERROR_TYPE_ERROR, | 261 | LOG(GNUNET_ERROR_TYPE_ERROR, |
264 | _("Error preparing SQL query: %s\n %s\n"), | 262 | _("Error preparing SQL query: %s\n %s\n"), |
265 | mysql_stmt_error (GNUNET_MYSQL_statement_get_stmt (stmt)), sql); | 263 | mysql_stmt_error (GNUNET_MYSQL_statement_get_stmt (stmt)), sql); |
266 | 264 | ||
@@ -283,10 +281,10 @@ mysql_exec (struct GNUNET_MYSQL_Context *mc, | |||
283 | int result; | 281 | int result; |
284 | 282 | ||
285 | result = GNUNET_MY_exec_prepared (mc, sh, qp); | 283 | result = GNUNET_MY_exec_prepared (mc, sh, qp); |
286 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 284 | LOG(GNUNET_ERROR_TYPE_DEBUG, |
287 | "Executed `GNUNET_MY_exec_prepared`' / %d\n", result); | 285 | "Executed `GNUNET_MY_exec_prepared`' / %d\n", result); |
288 | if (GNUNET_OK != result) | 286 | if (GNUNET_OK != result) |
289 | LOG (GNUNET_ERROR_TYPE_ERROR, | 287 | LOG(GNUNET_ERROR_TYPE_ERROR, |
290 | _("Error executing SQL query: %s\n"), | 288 | _("Error executing SQL query: %s\n"), |
291 | mysql_stmt_error (GNUNET_MYSQL_statement_get_stmt (sh))); | 289 | mysql_stmt_error (GNUNET_MYSQL_statement_get_stmt (sh))); |
292 | return result; | 290 | return result; |
@@ -331,9 +329,8 @@ database_setup (struct Plugin *plugin) | |||
331 | 329 | ||
332 | if (NULL == plugin->mc) | 330 | if (NULL == plugin->mc) |
333 | { | 331 | { |
334 | LOG (GNUNET_ERROR_TYPE_ERROR, | 332 | LOG(GNUNET_ERROR_TYPE_ERROR, |
335 | _("Unable to initialize SQLite: %s.\n"), | 333 | _("Unable to initialize Mysql: .\n")); |
336 | sqlite3_errmsg (plugin->dbh)); | ||
337 | return GNUNET_SYSERR; | 334 | return GNUNET_SYSERR; |
338 | } | 335 | } |
339 | 336 | ||
@@ -639,20 +636,7 @@ database_setup (struct Plugin *plugin) | |||
639 | static void | 636 | static void |
640 | database_shutdown (struct Plugin *plugin) | 637 | database_shutdown (struct Plugin *plugin) |
641 | { | 638 | { |
642 | int result; | 639 | GNUNET_MYSQL_statements_invalidate (plugin->mc); |
643 | sqlite3_stmt *stmt; | ||
644 | |||
645 | //MYSQL_STMT *stmt; | ||
646 | |||
647 | while (NULL != (stmt = sqlite3_next_stmt (plugin->dbh, NULL))) | ||
648 | { | ||
649 | result = sqlite3_finalize (stmt); | ||
650 | if (SQLITE_OK != result) | ||
651 | LOG (GNUNET_ERROR_TYPE_WARNING, | ||
652 | "Failed to close statement %p: %d\n", stmt, result); | ||
653 | } | ||
654 | if (SQLITE_OK != sqlite3_close (plugin->dbh)) | ||
655 | LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR, "sqlite3_close"); | ||
656 | 640 | ||
657 | GNUNET_free_non_null (plugin->fn); | 641 | GNUNET_free_non_null (plugin->fn); |
658 | } | 642 | } |
@@ -676,7 +660,7 @@ exec_channel (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *stmt, | |||
676 | 660 | ||
677 | if (NULL == statement) | 661 | if (NULL == statement) |
678 | { | 662 | { |
679 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 663 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
680 | "mysql statement invalide", statement); | 664 | "mysql statement invalide", statement); |
681 | return GNUNET_SYSERR; | 665 | return GNUNET_SYSERR; |
682 | } | 666 | } |
@@ -690,13 +674,13 @@ exec_channel (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *stmt, | |||
690 | stmt, | 674 | stmt, |
691 | params)) | 675 | params)) |
692 | { | 676 | { |
693 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 677 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
694 | "mysql exec_channel", stmt); | 678 | "mysql exec_channel", statement); |
695 | } | 679 | } |
696 | 680 | ||
697 | if (0 != mysql_stmt_reset (statement)) | 681 | if (0 != mysql_stmt_reset (statement)) |
698 | { | 682 | { |
699 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 683 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
700 | "mysql_stmt_reset", statement); | 684 | "mysql_stmt_reset", statement); |
701 | return GNUNET_SYSERR; | 685 | return GNUNET_SYSERR; |
702 | } | 686 | } |
@@ -718,7 +702,7 @@ transaction_begin (struct Plugin *plugin, enum Transactions transaction) | |||
718 | 702 | ||
719 | if (NULL == statement) | 703 | if (NULL == statement) |
720 | { | 704 | { |
721 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 705 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
722 | "mysql statement invalide", statement); | 706 | "mysql statement invalide", statement); |
723 | return GNUNET_SYSERR; | 707 | return GNUNET_SYSERR; |
724 | } | 708 | } |
@@ -731,14 +715,14 @@ transaction_begin (struct Plugin *plugin, enum Transactions transaction) | |||
731 | stmt, | 715 | stmt, |
732 | params)) | 716 | params)) |
733 | { | 717 | { |
734 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 718 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
735 | "mysql extract_result", statement); | 719 | "mysql extract_result", statement); |
736 | return GNUNET_SYSERR; | 720 | return GNUNET_SYSERR; |
737 | } | 721 | } |
738 | 722 | ||
739 | if (0 != mysql_stmt_reset (statement)) | 723 | if (0 != mysql_stmt_reset (statement)) |
740 | { | 724 | { |
741 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 725 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
742 | "mysql_stmt_reset", statement); | 726 | "mysql_stmt_reset", statement); |
743 | return GNUNET_SYSERR; | 727 | return GNUNET_SYSERR; |
744 | } | 728 | } |
@@ -761,7 +745,7 @@ transaction_commit (struct Plugin *plugin) | |||
761 | 745 | ||
762 | if (NULL == statement) | 746 | if (NULL == statement) |
763 | { | 747 | { |
764 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 748 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
765 | "mysql statement invalide", statement); | 749 | "mysql statement invalide", statement); |
766 | return GNUNET_SYSERR; | 750 | return GNUNET_SYSERR; |
767 | } | 751 | } |
@@ -774,14 +758,14 @@ transaction_commit (struct Plugin *plugin) | |||
774 | stmt, | 758 | stmt, |
775 | params)) | 759 | params)) |
776 | { | 760 | { |
777 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 761 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
778 | "mysql extract_result", statement); | 762 | "mysql extract_result", statement); |
779 | return GNUNET_SYSERR; | 763 | return GNUNET_SYSERR; |
780 | } | 764 | } |
781 | 765 | ||
782 | if (0 != mysql_stmt_reset (statement)) | 766 | if (0 != mysql_stmt_reset (statement)) |
783 | { | 767 | { |
784 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 768 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
785 | "mysql_stmt_reset", statement); | 769 | "mysql_stmt_reset", statement); |
786 | return GNUNET_SYSERR; | 770 | return GNUNET_SYSERR; |
787 | } | 771 | } |
@@ -803,7 +787,7 @@ transaction_rollback (struct Plugin *plugin) | |||
803 | statement = GNUNET_MYSQL_statement_get_stmt (stmt); | 787 | statement = GNUNET_MYSQL_statement_get_stmt (stmt); |
804 | if (NULL == statement) | 788 | if (NULL == statement) |
805 | { | 789 | { |
806 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 790 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
807 | "mysql statement invalide", statement); | 791 | "mysql statement invalide", statement); |
808 | return GNUNET_SYSERR; | 792 | return GNUNET_SYSERR; |
809 | } | 793 | } |
@@ -816,14 +800,14 @@ transaction_rollback (struct Plugin *plugin) | |||
816 | stmt, | 800 | stmt, |
817 | params)) | 801 | params)) |
818 | { | 802 | { |
819 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 803 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
820 | "mysql extract_result", statement); | 804 | "mysql extract_result", statement); |
821 | return GNUNET_SYSERR; | 805 | return GNUNET_SYSERR; |
822 | } | 806 | } |
823 | 807 | ||
824 | if (0 != mysql_stmt_reset (statement)) | 808 | if (0 != mysql_stmt_reset (statement)) |
825 | { | 809 | { |
826 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 810 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
827 | "mysql_stmt_reset", statement); | 811 | "mysql_stmt_reset", statement); |
828 | return GNUNET_SYSERR; | 812 | return GNUNET_SYSERR; |
829 | } | 813 | } |
@@ -844,7 +828,7 @@ channel_key_store (struct Plugin *plugin, | |||
844 | 828 | ||
845 | if(NULL == statement) | 829 | if(NULL == statement) |
846 | { | 830 | { |
847 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 831 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
848 | "mysql statement invalide", statement); | 832 | "mysql statement invalide", statement); |
849 | return GNUNET_SYSERR; | 833 | return GNUNET_SYSERR; |
850 | } | 834 | } |
@@ -858,14 +842,14 @@ channel_key_store (struct Plugin *plugin, | |||
858 | stmt, | 842 | stmt, |
859 | params)) | 843 | params)) |
860 | { | 844 | { |
861 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 845 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
862 | "mysql extract_result", statement); | 846 | "mysql extract_result", statement); |
863 | return GNUNET_SYSERR; | 847 | return GNUNET_SYSERR; |
864 | } | 848 | } |
865 | 849 | ||
866 | if (0 != mysql_stmt_reset (statement)) | 850 | if (0 != mysql_stmt_reset (statement)) |
867 | { | 851 | { |
868 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 852 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
869 | "mysql_stmt_reset", statement); | 853 | "mysql_stmt_reset", statement); |
870 | return GNUNET_SYSERR; | 854 | return GNUNET_SYSERR; |
871 | } | 855 | } |
@@ -885,7 +869,7 @@ slave_key_store (struct Plugin *plugin, | |||
885 | 869 | ||
886 | if(NULL == statement) | 870 | if(NULL == statement) |
887 | { | 871 | { |
888 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 872 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
889 | "mysql statement invalide", statement); | 873 | "mysql statement invalide", statement); |
890 | return GNUNET_SYSERR; | 874 | return GNUNET_SYSERR; |
891 | } | 875 | } |
@@ -899,14 +883,14 @@ slave_key_store (struct Plugin *plugin, | |||
899 | stmt, | 883 | stmt, |
900 | params)) | 884 | params)) |
901 | { | 885 | { |
902 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 886 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
903 | "mysql extract_result", statement); | 887 | "mysql extract_result", statement); |
904 | return GNUNET_SYSERR; | 888 | return GNUNET_SYSERR; |
905 | } | 889 | } |
906 | 890 | ||
907 | if (0 != mysql_stmt_reset (statement)) | 891 | if (0 != mysql_stmt_reset (statement)) |
908 | { | 892 | { |
909 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 893 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
910 | "mysql_stmt_reset", statement); | 894 | "mysql_stmt_reset", statement); |
911 | return GNUNET_SYSERR; | 895 | return GNUNET_SYSERR; |
912 | } | 896 | } |
@@ -972,14 +956,14 @@ sqlite_membership_store (void *cls, | |||
972 | stmt, | 956 | stmt, |
973 | params)) | 957 | params)) |
974 | { | 958 | { |
975 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 959 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
976 | "mysql extract_result", statement); | 960 | "mysql extract_result", statement); |
977 | return GNUNET_SYSERR; | 961 | return GNUNET_SYSERR; |
978 | } | 962 | } |
979 | 963 | ||
980 | if (0 != mysql_stmt_reset (statement)) | 964 | if (0 != mysql_stmt_reset (statement)) |
981 | { | 965 | { |
982 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 966 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
983 | "mysql_stmt_reset", statement); | 967 | "mysql_stmt_reset", statement); |
984 | return GNUNET_SYSERR; | 968 | return GNUNET_SYSERR; |
985 | } | 969 | } |
@@ -1011,7 +995,7 @@ membership_test (void *cls, | |||
1011 | 995 | ||
1012 | if(NULL == statement) | 996 | if(NULL == statement) |
1013 | { | 997 | { |
1014 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 998 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1015 | "mysql statement invalide", statement); | 999 | "mysql statement invalide", statement); |
1016 | return GNUNET_SYSERR; | 1000 | return GNUNET_SYSERR; |
1017 | } | 1001 | } |
@@ -1029,7 +1013,7 @@ membership_test (void *cls, | |||
1029 | stmt, | 1013 | stmt, |
1030 | params_select)) | 1014 | params_select)) |
1031 | { | 1015 | { |
1032 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1016 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1033 | "mysql execute prepared", statement); | 1017 | "mysql execute prepared", statement); |
1034 | return GNUNET_SYSERR; | 1018 | return GNUNET_SYSERR; |
1035 | } | 1019 | } |
@@ -1042,7 +1026,7 @@ membership_test (void *cls, | |||
1042 | if (GNUNET_OK != GNUNET_MY_extract_result (stmt, | 1026 | if (GNUNET_OK != GNUNET_MY_extract_result (stmt, |
1043 | results_select)) | 1027 | results_select)) |
1044 | { | 1028 | { |
1045 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1029 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1046 | "mysql extract_result", statement); | 1030 | "mysql extract_result", statement); |
1047 | return GNUNET_SYSERR; | 1031 | return GNUNET_SYSERR; |
1048 | } | 1032 | } |
@@ -1058,7 +1042,7 @@ membership_test (void *cls, | |||
1058 | 1042 | ||
1059 | if (0 != mysql_stmt_reset (statement)) | 1043 | if (0 != mysql_stmt_reset (statement)) |
1060 | { | 1044 | { |
1061 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1045 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1062 | "mysql_stmt_reset", statement); | 1046 | "mysql_stmt_reset", statement); |
1063 | return GNUNET_SYSERR; | 1047 | return GNUNET_SYSERR; |
1064 | } | 1048 | } |
@@ -1096,7 +1080,7 @@ fragment_store (void *cls, | |||
1096 | if (fragment_id > INT64_MAX || fragment_offset > INT64_MAX || | 1080 | if (fragment_id > INT64_MAX || fragment_offset > INT64_MAX || |
1097 | message_id > INT64_MAX || group_generation > INT64_MAX) | 1081 | message_id > INT64_MAX || group_generation > INT64_MAX) |
1098 | { | 1082 | { |
1099 | LOG (GNUNET_ERROR_TYPE_ERROR, | 1083 | LOG(GNUNET_ERROR_TYPE_ERROR, |
1100 | "Tried to store fragment with a field > INT64_MAX: " | 1084 | "Tried to store fragment with a field > INT64_MAX: " |
1101 | "%lu, %lu, %lu, %lu\n", fragment_id, fragment_offset, | 1085 | "%lu, %lu, %lu, %lu\n", fragment_id, fragment_offset, |
1102 | message_id, group_generation); | 1086 | message_id, group_generation); |
@@ -1109,14 +1093,14 @@ fragment_store (void *cls, | |||
1109 | 1093 | ||
1110 | struct GNUNET_MY_QueryParam params_insert[] = { | 1094 | struct GNUNET_MY_QueryParam params_insert[] = { |
1111 | GNUNET_MY_query_param_auto_from_type (channel_key), | 1095 | GNUNET_MY_query_param_auto_from_type (channel_key), |
1112 | GNUNET_MY_query_param_uint32 (msg->hop_counter), | 1096 | GNUNET_MY_query_param_uint32 ((const uint32_t *) &msg->hop_counter), |
1113 | GNUNET_MY_query_param_auto_from_type (&msg->signature), | 1097 | GNUNET_MY_query_param_auto_from_type (&msg->signature), |
1114 | GNUNET_MY_query_param_auto_from_type (&msg->purpose), | 1098 | GNUNET_MY_query_param_auto_from_type (&msg->purpose), |
1115 | GNUNET_MY_query_param_uint64 (&fragment_id), | 1099 | GNUNET_MY_query_param_uint64 (&fragment_id), |
1116 | GNUNET_MY_query_param_uint64 (&fragment_offset), | 1100 | GNUNET_MY_query_param_uint64 (&fragment_offset), |
1117 | GNUNET_MY_query_param_uint64 (&message_id), | 1101 | GNUNET_MY_query_param_uint64 (&message_id), |
1118 | GNUNET_MY_query_param_uint64 (&group_generation), | 1102 | GNUNET_MY_query_param_uint64 (&group_generation), |
1119 | GNUNET_MY_query_param_uint32 ( msg->flags), | 1103 | GNUNET_MY_query_param_uint32 ( (const uint32_t *) &msg->flags), |
1120 | GNUNET_MY_query_param_uint32 (&psycstore_flags), | 1104 | GNUNET_MY_query_param_uint32 (&psycstore_flags), |
1121 | GNUNET_MY_query_param_auto_from_type (&msg[1]), | 1105 | GNUNET_MY_query_param_auto_from_type (&msg[1]), |
1122 | GNUNET_MY_query_param_end | 1106 | GNUNET_MY_query_param_end |
@@ -1126,14 +1110,14 @@ fragment_store (void *cls, | |||
1126 | stmt, | 1110 | stmt, |
1127 | params_insert)) | 1111 | params_insert)) |
1128 | { | 1112 | { |
1129 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1113 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1130 | "mysql execute prepared", statement); | 1114 | "mysql execute prepared", statement); |
1131 | return GNUNET_SYSERR; | 1115 | return GNUNET_SYSERR; |
1132 | } | 1116 | } |
1133 | 1117 | ||
1134 | if (0 != mysql_stmt_reset (statement)) | 1118 | if (0 != mysql_stmt_reset (statement)) |
1135 | { | 1119 | { |
1136 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1120 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1137 | "mysql_stmt_reset", statement); | 1121 | "mysql_stmt_reset", statement); |
1138 | return GNUNET_SYSERR; | 1122 | return GNUNET_SYSERR; |
1139 | } | 1123 | } |
@@ -1174,14 +1158,14 @@ message_add_flags (void *cls, | |||
1174 | stmt, | 1158 | stmt, |
1175 | params_update)) | 1159 | params_update)) |
1176 | { | 1160 | { |
1177 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1161 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1178 | "mysql execute prepared", statement); | 1162 | "mysql execute prepared", statement); |
1179 | return GNUNET_SYSERR; | 1163 | return GNUNET_SYSERR; |
1180 | } | 1164 | } |
1181 | 1165 | ||
1182 | if (0 != mysql_stmt_reset (statement)) | 1166 | if (0 != mysql_stmt_reset (statement)) |
1183 | { | 1167 | { |
1184 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1168 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1185 | "mysql_stmt_reset", statement); | 1169 | "mysql_stmt_reset", statement); |
1186 | return GNUNET_SYSERR; | 1170 | return GNUNET_SYSERR; |
1187 | } | 1171 | } |
@@ -1189,64 +1173,110 @@ message_add_flags (void *cls, | |||
1189 | return ret; | 1173 | return ret; |
1190 | } | 1174 | } |
1191 | 1175 | ||
1192 | /** Extract result from statement **/ | ||
1193 | static int | 1176 | static int |
1194 | fragment_row (sqlite3_stmt *stmt, GNUNET_PSYCSTORE_FragmentCallback cb, | 1177 | fragment_row (struct GNUNET_MYSQL_StatementHandle *stmt, GNUNET_PSYCSTORE_FragmentCallback cb, |
1195 | void *cb_cls) | 1178 | void *cb_cls) |
1196 | { | 1179 | { |
1197 | int data_size = sqlite3_column_bytes (stmt, 9); | 1180 | int data_size = 0 ; |
1181 | uint64_t data8 = 0; | ||
1182 | MYSQL_STMT * statement = NULL; | ||
1183 | statement = GNUNET_MYSQL_statement_get_stmt (stmt); | ||
1184 | |||
1198 | struct GNUNET_MULTICAST_MessageHeader *msg | 1185 | struct GNUNET_MULTICAST_MessageHeader *msg |
1199 | = GNUNET_malloc (sizeof (*msg) + data_size); | 1186 | = GNUNET_malloc (sizeof (*msg) + data_size); |
1200 | 1187 | ||
1201 | msg->header.size = htons (sizeof (*msg) + data_size); | 1188 | struct GNUNET_MY_ResultSpec results[] = { |
1202 | msg->header.type = htons (GNUNET_MESSAGE_TYPE_MULTICAST_MESSAGE); | 1189 | GNUNET_MY_result_spec_uint32 ((uint32_t *)&msg->hop_counter), |
1203 | msg->hop_counter = htonl ((uint32_t) sqlite3_column_int64 (stmt, 0)); | 1190 | GNUNET_MY_result_spec_auto_from_type (&msg->signature), |
1204 | memcpy (&msg->signature, | 1191 | GNUNET_MY_result_spec_auto_from_type (&msg->purpose), |
1205 | sqlite3_column_blob (stmt, 1), | 1192 | GNUNET_MY_result_spec_uint64 (&msg->fragment_id), |
1206 | sqlite3_column_bytes (stmt, 1)); | 1193 | GNUNET_MY_result_spec_uint64 (&msg->fragment_offset), |
1207 | memcpy (&msg->purpose, | 1194 | GNUNET_MY_result_spec_uint64 (&msg->message_id), |
1208 | sqlite3_column_blob (stmt, 2), | 1195 | GNUNET_MY_result_spec_uint64 (&msg->group_generation), |
1209 | sqlite3_column_bytes (stmt, 2)); | 1196 | GNUNET_MY_result_spec_uint32 (&msg->flags), |
1210 | msg->fragment_id = GNUNET_htonll (sqlite3_column_int64 (stmt, 3)); | 1197 | GNUNET_MY_result_spec_uint64 (&data8), |
1211 | msg->fragment_offset = GNUNET_htonll (sqlite3_column_int64 (stmt, 4)); | 1198 | GNUNET_MY_result_spec_auto_from_type (&msg[1]), |
1212 | msg->message_id = GNUNET_htonll (sqlite3_column_int64 (stmt, 5)); | 1199 | GNUNET_MY_result_spec_end |
1213 | msg->group_generation = GNUNET_htonll (sqlite3_column_int64 (stmt, 6)); | 1200 | }; |
1214 | msg->flags = htonl (sqlite3_column_int64 (stmt, 7)); | 1201 | |
1215 | memcpy (&msg[1], sqlite3_column_blob (stmt, 9), data_size); | 1202 | if (GNUNET_OK != GNUNET_MY_extract_result (stmt, |
1216 | 1203 | results)) | |
1217 | return cb (cb_cls, (void *) msg, sqlite3_column_int64 (stmt, 8)); | 1204 | { |
1205 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | ||
1206 | "mysql extract_result", statement); | ||
1207 | return GNUNET_SYSERR; | ||
1208 | } | ||
1209 | |||
1210 | return cb (cb_cls, (void *) msg, data8); | ||
1218 | } | 1211 | } |
1219 | 1212 | ||
1220 | 1213 | ||
1221 | static int | 1214 | static int |
1222 | fragment_select (struct Plugin *plugin, sqlite3_stmt *stmt, | 1215 | fragment_select (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *stmt, |
1216 | struct GNUNET_MY_QueryParam *params, | ||
1223 | uint64_t *returned_fragments, | 1217 | uint64_t *returned_fragments, |
1224 | GNUNET_PSYCSTORE_FragmentCallback cb, void *cb_cls) | 1218 | GNUNET_PSYCSTORE_FragmentCallback cb, void *cb_cls) |
1225 | { | 1219 | { |
1226 | int ret = GNUNET_SYSERR; | 1220 | int ret = GNUNET_SYSERR; |
1227 | int sql_ret; | 1221 | int sql_ret; |
1228 | 1222 | ||
1223 | MYSQL_STMT *statement = NULL; | ||
1224 | |||
1225 | statement = GNUNET_MYSQL_statement_get_stmt (stmt); | ||
1226 | |||
1227 | uint32_t hop_counter = 0; | ||
1228 | void *signature = NULL; | ||
1229 | void *purpose = NULL; | ||
1230 | uint64_t fragment_id = 0 ; | ||
1231 | uint64_t fragment_offset = 0; | ||
1232 | uint64_t message_id = 0; | ||
1233 | uint64_t group_generation = 0; | ||
1234 | uint32_t flags = 0; | ||
1235 | uint64_t data8; | ||
1236 | |||
1237 | struct GNUNET_MULTICAST_MessageHeader *msg | ||
1238 | = GNUNET_malloc (sizeof (*msg) + 0); | ||
1239 | |||
1240 | struct GNUNET_MY_ResultSpec results[] = { | ||
1241 | GNUNET_MY_result_spec_uint32 (&hop_counter), | ||
1242 | GNUNET_MY_result_spec_auto_from_type (&signature), | ||
1243 | GNUNET_MY_result_spec_auto_from_type (&purpose), | ||
1244 | GNUNET_MY_result_spec_uint64 (&fragment_id), | ||
1245 | GNUNET_MY_result_spec_uint64 (&fragment_offset), | ||
1246 | GNUNET_MY_result_spec_uint64 (&message_id), | ||
1247 | GNUNET_MY_result_spec_uint64 (&group_generation), | ||
1248 | GNUNET_MY_result_spec_uint32 (&flags), | ||
1249 | GNUNET_MY_result_spec_uint64 (&data8), | ||
1250 | GNUNET_MY_result_spec_auto_from_type (&msg[1]), | ||
1251 | GNUNET_MY_result_spec_end | ||
1252 | }; | ||
1253 | |||
1229 | do | 1254 | do |
1230 | { | 1255 | { |
1231 | sql_ret = sqlite3_step (stmt); | 1256 | GNUNET_MY_exec_prepared (plugin->mc, |
1257 | stmt, | ||
1258 | params); | ||
1259 | |||
1260 | sql_ret = GNUNET_MY_extract_result (stmt, | ||
1261 | results); | ||
1232 | switch (sql_ret) | 1262 | switch (sql_ret) |
1233 | { | 1263 | { |
1234 | case SQLITE_DONE: | 1264 | case GNUNET_NO: |
1235 | if (ret != GNUNET_OK) | 1265 | if (ret != GNUNET_OK) |
1236 | ret = GNUNET_NO; | 1266 | ret = GNUNET_NO; |
1237 | break; | 1267 | break; |
1238 | case SQLITE_ROW: | 1268 | case GNUNET_YES: |
1239 | ret = fragment_row (stmt, cb, cb_cls); | 1269 | ret = fragment_row (stmt, cb, cb_cls); |
1240 | (*returned_fragments)++; | 1270 | (*returned_fragments)++; |
1241 | if (ret != GNUNET_YES) | 1271 | if (ret != GNUNET_YES) |
1242 | sql_ret = SQLITE_DONE; | 1272 | sql_ret = GNUNET_NO; |
1243 | break; | 1273 | break; |
1244 | default: | 1274 | default: |
1245 | LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1275 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1246 | "sqlite3_step"); | 1276 | "mysql extract_result", statement); |
1247 | } | 1277 | } |
1248 | } | 1278 | } |
1249 | while (sql_ret == SQLITE_ROW); | 1279 | while (sql_ret == GNUNET_YES); |
1250 | 1280 | ||
1251 | return ret; | 1281 | return ret; |
1252 | } | 1282 | } |
@@ -1275,7 +1305,7 @@ fragment_get (void *cls, | |||
1275 | statement = GNUNET_MYSQL_statement_get_stmt (stmt); | 1305 | statement = GNUNET_MYSQL_statement_get_stmt (stmt); |
1276 | if (NULL == statement) | 1306 | if (NULL == statement) |
1277 | { | 1307 | { |
1278 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1308 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1279 | "mysql get_stmt", statement); | 1309 | "mysql get_stmt", statement); |
1280 | return GNUNET_SYSERR; | 1310 | return GNUNET_SYSERR; |
1281 | } | 1311 | } |
@@ -1290,7 +1320,7 @@ fragment_get (void *cls, | |||
1290 | GNUNET_MY_query_param_end | 1320 | GNUNET_MY_query_param_end |
1291 | }; | 1321 | }; |
1292 | 1322 | ||
1293 | ret = fragment_select (plugin, stmt, returned_fragments, cb, cb_cls); | 1323 | ret = fragment_select (plugin, stmt, params_select, returned_fragments, cb, cb_cls); |
1294 | 1324 | ||
1295 | if (0 != mysql_stmt_reset (statement)) | 1325 | if (0 != mysql_stmt_reset (statement)) |
1296 | { | 1326 | { |
@@ -1334,11 +1364,11 @@ fragment_get_latest (void *cls, | |||
1334 | GNUNET_MY_query_param_end | 1364 | GNUNET_MY_query_param_end |
1335 | }; | 1365 | }; |
1336 | 1366 | ||
1337 | ret = fragment_select (plugin, stmt, returned_fragments, cb, cb_cls); | 1367 | ret = fragment_select (plugin, stmt, params_select, returned_fragments, cb, cb_cls); |
1338 | 1368 | ||
1339 | if (0 != mysql_stmt_reset (statement)) | 1369 | if (0 != mysql_stmt_reset (statement)) |
1340 | { | 1370 | { |
1341 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1371 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1342 | "mysql_stmt_reset", statement); | 1372 | "mysql_stmt_reset", statement); |
1343 | return GNUNET_SYSERR; | 1373 | return GNUNET_SYSERR; |
1344 | } | 1374 | } |
@@ -1382,11 +1412,11 @@ message_get (void *cls, | |||
1382 | GNUNET_MY_query_param_end | 1412 | GNUNET_MY_query_param_end |
1383 | }; | 1413 | }; |
1384 | 1414 | ||
1385 | ret = fragment_select (plugin, stmt, returned_fragments, cb, cb_cls); | 1415 | ret = fragment_select (plugin, stmt, params_select, returned_fragments, cb, cb_cls); |
1386 | 1416 | ||
1387 | if (0 != mysql_stmt_reset (statement)) | 1417 | if (0 != mysql_stmt_reset (statement)) |
1388 | { | 1418 | { |
1389 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1419 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1390 | "mysql_stmt_reset", statement); | 1420 | "mysql_stmt_reset", statement); |
1391 | return GNUNET_SYSERR; | 1421 | return GNUNET_SYSERR; |
1392 | } | 1422 | } |
@@ -1427,11 +1457,11 @@ message_get_latest (void *cls, | |||
1427 | GNUNET_MY_query_param_end | 1457 | GNUNET_MY_query_param_end |
1428 | }; | 1458 | }; |
1429 | 1459 | ||
1430 | ret = fragment_select (plugin, stmt, returned_fragments, cb, cb_cls); | 1460 | ret = fragment_select (plugin, stmt, params_select, returned_fragments, cb, cb_cls); |
1431 | 1461 | ||
1432 | if (0 != mysql_stmt_reset (statement)) | 1462 | if (0 != mysql_stmt_reset (statement)) |
1433 | { | 1463 | { |
1434 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1464 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1435 | "mysql_stmt_reset", statement); | 1465 | "mysql_stmt_reset", statement); |
1436 | return GNUNET_SYSERR; | 1466 | return GNUNET_SYSERR; |
1437 | } | 1467 | } |
@@ -1476,16 +1506,16 @@ message_get_fragment (void *cls, | |||
1476 | stmt, | 1506 | stmt, |
1477 | params_select)) | 1507 | params_select)) |
1478 | { | 1508 | { |
1479 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1509 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1480 | "mysql execute prepared", statement); | 1510 | "mysql execute prepared", statement); |
1481 | return GNUNET_SYSERR; | 1511 | return GNUNET_SYSERR; |
1482 | } | 1512 | } |
1483 | 1513 | /****** CHANGER ICI ****/ | |
1484 | ret = fragment_row (stmt, cb, cb_cls); | 1514 | ret = fragment_row (stmt, cb, cb_cls); |
1485 | 1515 | ||
1486 | if (0 != mysql_stmt_reset (statement)) | 1516 | if (0 != mysql_stmt_reset (statement)) |
1487 | { | 1517 | { |
1488 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1518 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1489 | "mysql_stmt_reset", statement); | 1519 | "mysql_stmt_reset", statement); |
1490 | return GNUNET_SYSERR; | 1520 | return GNUNET_SYSERR; |
1491 | } | 1521 | } |
@@ -1515,7 +1545,7 @@ counters_message_get (void *cls, | |||
1515 | statement = GNUNET_MYSQL_statement_get_stmt (stmt); | 1545 | statement = GNUNET_MYSQL_statement_get_stmt (stmt); |
1516 | if (NULL == statement) | 1546 | if (NULL == statement) |
1517 | { | 1547 | { |
1518 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1548 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1519 | "mysql get statement", statement); | 1549 | "mysql get statement", statement); |
1520 | return GNUNET_SYSERR; | 1550 | return GNUNET_SYSERR; |
1521 | } | 1551 | } |
@@ -1531,7 +1561,7 @@ counters_message_get (void *cls, | |||
1531 | stmt, | 1561 | stmt, |
1532 | params_select)) | 1562 | params_select)) |
1533 | { | 1563 | { |
1534 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1564 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1535 | "mysql execute prepared", statement); | 1565 | "mysql execute prepared", statement); |
1536 | return GNUNET_SYSERR; | 1566 | return GNUNET_SYSERR; |
1537 | } | 1567 | } |
@@ -1548,14 +1578,14 @@ counters_message_get (void *cls, | |||
1548 | 1578 | ||
1549 | if (GNUNET_OK != ret) | 1579 | if (GNUNET_OK != ret) |
1550 | { | 1580 | { |
1551 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1581 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1552 | "mysql extract_result", statement); | 1582 | "mysql extract_result", statement); |
1553 | return GNUNET_SYSERR; | 1583 | return GNUNET_SYSERR; |
1554 | } | 1584 | } |
1555 | 1585 | ||
1556 | if (0 != mysql_stmt_reset (statement)) | 1586 | if (0 != mysql_stmt_reset (statement)) |
1557 | { | 1587 | { |
1558 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1588 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1559 | "mysql_stmt_reset", statement); | 1589 | "mysql_stmt_reset", statement); |
1560 | return GNUNET_SYSERR; | 1590 | return GNUNET_SYSERR; |
1561 | } | 1591 | } |
@@ -1583,7 +1613,7 @@ counters_state_get (void *cls, | |||
1583 | statement = GNUNET_MYSQL_statement_get_stmt (stmt); | 1613 | statement = GNUNET_MYSQL_statement_get_stmt (stmt); |
1584 | if (NULL == statement) | 1614 | if (NULL == statement) |
1585 | { | 1615 | { |
1586 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1616 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1587 | "mysql get_stmt", statement); | 1617 | "mysql get_stmt", statement); |
1588 | return GNUNET_SYSERR; | 1618 | return GNUNET_SYSERR; |
1589 | } | 1619 | } |
@@ -1599,7 +1629,7 @@ counters_state_get (void *cls, | |||
1599 | stmt, | 1629 | stmt, |
1600 | params_select)) | 1630 | params_select)) |
1601 | { | 1631 | { |
1602 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1632 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1603 | "mysql execute prepared", statement); | 1633 | "mysql execute prepared", statement); |
1604 | return GNUNET_SYSERR; | 1634 | return GNUNET_SYSERR; |
1605 | } | 1635 | } |
@@ -1614,14 +1644,14 @@ counters_state_get (void *cls, | |||
1614 | 1644 | ||
1615 | if (GNUNET_OK != ret) | 1645 | if (GNUNET_OK != ret) |
1616 | { | 1646 | { |
1617 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1647 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1618 | "mysql extract_result", statement); | 1648 | "mysql extract_result", statement); |
1619 | return GNUNET_SYSERR; | 1649 | return GNUNET_SYSERR; |
1620 | } | 1650 | } |
1621 | 1651 | ||
1622 | if (0 != mysql_stmt_reset (statement)) | 1652 | if (0 != mysql_stmt_reset (statement)) |
1623 | { | 1653 | { |
1624 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1654 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1625 | "mysql_stmt_reset", statement); | 1655 | "mysql_stmt_reset", statement); |
1626 | return GNUNET_SYSERR; | 1656 | return GNUNET_SYSERR; |
1627 | } | 1657 | } |
@@ -1647,7 +1677,7 @@ state_assign (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *stmt, | |||
1647 | 1677 | ||
1648 | if (NULL == statement) | 1678 | if (NULL == statement) |
1649 | { | 1679 | { |
1650 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1680 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1651 | "mysql get_stmt", statement); | 1681 | "mysql get_stmt", statement); |
1652 | return GNUNET_SYSERR; | 1682 | return GNUNET_SYSERR; |
1653 | } | 1683 | } |
@@ -1655,7 +1685,7 @@ state_assign (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *stmt, | |||
1655 | struct GNUNET_MY_QueryParam params[] = { | 1685 | struct GNUNET_MY_QueryParam params[] = { |
1656 | GNUNET_MY_query_param_auto_from_type (channel_key), | 1686 | GNUNET_MY_query_param_auto_from_type (channel_key), |
1657 | GNUNET_MY_query_param_string (name), | 1687 | GNUNET_MY_query_param_string (name), |
1658 | GNUNET_MY_query_param_auto_from_type (value_size), | 1688 | GNUNET_MY_query_param_auto_from_type (value), |
1659 | GNUNET_MY_query_param_end | 1689 | GNUNET_MY_query_param_end |
1660 | }; | 1690 | }; |
1661 | 1691 | ||
@@ -1665,14 +1695,14 @@ state_assign (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *stmt, | |||
1665 | 1695 | ||
1666 | if (GNUNET_OK != ret) | 1696 | if (GNUNET_OK != ret) |
1667 | { | 1697 | { |
1668 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1698 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1669 | "mysql execute prepared", statement); | 1699 | "mysql execute prepared", statement); |
1670 | return GNUNET_SYSERR; | 1700 | return GNUNET_SYSERR; |
1671 | } | 1701 | } |
1672 | 1702 | ||
1673 | if (0 != mysql_stmt_reset (statement)) | 1703 | if (0 != mysql_stmt_reset (statement)) |
1674 | { | 1704 | { |
1675 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1705 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1676 | "mysql_stmt_reset", statement); | 1706 | "mysql_stmt_reset", statement); |
1677 | return GNUNET_SYSERR; | 1707 | return GNUNET_SYSERR; |
1678 | } | 1708 | } |
@@ -1691,7 +1721,7 @@ update_message_id (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *s | |||
1691 | 1721 | ||
1692 | if (NULL == statement) | 1722 | if (NULL == statement) |
1693 | { | 1723 | { |
1694 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1724 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1695 | "mysql get_stmt", statement); | 1725 | "mysql get_stmt", statement); |
1696 | return GNUNET_SYSERR; | 1726 | return GNUNET_SYSERR; |
1697 | } | 1727 | } |
@@ -1706,14 +1736,14 @@ update_message_id (struct Plugin *plugin, struct GNUNET_MYSQL_StatementHandle *s | |||
1706 | stmt, | 1736 | stmt, |
1707 | params)) | 1737 | params)) |
1708 | { | 1738 | { |
1709 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1739 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1710 | "mysql execute prepared", statement); | 1740 | "mysql execute prepared", statement); |
1711 | return GNUNET_SYSERR; | 1741 | return GNUNET_SYSERR; |
1712 | } | 1742 | } |
1713 | 1743 | ||
1714 | if (0 != mysql_stmt_reset (statement)) | 1744 | if (0 != mysql_stmt_reset (statement)) |
1715 | { | 1745 | { |
1716 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 1746 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1717 | "mysql_stmt_reset", statement); | 1747 | "mysql_stmt_reset", statement); |
1718 | return GNUNET_SYSERR; | 1748 | return GNUNET_SYSERR; |
1719 | } | 1749 | } |
@@ -1928,6 +1958,7 @@ state_get (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key, | |||
1928 | { | 1958 | { |
1929 | struct Plugin *plugin = cls; | 1959 | struct Plugin *plugin = cls; |
1930 | int ret = GNUNET_SYSERR; | 1960 | int ret = GNUNET_SYSERR; |
1961 | int sql_ret ; | ||
1931 | 1962 | ||
1932 | struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_state_one; | 1963 | struct GNUNET_MYSQL_StatementHandle *stmt = plugin->select_state_one; |
1933 | MYSQL_STMT *statement = NULL; | 1964 | MYSQL_STMT *statement = NULL; |
@@ -1940,19 +1971,39 @@ state_get (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key, | |||
1940 | GNUNET_MY_query_param_end | 1971 | GNUNET_MY_query_param_end |
1941 | }; | 1972 | }; |
1942 | 1973 | ||
1943 | if (GNUNET_OK != GNUNET_MY_exec_prepared (plugin->mc, | 1974 | void *value_current = NULL; |
1944 | stmt, | 1975 | size_t value_size = 0; |
1945 | params_select)) | ||
1946 | { | ||
1947 | 1976 | ||
1948 | } | 1977 | struct GNUNET_MY_ResultSpec results[] = { |
1978 | GNUNET_MY_result_spec_variable_size (&value_current, &value_size), | ||
1979 | GNUNET_MY_result_spec_end | ||
1980 | }; | ||
1981 | |||
1982 | GNUNET_MY_exec_prepared (plugin->mc, | ||
1983 | stmt, | ||
1984 | params_select); | ||
1949 | 1985 | ||
1950 | ret = cb (cb_cls, name, sqlite3_column_blob (stmt, 0), | 1986 | |
1951 | sqlite3_column_bytes (stmt, 0)); | 1987 | sql_ret = GNUNET_MY_extract_result (stmt, |
1988 | results); | ||
1989 | |||
1990 | switch (sql_ret) | ||
1991 | { | ||
1992 | case GNUNET_NO: | ||
1993 | ret = GNUNET_NO; | ||
1994 | break; | ||
1995 | case GNUNET_YES: | ||
1996 | ret = cb (cb_cls, name, value_current, | ||
1997 | value_size); | ||
1998 | break; | ||
1999 | default: | ||
2000 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | ||
2001 | "mysql extract_result", statement); | ||
2002 | } | ||
1952 | 2003 | ||
1953 | if (0 != mysql_stmt_reset (statement)) | 2004 | if (0 != mysql_stmt_reset (statement)) |
1954 | { | 2005 | { |
1955 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 2006 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1956 | "mysql_stmt_reset", statement); | 2007 | "mysql_stmt_reset", statement); |
1957 | return GNUNET_SYSERR; | 2008 | return GNUNET_SYSERR; |
1958 | } | 2009 | } |
@@ -1982,7 +2033,7 @@ state_get_prefix (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_ | |||
1982 | 2033 | ||
1983 | if (NULL == statement) | 2034 | if (NULL == statement) |
1984 | { | 2035 | { |
1985 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 2036 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
1986 | "mysql get_stmt", statement); | 2037 | "mysql get_stmt", statement); |
1987 | return GNUNET_SYSERR; | 2038 | return GNUNET_SYSERR; |
1988 | } | 2039 | } |
@@ -1997,26 +2048,49 @@ state_get_prefix (void *cls, const struct GNUNET_CRYPTO_EddsaPublicKey *channel_ | |||
1997 | GNUNET_MY_query_param_end | 2048 | GNUNET_MY_query_param_end |
1998 | }; | 2049 | }; |
1999 | 2050 | ||
2000 | int sql_ret; | 2051 | char *name2 = ""; |
2052 | void *value_current = NULL; | ||
2053 | size_t value_size = 0; | ||
2054 | |||
2055 | struct GNUNET_MY_ResultSpec results[] = { | ||
2056 | GNUNET_MY_result_spec_string (&name2), | ||
2057 | GNUNET_MY_result_spec_variable_size (&value_current, &value_size), | ||
2058 | GNUNET_MY_result_spec_end | ||
2059 | }; | ||
2001 | 2060 | ||
2002 | sql_ret = GNUNET_MY_exec_prepared (plugin->mc, | 2061 | int sql_ret; |
2003 | stmt, | ||
2004 | params_select); | ||
2005 | 2062 | ||
2006 | if (GNUNET_OK != sql_ret) | 2063 | do |
2007 | { | 2064 | { |
2008 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 2065 | GNUNET_MY_exec_prepared (plugin->mc, |
2009 | "mysql exec_prepared", statement); | 2066 | stmt, |
2010 | return GNUNET_SYSERR; | 2067 | params_select); |
2068 | sql_ret = GNUNET_MY_extract_result (stmt, | ||
2069 | results); | ||
2070 | switch (sql_ret) | ||
2071 | { | ||
2072 | case GNUNET_NO: | ||
2073 | if (ret != GNUNET_OK) | ||
2074 | ret = GNUNET_NO; | ||
2075 | break; | ||
2076 | case GNUNET_YES: | ||
2077 | ret = cb (cb_cls, (const char *) name2, | ||
2078 | value_current, | ||
2079 | value_size); | ||
2080 | |||
2081 | if (ret != GNUNET_YES) | ||
2082 | sql_ret = GNUNET_NO; | ||
2083 | break; | ||
2084 | default: | ||
2085 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | ||
2086 | "mysql extract_result", statement); | ||
2087 | } | ||
2011 | } | 2088 | } |
2012 | 2089 | while (sql_ret == GNUNET_YES); | |
2013 | ret = cb (cb_cls, (const char *) sqlite3_column_text (stmt, 0), | ||
2014 | sqlite3_column_blob (stmt, 1), | ||
2015 | sqlite3_column_bytes (stmt, 1)); | ||
2016 | 2090 | ||
2017 | if (0 != mysql_stmt_reset (statement)) | 2091 | if (0 != mysql_stmt_reset (statement)) |
2018 | { | 2092 | { |
2019 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 2093 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
2020 | "mysql_stmt_reset", statement); | 2094 | "mysql_stmt_reset", statement); |
2021 | return GNUNET_SYSERR; | 2095 | return GNUNET_SYSERR; |
2022 | } | 2096 | } |
@@ -2046,7 +2120,7 @@ state_get_signed (void *cls, | |||
2046 | statement = GNUNET_MYSQL_statement_get_stmt (stmt); | 2120 | statement = GNUNET_MYSQL_statement_get_stmt (stmt); |
2047 | if (NULL == statement) | 2121 | if (NULL == statement) |
2048 | { | 2122 | { |
2049 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 2123 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
2050 | "mysql get_stmt", statement); | 2124 | "mysql get_stmt", statement); |
2051 | return GNUNET_SYSERR; | 2125 | return GNUNET_SYSERR; |
2052 | } | 2126 | } |
@@ -2058,24 +2132,48 @@ state_get_signed (void *cls, | |||
2058 | 2132 | ||
2059 | int sql_ret; | 2133 | int sql_ret; |
2060 | 2134 | ||
2061 | sql_ret = GNUNET_MY_exec_prepared (plugin->mc, | 2135 | char *name = ""; |
2062 | stmt, | 2136 | void *value_signed = NULL; |
2063 | params_select); | 2137 | size_t value_size = 0; |
2138 | |||
2139 | struct GNUNET_MY_ResultSpec results[] = { | ||
2140 | GNUNET_MY_result_spec_string (&name), | ||
2141 | GNUNET_MY_result_spec_variable_size (&value_signed, &value_size), | ||
2142 | GNUNET_MY_result_spec_end | ||
2143 | }; | ||
2064 | 2144 | ||
2065 | if (GNUNET_OK != sql_ret) | 2145 | do |
2066 | { | 2146 | { |
2067 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 2147 | GNUNET_MY_exec_prepared (plugin->mc, |
2068 | "mysql_exec_prepared", statement); | 2148 | stmt, |
2069 | return GNUNET_SYSERR; | 2149 | params_select); |
2070 | } | 2150 | sql_ret = GNUNET_MY_extract_result (stmt, |
2151 | results); | ||
2071 | 2152 | ||
2072 | ret = cb (cb_cls, (const char *) sqlite3_column_text (stmt, 0), | 2153 | switch (sql_ret) |
2073 | sqlite3_column_blob (stmt, 1), | 2154 | { |
2074 | sqlite3_column_bytes (stmt, 1)); | 2155 | case GNUNET_NO: |
2156 | if (ret != GNUNET_OK) | ||
2157 | ret = GNUNET_NO; | ||
2158 | break; | ||
2159 | case GNUNET_YES: | ||
2160 | ret = cb (cb_cls, (const char *) name, | ||
2161 | value_signed, | ||
2162 | value_size); | ||
2163 | |||
2164 | if (ret != GNUNET_YES) | ||
2165 | sql_ret = GNUNET_NO; | ||
2166 | break; | ||
2167 | default: | ||
2168 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | ||
2169 | "mysql extract_result", statement); | ||
2170 | } | ||
2171 | } | ||
2172 | while (sql_ret == GNUNET_YES); | ||
2075 | 2173 | ||
2076 | if (0 != mysql_stmt_reset (statement)) | 2174 | if (0 != mysql_stmt_reset (statement)) |
2077 | { | 2175 | { |
2078 | LOG_MYSQL (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, | 2176 | LOG_MYSQL(plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, |
2079 | "mysql_stmt_reset", statement); | 2177 | "mysql_stmt_reset", statement); |
2080 | return GNUNET_SYSERR; | 2178 | return GNUNET_SYSERR; |
2081 | } | 2179 | } |
@@ -2091,7 +2189,7 @@ state_get_signed (void *cls, | |||
2091 | * @return NULL on error, otherwise the plugin context | 2189 | * @return NULL on error, otherwise the plugin context |
2092 | */ | 2190 | */ |
2093 | void * | 2191 | void * |
2094 | libgnunet_plugin_psycstore_sqlite_init (void *cls) | 2192 | libgnunet_plugin_psycstore_mysql_init (void *cls) |
2095 | { | 2193 | { |
2096 | static struct Plugin plugin; | 2194 | static struct Plugin plugin; |
2097 | const struct GNUNET_CONFIGURATION_Handle *cfg = cls; | 2195 | const struct GNUNET_CONFIGURATION_Handle *cfg = cls; |
@@ -2143,7 +2241,7 @@ libgnunet_plugin_psycstore_sqlite_init (void *cls) | |||
2143 | * @return Always NULL | 2241 | * @return Always NULL |
2144 | */ | 2242 | */ |
2145 | void * | 2243 | void * |
2146 | libgnunet_plugin_psycstore_sqlite_done (void *cls) | 2244 | libgnunet_plugin_psycstore_mysql_done (void *cls) |
2147 | { | 2245 | { |
2148 | struct GNUNET_PSYCSTORE_PluginFunctions *api = cls; | 2246 | struct GNUNET_PSYCSTORE_PluginFunctions *api = cls; |
2149 | struct Plugin *plugin = api->cls; | 2247 | struct Plugin *plugin = api->cls; |