diff options
author | Matthew Wild <mwild1@gmail.com> | 2015-07-08 15:25:42 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2015-07-08 15:25:42 +0100 |
commit | c38e034cf497a13f5f813b7d5217102ffb3677d9 (patch) | |
tree | 861e27cbc56dbdb20c61ecbbc32d148bfb400ca6 /util/sql.lua | |
parent | fb93b9e90e5970d4593b649a23adc799cd4312db (diff) | |
download | prosody-c38e034cf497a13f5f813b7d5217102ffb3677d9.tar.gz prosody-c38e034cf497a13f5f813b7d5217102ffb3677d9.zip |
util.sql: Add safety check to ensure our chosen connection charset is actually being used (MySQL)
Diffstat (limited to 'util/sql.lua')
-rw-r--r-- | util/sql.lua | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/util/sql.lua b/util/sql.lua index 693b67d9..f934bbdf 100644 --- a/util/sql.lua +++ b/util/sql.lua @@ -286,6 +286,18 @@ function engine:set_encoding() -- to UTF-8 return ok, err; end + if driver == "MySQL" then + local ok, actual_charset = self:transaction(function () + return self:select"SHOW SESSION VARIABLES LIKE 'character_set_client'"; + end); + for row in actual_charset do + if row[2] ~= charset then + log("error", "MySQL %s is actually %q (expected %q)", row[1], row[2], charset); + return false, "Failed to set connection encoding"; + end + end + end + return true; end local engine_mt = { __index = engine }; |