diff options
Diffstat (limited to 'src/mail.c')
-rw-r--r-- | src/mail.c | 20 |
1 files changed, 12 insertions, 8 deletions
@@ -269,29 +269,32 @@ get_recipient (struct access_method *method, struct file_triplet *trp, mu_address_t rcpt = NULL; char *text; int rc; - + void *md; + if (method->type == method_none) { *errp = "access method is not configured"; return NULL; } - if (method_init (method)) + md = method_open (method); + if (!md) { - *errp = "failed to initialize access method"; + *errp = "failed to open access method"; return NULL; } make_default_meta (def, trp->user, trp->project); - meta_escape (method, def); - text = meta_expand_string (method->param[1], def, NULL); + meta_escape (method, md, def); + text = meta_expand_string (method->query, def, NULL); meta_free (def); - rc = method_run (method, text); + rc = method_run (method, md, text); free (text); if (rc) { *errp = "cannot obtain recipient emails"; + method_close (method, md); return NULL; } @@ -307,18 +310,19 @@ get_recipient (struct access_method *method, struct file_triplet *trp, for (i = 0; i < nrows; i++) { mu_address_t addr; - const char *str = method_result (method, i, 0); + const char *str = method_result (method, md, i, 0); if (mu_address_create (&addr, str)) continue; if (ncols > 0) { - str = method_result (method, i, 1); + str = method_result (method, md, i, 1); if (str) mu_address_set_personal (addr, 1, str); } mu_address_union (&rcpt, addr); mu_address_destroy (&addr); } + method_close (method, md); return rcpt; } |