mirror of
https://gitea.psi.ch/ELOG/elog.git
synced 2026-09-16 21:26:27 +00:00
Fixed windows service related problems
SVN revision: 1019
This commit is contained in:
parent
36b3a04f76
commit
381037236d
43
src/elogd.c
43
src/elogd.c
@ -6,6 +6,9 @@
|
|||||||
Contents: Web server program for Electronic Logbook ELOG
|
Contents: Web server program for Electronic Logbook ELOG
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.433 2004/08/04 13:32:27 midas
|
||||||
|
Fixed windows service related problems
|
||||||
|
|
||||||
Revision 1.432 2004/08/04 12:38:22 midas
|
Revision 1.432 2004/08/04 12:38:22 midas
|
||||||
Warn if port is already used
|
Warn if port is already used
|
||||||
|
|
||||||
@ -19442,21 +19445,21 @@ void server_loop(int tcp_port)
|
|||||||
flag = 0;
|
flag = 0;
|
||||||
setsockopt(lsock, SOL_SOCKET, SO_REUSEADDR, (char *) &flag, sizeof(INT));
|
setsockopt(lsock, SOL_SOCKET, SO_REUSEADDR, (char *) &flag, sizeof(INT));
|
||||||
status = bind(lsock, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
|
status = bind(lsock, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
|
||||||
if (status < 0)
|
if (status < 0) {
|
||||||
eprintf("Warning: another server might already run on port %d.\n\n",tcp_port);
|
eprintf("Warning: another server might already run on port %d.\n\n",tcp_port);
|
||||||
|
|
||||||
/* now try with reusing address */
|
/* now try with reusing address */
|
||||||
flag = 1;
|
flag = 1;
|
||||||
setsockopt(lsock, SOL_SOCKET, SO_REUSEADDR, (char *) &flag, sizeof(INT));
|
setsockopt(lsock, SOL_SOCKET, SO_REUSEADDR, (char *) &flag, sizeof(INT));
|
||||||
status = bind(lsock, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
|
status = bind(lsock, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
eprintf
|
eprintf
|
||||||
("Cannot bind to port %d.\nPlease use the \"-p\" flag to specify a different port.\n",
|
("Cannot bind to port %d.\nPlease use the \"-p\" flag to specify a different port.\n",
|
||||||
tcp_port);
|
tcp_port);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* get host name for mail notification */
|
/* get host name for mail notification */
|
||||||
gethostname(host_name, sizeof(host_name));
|
gethostname(host_name, sizeof(host_name));
|
||||||
phe = gethostbyname(host_name);
|
phe = gethostbyname(host_name);
|
||||||
@ -20621,10 +20624,10 @@ void cleanup(void)
|
|||||||
#define ELOGDAPPNAME "elogd"
|
#define ELOGDAPPNAME "elogd"
|
||||||
|
|
||||||
// Internal service name
|
// Internal service name
|
||||||
#define ELOGDSERVICENAME "elgod"
|
#define ELOGDSERVICENAME "elogd"
|
||||||
|
|
||||||
// Displayed service name
|
// Displayed service name
|
||||||
#define ELOGDSERVICEDISPLAYNAME "ELOG Server"
|
#define ELOGDSERVICEDISPLAYNAME "elogd"
|
||||||
|
|
||||||
SERVICE_STATUS serviceStatus;
|
SERVICE_STATUS serviceStatus;
|
||||||
SERVICE_STATUS_HANDLE serviceStatusHandle = 0;
|
SERVICE_STATUS_HANDLE serviceStatusHandle = 0;
|
||||||
@ -20683,14 +20686,20 @@ int install_service(void)
|
|||||||
if (GetLastError() == ERROR_SERVICE_EXISTS)
|
if (GetLastError() == ERROR_SERVICE_EXISTS)
|
||||||
eprintf("The elogd service is already registered.\n");
|
eprintf("The elogd service is already registered.\n");
|
||||||
else
|
else
|
||||||
eprintf("The elogd service could not be registered.\n");
|
eprintf("The elogd service could not be registered. Error code %d.\n", GetLastError());
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
eprintf("The elogd service has been registered successfully.\n");
|
eprintf("The elogd service has been registered successfully.\n");
|
||||||
|
CloseServiceHandle(hservice);
|
||||||
|
}
|
||||||
|
|
||||||
/* Try to start the elogd service */
|
/* Try to start the elogd service */
|
||||||
|
hservice = OpenService(hsrvmanager, ELOGDSERVICENAME, SERVICE_ALL_ACCESS);
|
||||||
|
|
||||||
|
if (hservice == NULL)
|
||||||
|
eprintf("The elogd service could not be accessed. Error code %d.\n", GetLastError());
|
||||||
|
else {
|
||||||
if (!StartService(hservice, 0, NULL))
|
if (!StartService(hservice, 0, NULL))
|
||||||
eprintf("The elogd service could not be started.\n");
|
eprintf("The elogd service could not be started. Error code %d.\n", GetLastError());
|
||||||
else
|
else
|
||||||
eprintf("The elogd service has been started successfully.\n");
|
eprintf("The elogd service has been started successfully.\n");
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user