From 0c63417c91639bc1b4677a1152cb3d79255abfc8 Mon Sep 17 00:00:00 2001 From: rd235 Date: Tue, 17 Jun 2008 13:22:02 +0000 Subject: [PATCH] Bugfix: daemonize must happen before stack_init & removed useless calls git-svn-id: https://vde.svn.sourceforge.net/svnroot/vde/trunk@288 d37a7db1-d92d-0410-89df-f68f52f87b57 --- vdetelweb/telnet.c | 10 ---------- vdetelweb/vdetelweb.c | 14 +++++++------- vdetelweb/web.c | 10 ---------- 3 files changed, 7 insertions(+), 27 deletions(-) diff --git a/vdetelweb/telnet.c b/vdetelweb/telnet.c index f16703a..087a735 100644 --- a/vdetelweb/telnet.c +++ b/vdetelweb/telnet.c @@ -645,22 +645,12 @@ void telnetaccept(int fn,int fd,int vdefd) void telnet_init(int vdefd) { int sockfd; - int one=1; struct sockaddr_in serv_addr; sockfd=lwip_socket(AF_INET, SOCK_STREAM, 0); if (!sockfd) { printlog(LOG_ERR,"telnet socket err: %s",strerror(errno)); } - if(setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (char *) &one, - sizeof(one)) < 0){ - printlog(LOG_ERR,"telnet setsockopt: %s",strerror(errno)); - return; - } - if(fcntl(sockfd, F_SETFL, O_NONBLOCK) < 0){ - printlog(LOG_ERR,"Setting O_NONBLOCK telnet: %s",strerror(errno)); - return; - } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; diff --git a/vdetelweb/vdetelweb.c b/vdetelweb/vdetelweb.c index a9eb199..f05de68 100644 --- a/vdetelweb/vdetelweb.c +++ b/vdetelweb/vdetelweb.c @@ -589,6 +589,13 @@ int main(int argc, char *argv[]) } strcat(pidfile_path, "/"); + /* call daemon before starting the stack otherwise the stack threads + * does not get inherited by the forked process */ + if (daemonize && daemon(0, 1)) { + printlog(LOG_ERR,"daemon: %s",strerror(errno)); + exit(1); + } + lwipstack=lwip_stack_new(); lwip_stack_set(lwipstack); @@ -623,17 +630,10 @@ int main(int argc, char *argv[]) } } - - if (daemonize && daemon(0, 1)) { - printlog(LOG_ERR,"daemon: %s",strerror(errno)); - exit(1); - } - /* once here, we're sure we're the true process which will continue as a * server: save PID file if needed */ if(pidfile) save_pidfile(); - if (telnet) telnet_init(vdefd); if (web) diff --git a/vdetelweb/web.c b/vdetelweb/web.c index 1ce8925..2ec9a96 100644 --- a/vdetelweb/web.c +++ b/vdetelweb/web.c @@ -674,22 +674,12 @@ void webaccept(int fn,int fd,int vdefd) void web_init(int vdefd) { int sockfd; - int one=1; struct sockaddr_in serv_addr; sockfd=lwip_socket(AF_INET, SOCK_STREAM, 0); if (!sockfd) { printlog(LOG_ERR,"web socket err: %s",strerror(errno)); } - if(setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (char *) &one, - sizeof(one)) < 0){ - printlog(LOG_ERR,"web setsockopt: %s",strerror(errno)); - return; - } - if(fcntl(sockfd, F_SETFL, O_NONBLOCK) < 0){ - printlog(LOG_ERR,"Setting O_NONBLOCK web: %s",strerror(errno)); - return; - } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; -- 2.11.4.GIT