diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-12-22 23:46:28 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-12-22 23:46:28 +0000 |
commit | a741f54edbac05a00c06f2d0d93b2e515fb8afbc (patch) | |
tree | da59bdec57e6e973b92ac030b77f79f3886ea0eb /src/libserver/cfg_rcl.c | |
parent | 74fcdbb9a2ce41678ee39749be5b95f589634b2f (diff) | |
download | rspamd-a741f54edbac05a00c06f2d0d93b2e515fb8afbc.tar.gz rspamd-a741f54edbac05a00c06f2d0d93b2e515fb8afbc.zip |
[Rework] Kill all InternetAddressList usages
Diffstat (limited to 'src/libserver/cfg_rcl.c')
-rw-r--r-- | src/libserver/cfg_rcl.c | 43 |
1 files changed, 7 insertions, 36 deletions
diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c index 6f9e66d5c..1919160c9 100644 --- a/src/libserver/cfg_rcl.c +++ b/src/libserver/cfg_rcl.c @@ -27,6 +27,7 @@ #include "unix-std.h" #include "cryptobox.h" #include "libutil/multipattern.h" +#include "libmime/email_addr.h" #ifdef HAVE_SYSLOG_H #include <syslog.h> @@ -3129,51 +3130,19 @@ rspamd_rcl_parse_struct_mime_addr (rspamd_mempool_t *pool, GError **err) { struct rspamd_rcl_struct_parser *pd = ud; - InternetAddressList **target, *tmp_addr; + GPtrArray **target, *tmp_addr = NULL; const gchar *val; ucl_object_iter_t it; const ucl_object_t *cur; - target = (InternetAddressList **)(((gchar *)pd->user_struct) + pd->offset); - if (*target == NULL) { - *target = internet_address_list_new (); - #ifdef GMIME24 - rspamd_mempool_add_destructor (pool, - (rspamd_mempool_destruct_t) g_object_unref, - *target); - #else - rspamd_mempool_add_destructor (pool, - (rspamd_mempool_destruct_t) internet_address_list_destroy, - *target); - #endif - } - + target = (GPtrArray **)(((gchar *)pd->user_struct) + pd->offset); it = ucl_object_iterate_new (obj); while ((cur = ucl_object_iterate_safe (it, true)) != NULL) { - if (ucl_object_type (cur) == UCL_STRING) { val = ucl_object_tostring (obj); - tmp_addr = internet_address_list_parse_string (val); - - if (tmp_addr) { - internet_address_list_append (*target, tmp_addr); -#ifdef GMIME24 - g_object_unref (tmp_addr); -#else - internet_address_list_destroy (tmp_addr); -#endif - } - else { - g_set_error (err, - CFG_RCL_ERROR, - EINVAL, - "cannot parse inet address: %s in %s", val, - ucl_object_key (obj)); - ucl_object_iterate_free (it); - - return FALSE; - } + tmp_addr = rspamd_email_address_from_mime (pool, val, + strlen (val), tmp_addr); } else { g_set_error (err, @@ -3188,6 +3157,8 @@ rspamd_rcl_parse_struct_mime_addr (rspamd_mempool_t *pool, } ucl_object_iterate_free (it); + *target = tmp_addr; + return TRUE; } |