int mail_session_get(const char *id, struct mail_session **session_r, const char **error_r) { const char *new_args[5]; int ret; if ((ret = mail_session_lookup(id, session_r, error_r)) != 0) return ret; /* Create a new dummy session to avoid repeated warnings */ new_args[0] = id; new_args[1] = ""; /* username */ new_args[2] = ""; /* service */ new_args[3] = "0"; /* pid */ new_args[4] = NULL; if (mail_session_connect_parse(new_args, error_r) < 0) i_unreached(); if (mail_session_lookup(id, session_r, error_r) != 1) i_unreached(); return 0; }
int mail_session_disconnect_parse(const char *const *args, const char **error_r) { struct mail_session *session; int ret; /* <session guid> */ if ((ret = mail_session_lookup(args[0], &session, error_r)) <= 0) return ret; mail_session_disconnect(session); return 0; }