On 14 August 2017 at 10:43, <[email protected]> wrote:
> Repository: incubator-ponymail
> Updated Branches:
> refs/heads/master a5c98e735 -> f09765481
>
>
> Address null entries in favorites list
>
> This fixes #392 by both using the proper call to remove
> favorite entries when needed, and also pruning existing
> corrupted entries when an account is loaded.
>
>
> Project: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/repo
> Commit:
> http://git-wip-us.apache.org/repos/asf/incubator-ponymail/commit/f0976548
> Tree: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/tree/f0976548
> Diff: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/diff/f0976548
>
> Branch: refs/heads/master
> Commit: f09765481bb35c94b005c42f70a28894462a9430
> Parents: a5c98e7
> Author: Daniel Gruno <[email protected]>
> Authored: Mon Aug 14 11:43:10 2017 +0200
> Committer: Daniel Gruno <[email protected]>
> Committed: Mon Aug 14 11:43:10 2017 +0200
>
> ----------------------------------------------------------------------
> CHANGELOG.md | 1 +
> site/api/lib/user.lua | 13 +++++++++++++
> site/api/preferences.lua | 2 +-
> 3 files changed, 15 insertions(+), 1 deletion(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/f0976548/CHANGELOG.md
> ----------------------------------------------------------------------
> diff --git a/CHANGELOG.md b/CHANGELOG.md
> index e3a6b10..05fab5d 100644
> --- a/CHANGELOG.md
> +++ b/CHANGELOG.md
> @@ -1,4 +1,5 @@
> ## CHANGES in 0.10:
> +- Fixed an issue where favorites could contain null entries due to missing
> GC (#392)
> - Added sample configs for Pony Mail (#374)
> - Renamed ll.py to list-lists.py (#378)
> - ID generators have now been split into a separate library (generators.py)
>
> http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/f0976548/site/api/lib/user.lua
> ----------------------------------------------------------------------
> diff --git a/site/api/lib/user.lua b/site/api/lib/user.lua
> index 57c65ac..e441476 100644
> --- a/site/api/lib/user.lua
> +++ b/site/api/lib/user.lua
> @@ -17,6 +17,7 @@
>
> local elastic = require 'lib/elastic'
> local config = require 'lib/config'
> +local JSON = require 'cjson'
>
> -- allow local override of secure cookie attribute
> -- Note: the config item is named to make it more obvious that enabling it
> is not recommended
> @@ -32,6 +33,18 @@ local function getUser(r, override)
> if override or (cookie and #cookie >= 40 and cid) then
> local js = elastic.get('account', r:sha1(override or cid), true)
> if js and js.credentials and (override or (cookie ==
> js.internal.cookie)) then
> +
> + -- Issue #392: favorites may contain null entries, cull them.
> + if type(js.favorites) == "table" then
> + local jsfav = {}
> + for k, v in pairs(js.favorites) do
> + if v and v ~= JSON.null then
> + table.insert(jsfav, v)
> + end
> + end
> + js.favorites = jsfav
> + end
> +
The above is a temporary fix and should be documented as such.
It's not needed for new installations, nor ones where the erroneous
null entries have been manually removed from the database.
> login = {
> credentials = {
> email = js.credentials.email,
>
> http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/f0976548/site/api/preferences.lua
> ----------------------------------------------------------------------
> diff --git a/site/api/preferences.lua b/site/api/preferences.lua
> index 384cf1e..7f20f65 100644
> --- a/site/api/preferences.lua
> +++ b/site/api/preferences.lua
> @@ -253,7 +253,7 @@ Pony Mail - Email for Ponies and People.
> -- ensure it's here....
> for k, v in pairs(favs) do
> if v == rem then
> - favs[k] = nil
> + table.remove(favs, k)
> break
> end
> end
>