瀏覽代碼

server: fix server not exit issue on asus router

Nick Peng 3 年之前
父節點
當前提交
301ab3ba10
共有 2 個文件被更改,包括 12 次插入1 次删除
  1. 7 1
      package/optware/S50smartdns
  2. 5 0
      src/smartdns.c

+ 7 - 1
package/optware/S50smartdns

@@ -348,7 +348,13 @@ case "$1" in
 		fi
 
 		if [ ! -d "/proc/$pid" ]; then
-			return 0;
+			return 0
+		fi
+
+		stat="$(cat /proc/${pid}/stat | awk '{print $3}' 2>/dev/null)"
+		if [ "$stat" = "Z" ]; then
+			$SLEEP $SLEEPTIME
+			return 0
 		fi
 
 		$SLEEP $SLEEPTIME 2>/dev/null

+ 5 - 0
src/smartdns.c

@@ -469,10 +469,15 @@ int main(int argc, char *argv[])
 	char config_file[MAX_LINE_LEN];
 	char pid_file[MAX_LINE_LEN];
 	int signal_ignore = 0;
+	sigset_t empty_sigblock;
 
 	safe_strncpy(config_file, SMARTDNS_CONF_FILE, MAX_LINE_LEN);
 	safe_strncpy(pid_file, SMARTDNS_PID_FILE, MAX_LINE_LEN);
 
+	/* patch for Asus router:  unblock all signal*/
+	sigemptyset(&empty_sigblock);
+    sigprocmask(SIG_SETMASK, &empty_sigblock, NULL);
+
 	while ((opt = getopt(argc, argv, "fhc:p:Svx")) != -1) {
 		switch (opt) {
 		case 'f':