Mercurial > prosody-modules
diff mod_storage_gdbm/mod_storage_gdbm.lua @ 1630:0fcd63818aa1
mod_storage_gdbm: Make write operation delete data when passed 'nil' as value instead of storing a literal "nil" string
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 25 Mar 2015 17:39:29 +0100 |
parents | 36eb0dbea7ba |
children | 98427ed3d53f |
line wrap: on
line diff
--- a/mod_storage_gdbm/mod_storage_gdbm.lua Wed Mar 25 17:37:52 2015 +0100 +++ b/mod_storage_gdbm/mod_storage_gdbm.lua Wed Mar 25 17:39:29 2015 +0100 @@ -42,7 +42,13 @@ local keyval_mt = { __index = keyval, suffix = ".db" }; function keyval:set(user, value) - local ok, err = g_set(self._db, user or "@", serialize(value)); + if type(value) == "table" and next(value) == nil then + value = nil; + end + if value ~= nil then + value = serialize(value); + end + local ok, err = (value and g_set or g_del)(self._db, user or "@", value); if not ok then return nil, err; end return true; end