[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r3336 - GNUnet/src/server
From: |
grothoff |
Subject: |
[GNUnet-SVN] r3336 - GNUnet/src/server |
Date: |
Sun, 27 Aug 2006 14:37:30 -0700 (PDT) |
Author: grothoff
Date: 2006-08-27 14:37:28 -0700 (Sun, 27 Aug 2006)
New Revision: 3336
Modified:
GNUnet/src/server/core.c
GNUnet/src/server/gnunetd.c
GNUnet/src/server/tcpserver.c
Log:
bugfixes
Modified: GNUnet/src/server/core.c
===================================================================
--- GNUnet/src/server/core.c 2006-08-27 21:22:11 UTC (rev 3335)
+++ GNUnet/src/server/core.c 2006-08-27 21:37:28 UTC (rev 3336)
@@ -538,8 +538,11 @@
identity->getPeerIdentity(identity->getPublicPrivateKey(),
&myIdentity);
applicationCore.myIdentity = &myIdentity; /* core.c */
- initTCPServer(ectx,
- cfg);
+ if (initTCPServer(ectx,
+ cfg) != OK) {
+ releaseService(identity);
+ return SYSERR;
+ }
initHandler(ectx);
return OK;
}
Modified: GNUnet/src/server/gnunetd.c
===================================================================
--- GNUnet/src/server/gnunetd.c 2006-08-27 21:22:11 UTC (rev 3335)
+++ GNUnet/src/server/gnunetd.c 2006-08-27 21:37:28 UTC (rev 3336)
@@ -98,17 +98,32 @@
return SYSERR;
mon = os_network_monitor_create(ectx,
cfg);
- GE_ASSERT(ectx,
- mon != NULL);
+ if (mon == NULL) {
+ if (NO == debug_flag)
+ os_terminal_detach_complete(ectx,
+ filedes,
+ NO);
+ return SYSERR;
+ }
cron = cron_create(ectx);
GE_ASSERT(ectx,
cron != NULL);
shc_hup = signal_handler_install(SIGHUP, &reread_config);
- GE_ASSERT(ectx,
- OK == initCore(ectx,
- cfg,
- cron,
- mon));
+ if (OK != initCore(ectx,
+ cfg,
+ cron,
+ mon)) {
+ cron_destroy(cron);
+ os_network_monitor_destroy(mon);
+ signal_handler_uninstall(SIGHUP,
+ &reread_config,
+ shc_hup);
+ if (NO == debug_flag)
+ os_terminal_detach_complete(ectx,
+ filedes,
+ NO);
+ return SYSERR;
+ }
initConnection(ectx, cfg, mon, cron);
loadApplicationModules();
writePIDFile(ectx, cfg);
Modified: GNUnet/src/server/tcpserver.c
===================================================================
--- GNUnet/src/server/tcpserver.c 2006-08-27 21:22:11 UTC (rev 3335)
+++ GNUnet/src/server/tcpserver.c 2006-08-27 21:37:28 UTC (rev 3336)
@@ -1,4 +1,4 @@
-+/*
+/*
This file is part of GNUnet
(C) 2001, 2002, 2003, 2004, 2006 Christian Grothoff (and other
contributing authors)
@@ -258,7 +258,7 @@
unsigned long long port;
if (-1 == GC_get_configuration_value_number(cfg,
- "TCP",
+ "NETWORK",
"PORT",
1,
65535,
@@ -268,48 +268,12 @@
return (unsigned short) port;
}
-/**
- * Initialize the TCP port and listen for incoming client connections.
- */
-int initTCPServer(struct GE_Context * e,
- struct GC_Configuration * c) {
+static int startTCPServer() {
int listenerFD;
int listenerPort;
struct sockaddr_in serverAddr;
const int on = 1;
- char * ch;
- cfg = c;
- ectx = e;
- if (YES == GC_get_configuration_value_yesno(cfg,
- "TCPSERVER",
- "DISABLE",
- NO))
- return OK;
-
- /* move to reload-configuration method! */
- ch = NULL;
- if (-1 == GC_get_configuration_value_string(cfg,
- "NETWORK",
- "TRUSTED",
- "127.0.0.0/8;",
- &ch))
- return SYSERR;
- GE_ASSERT(ectx, ch != NULL);
- trustedNetworks_ = parse_ipv4_network_specification(ectx,
- ch);
- if (trustedNetworks_ == NULL) {
- GE_LOG(ectx,
- GE_FATAL | GE_USER | GE_ADMIN | GE_IMMEDIATE,
- _("Malformed network specification in the configuration in section
`%s' for entry `%s': %s\n"),
- "NETWORK",
- "TRUSTED",
- ch);
- FREE(ch);
- return SYSERR;
- }
- FREE(ch);
-
listenerPort = getGNUnetPort();
if (listenerPort == 0)
return SYSERR;
@@ -354,8 +318,7 @@
listenerPort);
return SYSERR;
}
- handlerlock = MUTEX_CREATE(YES);
- selector = select_create(e,
+ selector = select_create(ectx,
NULL,
listenerFD,
sizeof(struct sockaddr_in),
@@ -367,36 +330,21 @@
&select_close_handler,
NULL,
0 /* no memory quota */);
- if (selector == NULL)
+ if (selector == NULL) {
+ CLOSE(listenerFD);
return SYSERR;
- registerCSHandler(CS_PROTO_SHUTDOWN_REQUEST,
- &shutdownHandler);
+ }
return OK;
}
-/**
- * Shutdown the module.
- */
-int stopTCPServer() {
- if (YES == GC_get_configuration_value_yesno(cfg,
- "TCPSERVER",
- "DISABLE",
- NO))
- return OK;
- unregisterCSHandler(CS_PROTO_SHUTDOWN_REQUEST,
- &shutdownHandler);
- GE_ASSERT(ectx, selector != NULL);
- select_destroy(selector);
- selector = NULL;
- return OK;
-}
-
int doneTCPServer() {
if (selector != NULL)
stopTCPServer(); /* just to be sure; used mostly
for the benefit of gnunet-update
and other gnunet-tools that are
not gnunetd */
+ unregisterCSHandler(CS_PROTO_SHUTDOWN_REQUEST,
+ &shutdownHandler);
MUTEX_DESTROY(handlerlock);
handlerlock = NULL;
GROW(handlers,
@@ -410,6 +358,64 @@
}
/**
+ * Initialize the TCP port and listen for incoming client connections.
+ */
+int initTCPServer(struct GE_Context * e,
+ struct GC_Configuration * c) {
+ char * ch;
+
+ cfg = c;
+ ectx = e;
+
+ /* move to reload-configuration method! */
+ ch = NULL;
+ if (-1 == GC_get_configuration_value_string(cfg,
+ "NETWORK",
+ "TRUSTED",
+ "127.0.0.0/8;",
+ &ch))
+ return SYSERR;
+ GE_ASSERT(ectx, ch != NULL);
+ trustedNetworks_ = parse_ipv4_network_specification(ectx,
+ ch);
+ if (trustedNetworks_ == NULL) {
+ GE_LOG(ectx,
+ GE_FATAL | GE_USER | GE_ADMIN | GE_IMMEDIATE,
+ _("Malformed network specification in the configuration in section
`%s' for entry `%s': %s\n"),
+ "NETWORK",
+ "TRUSTED",
+ ch);
+ FREE(ch);
+ return SYSERR;
+ }
+ FREE(ch);
+ handlerlock = MUTEX_CREATE(YES);
+
+ registerCSHandler(CS_PROTO_SHUTDOWN_REQUEST,
+ &shutdownHandler);
+ if ( (NO == GC_get_configuration_value_yesno(cfg,
+ "TCPSERVER",
+ "DISABLE",
+ NO)) &&
+ (OK != startTCPServer()) ) {
+ doneTCPServer();
+ return SYSERR;
+ }
+ return OK;
+}
+
+/**
+ * Shutdown the module.
+ */
+int stopTCPServer() {
+ if (selector != NULL) {
+ select_destroy(selector);
+ selector = NULL;
+ }
+ return OK;
+}
+
+/**
* Register a method as a handler for specific message
* types.
* @param type the message type
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r3336 - GNUnet/src/server,
grothoff <=