🔒 Repository is read-only – file editing is disabled.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
diff -Naur a/noip2.c b/noip2.c
--- a/noip2.c 2008-11-25 20:50:09.000000000 +0100
+++ b/noip2.c 2020-10-08 20:25:58.073111470 +0200
@@ -128,7 +128,16 @@
+ November 2008 (johna) version 2.1.9
+ hardened force_update() to prevent possible buffer overflow
+ hardened autoconf() the same way
+
+ patch suggested by xenomuta@phreaker.net
+ + January 2015 (dota? =op) version 2.1.9-1
+ + added -f flag to run in foreground
+ + patch suggested by rogi@skylittlesystem.org
+
+
+ + January 2015 (dota? =op) version 2.1.9-1
+ + hack to make foreground mode work as expected
+ + patch suggested by rogi@skylittlesystem.org
*/
/////////////////////////////////////////////////////////////////////////////
@@ -217,9 +226,9 @@
#define UPDATE_SCRIPT "ducupdate.php"
#ifdef DEBUG
- #define OPTCHARS "CYU:Fc:dD:hp:u:x:SMi:K:I:z"
+ #define OPTCHARS "CYU:Fc:dD:hp:u:x:SMi:K:I:zf"
#else
- #define OPTCHARS "CYU:Fc:hp:u:x:SMi:K:I:z"
+ #define OPTCHARS "CYU:Fc:hp:u:x:SMi:K:I:zf"
#endif
#define ARGC 1
#define ARGF (1<<1)
@@ -240,10 +249,10 @@
#define GROUP 2
#define DOMAIN 3
#ifndef PREFIX
- #define PREFIX "/usr/local"
+ #define PREFIX "/usr"
#endif
-#define CONFIG_FILEPATH PREFIX"/etc"
-#define CONFIG_FILENAME PREFIX"/etc/no-ip2.conf"
+#define CONFIG_FILEPATH "/etc"
+#define CONFIG_FILENAME "/etc/no-ip2.conf"
#define CONFSTRLEN 1024
#define MAX_DEVLEN 16
#define MAX_INSTANCE 4
@@ -348,6 +357,7 @@
int debug = 0;
int timed_out = 0;
int background = 1; // new default
+int foreground_hack = 0; // FIXME: hack s2
int port_to_use = CLIENT_IP_PORT;
int socket_fd = -1;
int config_fd = -1;
@@ -551,6 +561,7 @@
fprintf(stderr, " -M permit multiple instances\n");
fprintf(stderr, " -K processID terminate instance PID\n");
fprintf(stderr, " -z activate shm dump code\n");
+ fprintf(stderr, " -f run in foreground\n");
fprintf(stderr, " -h help (this text)\n");
}
///////////////////////////////////////////////////////////////////////////
@@ -738,6 +749,10 @@
case 'z':
shm_dump_active++;
break;
+ case 'f':
+ background=1;
+ foreground_hack=1;
+ break;
default:
Usage();
exit(0);
@@ -1023,7 +1038,8 @@
char *err_string;
static int startup = 1;
- x = fork();
+ /* FIXME: hack s2 */
+ x = foreground_hack ? 0 : fork();
switch (x) {
case -1: // error
err_string = strerror(errno);
@@ -1035,13 +1051,23 @@
setsid();
if (get_shm_info() == FATALERR)
return FATALERR;
- log2syslog++;
- if (log2syslog > 0)
- fclose(stderr);
- fclose(stdout);
- fclose(stdin);
- syslog(LOG_INFO, "v%s daemon started%s\n",
- VERSION, (nat) ? " with NAT enabled" : "");
+
+ /* FIXME: hack s2 */
+ if (foreground_hack) {
+ printf("v%s daemon started%s\n",
+ VERSION, (nat) ? " with NAT enabled" : "");
+ }
+
+ else {
+ log2syslog++;
+ if (log2syslog > 0)
+ fclose(stderr);
+ fclose(stdout);
+ fclose(stdin);
+ syslog(LOG_INFO, "v%s daemon started%s\n",
+ VERSION, (nat) ? " with NAT enabled" : "");
+ }
+
while (background) {
delay = MAX(60, my_instance->interval * 60);
if (nat)
@@ -1081,7 +1107,14 @@
if (background) // signal may have reset this!
Sleep(delay);
}
- syslog(LOG_INFO, "v%s daemon ended.\n", VERSION);
+
+ /* FIXME: hack s2 */
+ if (foreground_hack)
+ printf("v%s daemon ended.\n", VERSION);
+
+ else
+ syslog(LOG_INFO, "v%s daemon ended.\n", VERSION);
+
break;
}
return SUCCESS;