case sm_SEPARATED:
case sm_DROPPING:
- warn("abandoning old feedfile after flush (%s), autodeferring",
- why ? why : "took too long to complete");
+ if (conns.count)
+ warn("abandoning old feedfile after flush (%s), autodeferring",
+ why ? why : "took too long to complete");
+ else
+ info("autodeferring after flush (%s)",
+ why ? why : "no connections");
assert(flushing_input_file);
autodefer_input_file(flushing_input_file);
return 1;
}
static void notice_processed_counts(Counts *counts, int completed,
- InputFile *ipf, const char *what) {
+ InputFile *ipf_xtra, const char *what) {
#define RCI_NOTHING(x) /* nothing */
#define RCI_TRIPLE_FMT(x) " " #x "=" RCI_TRIPLE_FMT_BASE
-#define RCI_TRIPLE_VALS(x) ,RCI_TRIPLE_VALS_BASE(ipf->counts.results, [RC_##x])
+#define RCI_TRIPLE_VALS(x) , RCI_TRIPLE_VALS_BASE(counts->results, [RC_##x])
-#define CNT(art,rc) (ipf->counts.results[art_##art][RC_##rc])
+#define CNT(art,rc) (counts->results[art_##art][RC_##rc])
- char *inprog= completed
- ? xasprintf("%s","") /* GCC produces a stupid warning for printf("") ! */
- : xasprintf(" inprogress=%ld", ipf->inprogress);
- char *autodefer= ipf && ipf->autodefer >= 0
- ? xasprintf(" autodeferred=%ld", ipf->autodefer)
- : xasprintf("%s","");
+ char *inprog= ipf_xtra && !completed
+ ? masprintf(" inprogress=%ld", ipf_xtra->inprogress)
+ : masprintf("%s",""); /* GCC produces a stupid warning for printf("") ! */
+ char *autodefer= ipf_xtra && ipf_xtra->autodefer >= 0
+ ? masprintf(" autodeferred=%ld", ipf_xtra->autodefer)
+ : masprintf("%s","");
- info("%s %s read=%d (+bl=%d,+err=%d)%s%s"
+ notice("%s %s read=%d (+bl=%d,+err=%d)%s%s"
" missing=%d offered=%d (ch=%d,nc=%d) accepted=%d (ch=%d,nc=%d)"
RESULT_COUNTS(RCI_NOTHING, RCI_TRIPLE_FMT)
,
completed?"completed":"processed", what,
- ipf->counts.events[read_ok], ipf->counts.events[read_blank],
- ipf->counts.events[read_err],
- inprog, autodefer, ipf->counts.events[nooffer_missing],
+ counts->events[read_ok], counts->events[read_blank],
+ counts->events[read_err],
+ inprog, autodefer, counts->events[nooffer_missing],
CNT(Unchecked,sent) + CNT(Unsolicited,sent)
, CNT(Unchecked,sent), CNT(Unsolicited,sent),
CNT(Wanted,accepted) + CNT(Unsolicited,accepted)
RESULT_COUNTS(RCI_NOTHING, RCI_TRIPLE_VALS)
);
- memset(&ipf->counts, 0, sizeof(ipf->counts));
+ memset(counts, 0, sizeof(*counts));
free(inprog);
free(autodefer);
InputFile *ipf= backlog_input_file;
if (!inputfile_is_done(ipf)) return;
+ dbg("backlog file %p %s complete", ipf, ipf->path);
backlog_accumulate_counts(ipf);
close_input_file(ipf);
if (unlink(ipf->path)) {
assert(sms==sm_SEPARATED || sms==sm_DROPPING);
- notice_processed_inputfile(ipf,1,"feedfile");
+ notice_processed_inputfile(ipf,1,"batch");
close_defer();
}
void showstats(void) {
+ notice_conns_stats();
notice_processed_inputfile(main_input_file, 0, "feedfile");
notice_processed_inputfile(flushing_input_file, 0, "flushing");