* with GPLv3. If not then please let me know. -Ian Jackson.)
*/
+/*
+ * todo
+ *
+ * don't mind reconnecting if we just disconnected due to idle
+ * some weird disconnection event still investigating
+ */
+
/*
* Newsfeeds file entries should look like this:
* host.name.of.site[/exclude,exclude,...]\
/* when changing defaults, remember to update the manpage */
static const char *sitename, *remote_host;
-static const char *feedfile, *path_cli, *path_cli_dir;
+static const char *feedfile, *path_run, *path_cli, *path_cli_dir;
static int quiet_multiple=0;
static int become_daemon=1, try_filemon=1;
static int try_stream=1;
/* all these are initialised to seconds, and converted to periods in main */
static int reconnect_delay_periods=1000;
static int flushfail_retry_periods=1000;
-static int backlog_retry_minperiods=50;
+static int backlog_retry_minperiods=100;
static int backlog_spontrescan_periods=300;
static int spontaneous_flush_periods=100000;
static int max_separated_periods=2000;
main_input_file= open_input_file(feedfile);
if (!main_input_file)
- die("flush succeeded but feedfile %s does not exist!", feedfile);
+ die("flush succeeded but feedfile %s does not exist!"
+ " (this probably means feedfile does not correspond"
+ " to site %s in newsfeeds)", feedfile, sitename);
if (flushing_input_file) {
SMS(SEPARATED, max_separated_periods, "recovery flush complete");
{0,"no-filemon", 0, &try_filemon, op_setint, 0 },
{'C',"inndconf", "F", &inndconffile, op_string },
{'P',"port", "PORT", &port, op_integer },
+{0,"chdir", "DIR", &path_run, op_string },
{0,"cli", "DIR/|PATH", &path_cli, op_string },
{0,"help", 0, 0, help },
sitename= *argv++;
if (!sitename) badusage("need site name argument");
- remote_host= *argv++;
+
+ if (*argv) remote_host= *argv++;
+ else remote_host= sitename;
+
if (*argv) badusage("too many non-option arguments");
/* defaults */
if (max_bad_data_ratio < 0 || max_bad_data_ratio > 100)
badusage("bad input data ratio must be between 0..100");
max_bad_data_ratio *= 0.01;
-
- if (!feedfile) {
- feedfile= xasprintf("%s/%s",innconf->pathoutgoing,sitename);
- } else if (!feedfile[0]) {
- badusage("feed filename, if specified, must be nonempty");
- } else if (path_ends_slash(feedfile)) {
+
+ if (!path_run)
+ path_run= innconf->pathrun;
+
+ if (!feedfile) feedfile= sitename;
+ if (!feedfile[0]) badusage("feed filename, if specified, must be nonempty");
+ if (path_ends_slash(feedfile))
feedfile= xasprintf("%s%s", feedfile, sitename);
- }
+ if (feedfile[0] != '/')
+ feedfile= xasprintf("%s/%s", innconf->pathoutgoing, feedfile);
if (!path_cli) {
- path_cli_dir= xasprintf("%s/innduct", innconf->pathrun);
+ path_cli_dir= "innduct";
} else if (!path_cli[0] || !strcmp(path_cli,"none")) {
path_cli= 0; /* ok, don't then */
} else if (path_ends_slash(path_cli)) {
self_pid= getpid();
if (self_pid==-1) sysdie("getpid");
+ r= chdir(path_run);
+ if (r) sysdie("could not chdir to pathrun %s", path_run);
+
statemc_lock();
init_signals();