#endif /* M_CRYPTHOOK */
{
regerror (rc, rx, err->data, err->dsize);
- regfree (rx);
FREE (&rx);
goto error;
}
#ifdef USE_SOCKET
void mutt_account_hook (const char* url)
{
+ /* parsing commands with URLs in an account hook can cause a recursive
+ * call. We just skip processing if this occurs. Typically such commands
+ * belong in a folder-hook -- perhaps we should warn the user. */
+ static int inhook = 0;
+
HOOK* hook;
BUFFER token;
BUFFER err;
char buf[STRING];
+ if (inhook)
+ return;
+
err.data = buf;
err.dsize = sizeof (buf);
memset (&token, 0, sizeof (token));
if ((regexec (hook->rx.rx, url, 0, NULL, 0) == 0) ^ hook->rx.not)
{
+ inhook = 1;
+
if (mutt_parse_rc_line (hook->command, &token, &err) == -1)
{
FREE (&token.data);
mutt_error ("%s", err.data);
mutt_sleep (1);
+ inhook = 0;
return;
}
+
+ inhook = 0;
}
}