thermferm/server.c

changeset 646
e3edc783006b
parent 645
49eb753a958b
child 652
16d3d4b58b5b
--- a/thermferm/server.c	Sat Mar 23 12:18:14 2024 +0100
+++ b/thermferm/server.c	Sat Mar 23 16:01:24 2024 +0100
@@ -44,11 +44,12 @@
 extern pthread_mutex_t	mutexes[5];
 
 
-int			s;		/* connected socket			*/
-int			ls;		/* listen socket			*/
+int			my_server_state = 0;	/* Thread running state		*/
+int			s;			/* connected socket		*/
+int			ls;			/* listen socket		*/
 
-struct sockaddr_in	myaddr_in;	/* for local socket address             */
-struct sockaddr_in	peeraddr_in;	/* for peer socket address              */
+struct sockaddr_in	myaddr_in;		/* for local socket address	*/
+struct sockaddr_in	peeraddr_in;		/* for peer socket address	*/
 
 struct hostent		*hp;
 
@@ -2143,15 +2144,12 @@
 
 
 
-#ifdef HAVE_WIRINGPI_H
-PI_THREAD (my_server_loop)
-#else
 void *my_server_loop(void *threadid)
-#endif
 {
     socklen_t   addrlen;
     int         optval = 1;
 
+    my_server_state = 1;
     syslog(LOG_NOTICE, "Thread my_server_loop started");
     if (debug)
 	fprintf(stdout, "Thread my_server_loop started\n");
@@ -2166,30 +2164,35 @@
     if (ls == -1) {
 	syslog(LOG_NOTICE, "Can't create listen socket: %s", strerror(errno));
 	fprintf(stderr, "Can't create listen socket: %s\n", strerror(errno));
+	my_server_state = 0;
 	return 0;
     }
 
     if (setsockopt(ls, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(optval)) == -1) {
 	syslog(LOG_NOTICE, "Can't setsockopt SO_KEEPALIVE socket: %s", strerror(errno));
 	close(ls);
+	my_server_state = 0;
 	return 0;
     }
 
     if (setsockopt(ls, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) == -1) {
 	syslog(LOG_NOTICE, "Can't setsockopt SO_REUSEADDR socket: %s", strerror(errno));
 	close(ls);
+	my_server_state = 0;
 	return 0;
     }
 
     if (bind(ls, (struct sockaddr *)&myaddr_in, sizeof(struct sockaddr_in)) == -1) {
 	syslog(LOG_NOTICE, "Can't bind to listen socket: %s", strerror(errno));
 	close(ls);
+	my_server_state = 0;
 	return 0;
     }
 
     if (listen(ls, 5) == -1) {
 	syslog(LOG_NOTICE, "Can't listen on listen socket: %s", strerror(errno));
 	close(ls);
+	my_server_state = 0;
 	return 0;
     }
 
@@ -2213,6 +2216,7 @@
 	    syslog(LOG_NOTICE, "my_server_loop accept failed %s", strerror(errno));
 	    if (debug)
 		fprintf(stdout, "my_server_loop accept failed %s\n", strerror(errno));
+	    my_server_state = 0;
 	    return 0;
 	}
 
@@ -2222,6 +2226,7 @@
 	    syslog(LOG_NOTICE, "Thread my_server_loop stopped");
 	    if (debug)
 		fprintf(stdout, "Thread my_server_loop stopped\n");
+	    my_server_state = 0;
 	    return 0;
 	}
 	usleep(100000);

mercurial