if (ctl->server.poll_count++ % ctl->server.interval)
{
if (outlevel >= O_VERBOSE)
- fprintf(stderr,
- "fetchmail: interval not reached, not querying %s\n",
+ error(0, -1,
+ "interval not reached, not querying %s",
ctl->server.pollname);
continue;
}
}
#endif /* POP3_ENABLE */
}
- else if (querystatus == PS_AUTHFAIL) {
- /* have it logged with priority LOG_ALERT */
- error(querystatus, -1, "Authentication failed for %s@%s",
- ctl->remotename, visbuf(ctl->server.pollname));
- }
else if (!check_only &&
((querystatus!=PS_NOMAIL) || (outlevel==O_DEBUG)))
error(0, 0, "Query status=%d", querystatus);
*/
if (run.poll_interval)
{
- if (outlevel >= O_VERBOSE)
- {
- time_t now;
+ /*
+ * Because passwords can expire, it may happen that *all*
+ * hosts are now out of the loop due to authfail
+ * conditions. If this happens daemon-mode fetchmail
+ * should softly and silently vanish away, rather than
+ * spinning uselessly.
+ */
+ int auth_ok = 0;
- time(&now);
- fprintf(stderr, "fetchmail: sleeping at %s", ctime(&now));
+ for (ctl = querylist; ctl; ctl = ctl->next)
+ if (!ctl->authfailcount)
+ auth_ok++;
+ if (!auth_ok)
+ {
+ error(0, -1, "All authentications have failed. Exiting.");
+ exit(PS_AUTHFAIL);
}
+ if (outlevel >= O_VERBOSE)
+ error(0, -1, "fetchmail: sleeping at %s", rfc822timestamp());
+
/*
* With this simple hack, we make it possible for a foreground
* fetchmail to wake up one in daemon mode. What we want is the
signal(SIGHUP, SIG_IGN);
if (outlevel >= O_VERBOSE)
- {
- time_t now;
-
- time(&now);
- fprintf(stderr, "fetchmail: awakened at %s", ctime(&now));
- }
+ error(0, -1, "awakened at %s", rfc822timestamp());
}
} while
(run.poll_interval);
if (outlevel >= O_VERBOSE)
- fprintf(stderr,"fetchmail: normal termination, status %d\n",
+ error(0, -1, "normal termination, status %d",
successes ? PS_SUCCESS : querystatus);
termhook(0);
FLAG_MERGE(server.interface_pair);
#endif /* linux */
+ FLAG_MERGE(server.plugin);
+ FLAG_MERGE(server.plugout);
FLAG_MERGE(wildcard);
FLAG_MERGE(remotename);
FLAG_MERGE(password);
time_t now;
time(&now);
- fprintf(stderr, "fetchmail: %s querying %s (protocol %s) at %s",
+ error(0, -1, "fetchmail: %s querying %s (protocol %s) at %s",
RELEASE_ID,
ctl->server.pollname, showproto(ctl->server.protocol), ctime(&now));
}
#ifdef POP2_ENABLE
return(doPOP2(ctl));
#else
- fprintf(stderr, "POP2 support is not configured.\n");
+ error(0, -1, "POP2 support is not configured.\n");
return(PS_PROTOCOL);
#endif /* POP2_ENABLE */
break;
#ifdef POP3_ENABLE
return(doPOP3(ctl));
#else
- fprintf(stderr, "POP3 support is not configured.\n");
+ error(0, -1, "POP3 support is not configured.\n");
return(PS_PROTOCOL);
#endif /* POP3_ENABLE */
break;
#ifdef IMAP_ENABLE
return(doIMAP(ctl));
#else
- fprintf(stderr, "IMAP support is not configured.\n");
+ error(0, -1, "IMAP support is not configured.\n");
return(PS_PROTOCOL);
#endif /* IMAP_ENABLE */
break;
case P_ETRN:
#ifndef ETRN_ENABLE
- fprintf(stderr, "ETRN support is not configured.\n");
+ error(0, -1, "ETRN support is not configured.\n");
return(PS_PROTOCOL);
#else
#ifdef HAVE_GETHOSTBYNAME
return(doETRN(ctl));
#else
- fprintf(stderr, "Cannot support ETRN without gethostbyname(2).\n");
+ error(0, -1, "Cannot support ETRN without gethostbyname(2).\n");
return(PS_PROTOCOL);
#endif /* HAVE_GETHOSTBYNAME */
#endif /* ETRN_ENABLE */
printf(" No monitor interface specified.\n");
#endif
+ if (ctl->server.plugin)
+ printf(" Server connections will be mode via plugin %s (--plugin %s).\n", ctl->server.plugin, ctl->server.plugin);
+ else if (outlevel >= O_VERBOSE)
+ printf(" No plugin command specified.\n");
+ if (ctl->server.plugout)
+ printf(" Listener connections will be mode via plugout %s (--plugout %s).\n", ctl->server.plugout, ctl->server.plugout);
+ else if (outlevel >= O_VERBOSE)
+ printf(" No plugout command specified.\n");
+
if (ctl->server.protocol > P_POP2 && (ctl->server.protocol != P_ETRN))
if (!ctl->oldsaved)
printf(" No UIDs saved from this host.\n");
printf(" %d UIDs saved.\n", count);
if (outlevel >= O_VERBOSE)
for (idp = ctl->oldsaved; idp; idp = idp->next)
- fprintf(stderr, "\t%s\n", idp->id);
+ printf("\t%s\n", idp->id);
}
if (ctl->properties)