[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r3346 - in GNUnet: . src/server src/transports src/util/net
From: |
grothoff |
Subject: |
[GNUnet-SVN] r3346 - in GNUnet: . src/server src/transports src/util/network |
Date: |
Fri, 1 Sep 2006 14:36:07 -0700 (PDT) |
Author: grothoff
Date: 2006-09-01 14:36:02 -0700 (Fri, 01 Sep 2006)
New Revision: 3346
Modified:
GNUnet/src/server/connection.c
GNUnet/src/server/gnunetd.c
GNUnet/src/transports/tcp.c
GNUnet/src/transports/tcp_helper.c
GNUnet/src/util/network/select.c
GNUnet/todo
Log:
fixing shutdown sequence
Modified: GNUnet/src/server/connection.c
===================================================================
--- GNUnet/src/server/connection.c 2006-08-29 18:57:35 UTC (rev 3345)
+++ GNUnet/src/server/connection.c 2006-09-01 21:36:02 UTC (rev 3346)
@@ -2791,7 +2791,6 @@
SendCallbackList *scl;
ENTRY();
- transport->stop();
GC_detach_change_listener(cfg,
&connectionConfigChangeCallback,
NULL);
@@ -2822,6 +2821,7 @@
FREE(scl);
}
scl_nextTail = NULL;
+ transport->stop();
releaseService(transport);
transport = NULL;
releaseService(identity);
Modified: GNUnet/src/server/gnunetd.c
===================================================================
--- GNUnet/src/server/gnunetd.c 2006-08-29 18:57:35 UTC (rev 3345)
+++ GNUnet/src/server/gnunetd.c 2006-09-01 21:36:02 UTC (rev 3346)
@@ -191,6 +191,7 @@
return -1;
}
ectx = GE_create_context_stderr(NO,
+ GE_DEBUG |
GE_WARNING | GE_ERROR | GE_FATAL |
GE_USER | GE_ADMIN | GE_DEVELOPER |
GE_IMMEDIATE | GE_BULK);
Modified: GNUnet/src/transports/tcp.c
===================================================================
--- GNUnet/src/transports/tcp.c 2006-08-29 18:57:35 UTC (rev 3345)
+++ GNUnet/src/transports/tcp.c 2006-09-01 21:36:02 UTC (rev 3346)
@@ -31,7 +31,7 @@
#include "platform.h"
#include "ip.h"
-#define DEBUG_TCP NO
+#define DEBUG_TCP YES
/**
* after how much time of the core not being associated with a tcp
@@ -252,6 +252,13 @@
socket_destroy(s);
return SYSERR;
}
+#if DEBUG_TCP
+ GE_LOG(ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_BULK,
+ "Establishing connection to %u.%u.%u.%u:%u\n",
+ PRIP(ntohl(*(int*)&haddr->ip)),
+ ntohs(haddr->port));
+#endif
return tcpConnectHelper(helo,
s,
tcpAPI.protocolNumber,
Modified: GNUnet/src/transports/tcp_helper.c
===================================================================
--- GNUnet/src/transports/tcp_helper.c 2006-08-29 18:57:35 UTC (rev 3345)
+++ GNUnet/src/transports/tcp_helper.c 2006-09-01 21:36:02 UTC (rev 3346)
@@ -96,6 +96,7 @@
static int tcpDisconnect(TSession * tsession) {
TCPSession * tcpsession = tsession->internal;
+ GE_ASSERT(ectx, selector != NULL);
MUTEX_LOCK(tcpsession->lock);
tcpsession->users--;
if (tcpsession->users > 0) {
@@ -159,8 +160,10 @@
P2P_PACKET * mp;
const TCPWelcome * welcome;
- if (SYSERR == tcpAssociate(tsession))
+ if (SYSERR == tcpAssociate(tsession)) {
+ GE_BREAK(ectx, 0);
return SYSERR;
+ }
len = ntohs(msg->size);
if (stats != NULL)
stats->change(stat_bytesReceived,
@@ -170,6 +173,9 @@
welcome = (const TCPWelcome*) msg;
if ( (ntohs(welcome->header.type) != 0) ||
(len != sizeof(TCPWelcome)) ) {
+ GE_LOG(ectx,
+ GE_WARNING | GE_USER | GE_BULK,
+ _("Received malformed message instead of welcome message.
Closing.\n"));
tcpDisconnect(tsession);
return SYSERR;
}
@@ -213,8 +219,19 @@
TSession * tsession;
TCPSession * tcpSession;
- if (NO != blt(addr, addr_len))
+ if (NO != blt(addr, addr_len)) {
+#if DEBUG_TCP
+ GE_LOG(ectx,
+ GE_DEBUG | GE_USER | GE_BULK,
+ "Rejecting TCP connection (blacklisted).\n");
+#endif
return NULL;
+ }
+#if DEBUG_TCP
+ GE_LOG(ectx,
+ GE_DEBUG | GE_USER | GE_BULK,
+ "Accepting TCP connection.\n");
+#endif
tcpSession = MALLOC(sizeof(TCPSession));
tcpSession->sock = sock;
/* fill in placeholder identity to mark that we
@@ -261,6 +278,11 @@
if (stats != NULL)
stats->change(stat_bytesDropped,
size);
+#if DEBUG_TCP
+ GE_LOG(ectx,
+ GE_DEBUG | GE_USER | GE_BULK,
+ "Could not sent TCP message -- tcp transport is down.\n");
+#endif
return SYSERR;
}
if (size == 0) {
@@ -271,6 +293,11 @@
if (stats != NULL)
stats->change(stat_bytesDropped,
size);
+#if DEBUG_TCP
+ GE_LOG(ectx,
+ GE_DEBUG | GE_USER | GE_BULK,
+ "Could not sent TCP message -- other side closed connection.\n");
+#endif
return SYSERR; /* other side closed connection */
}
mp = MALLOC(sizeof(MESSAGE_HEADER) + size);
@@ -334,6 +361,11 @@
&welcome.header,
sizeof(TCPWelcome),
YES)) {
+#if DEBUG_TCP
+ GE_LOG(ectx,
+ GE_DEBUG | GE_USER | GE_BULK,
+ "Could not sent TCP welcome message, closing connection.\n");
+#endif
/* disconnect caller -- error! */
tcpDisconnect(tsession);
MUTEX_UNLOCK(tcplock);
Modified: GNUnet/src/util/network/select.c
===================================================================
--- GNUnet/src/util/network/select.c 2006-08-29 18:57:35 UTC (rev 3345)
+++ GNUnet/src/util/network/select.c 2006-09-01 21:36:02 UTC (rev 3346)
@@ -30,6 +30,8 @@
#include "platform.h"
#include "network.h"
+#define DEBUG_SELECT YES
+
/**
* Select Session handle.
*/
@@ -157,6 +159,12 @@
static char i = '\0';
int ret;
+#if DEBUG_SELECT
+ GE_LOG(sh->ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_BULK,
+ "Signaling select %p.\n",
+ sh);
+#endif
ret = WRITE(sh->signal_pipe[1],
&i,
sizeof(char));
@@ -178,6 +186,13 @@
Session * s) {
int i;
+#if DEBUG_SELECT
+ GE_LOG(sh->ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_BULK,
+ "Destroying session %p of select %p.\n",
+ sh,
+ s);
+#endif
sh->ch(sh->ch_cls,
sh,
s->sock,
@@ -229,6 +244,14 @@
&session->rbuff[session->pos],
session->rsize - session->pos,
&recvd);
+#if DEBUG_SELECT
+ GE_LOG(sh->ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_BULK,
+ "Receiving from session %p of select %p return %d.\n",
+ sh,
+ session,
+ ret);
+#endif
if (ret != OK) {
destroySession(sh, session);
return SYSERR; /* other side closed connection */
@@ -286,6 +309,14 @@
int ret;
size_t size;
+#if DEBUG_SELECT
+ GE_LOG(sh->ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_BULK,
+ "Write and process called for session %p of select %p status %d.\n",
+ sh,
+ session,
+ sh->shutdown);
+#endif
sock = session->sock;
while (sh->shutdown == NO) {
ret = socket_send(sock,
@@ -293,6 +324,15 @@
session->wbuff,
session->wpos,
&size);
+#if DEBUG_SELECT
+ GE_LOG(sh->ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_BULK,
+ "Sending %d bytes from session %p of select %p return %d.\n",
+ session->wpos,
+ sh,
+ session,
+ ret);
+#endif
if (ret == SYSERR) {
GE_LOG_STRERROR(sh->ectx,
GE_WARNING | GE_USER | GE_ADMIN | GE_BULK,
@@ -384,8 +424,22 @@
struct SocketHandle * sock = session->sock;
if (! socket_test_valid(sock)) {
+#if DEBUG_SELECT
+ GE_LOG(sh->ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_BULK,
+ "Select %p destroys invalid client handle %p\n",
+ sh,
+ session);
+#endif
destroySession(sh, session);
} else {
+#if DEBUG_SELECT
+ GE_LOG(sh->ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_BULK,
+ "Select %p adds to select set connection %p\n",
+ sh,
+ session);
+#endif
add_to_select_set(sock, &readSet, &max);
add_to_select_set(sock, &errorSet, &max);
if (session->wpos > 0)
@@ -422,6 +476,13 @@
s = ACCEPT(sh->listen_sock->handle,
(struct sockaddr *) clientAddr,
&lenOfIncomingAddr);
+#if DEBUG_SELECT
+ GE_LOG(sh->ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_BULK,
+ "Select %p is accepting connection: %d\n",
+ sh,
+ s);
+#endif
if (s == -1) {
GE_LOG_STRERROR(sh->ectx,
GE_WARNING | GE_ADMIN | GE_BULK,
@@ -435,6 +496,13 @@
sock,
clientAddr,
lenOfIncomingAddr);
+#if DEBUG_SELECT
+ GE_LOG(sh->ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_BULK,
+ "Select %p is accepting connection: %p\n",
+ sh,
+ sctx);
+#endif
if (sctx == NULL) {
socket_destroy(sock);
} else {
@@ -623,6 +691,12 @@
void select_destroy(struct SelectHandle * sh) {
void * unused;
+#if DEBUG_SELECT
+ GE_LOG(sh->ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_BULK,
+ "Destroying select %p\n",
+ sh);
+#endif
sh->shutdown = YES;
signalSelect(sh);
PTHREAD_STOP_SLEEP(sh->thread);
@@ -667,6 +741,14 @@
unsigned short len;
int fresh_write;
+#if DEBUG_SELECT
+ GE_LOG(sh->ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_BULK,
+ "Adding message of size %u to %p of select %p\n",
+ ntohs(msg->size),
+ sock,
+ sh);
+#endif
session = NULL;
len = ntohs(msg->size);
MUTEX_LOCK(sh->lock);
@@ -702,6 +784,13 @@
void * sock_ctx) {
Session * session;
+#if DEBUG_SELECT
+ GE_LOG(sh->ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_BULK,
+ "Adding connection %p to selector %p\n",
+ sock,
+ sh);
+#endif
session = MALLOC(sizeof(Session));
memset(session, 0, sizeof(Session));
session->sock = sock;
@@ -727,6 +816,13 @@
Session * session;
int i;
+#if DEBUG_SELECT
+ GE_LOG(sh->ectx,
+ GE_DEBUG | GE_DEVELOPER | GE_BULK,
+ "Removing connection %p from selector %p\n",
+ sock,
+ sh);
+#endif
session = NULL;
MUTEX_LOCK(sh->lock);
for (i=0;i<sh->sessionCount;i++)
Modified: GNUnet/todo
===================================================================
--- GNUnet/todo 2006-08-29 18:57:35 UTC (rev 3345)
+++ GNUnet/todo 2006-09-01 21:36:02 UTC (rev 3346)
@@ -16,7 +16,6 @@
- finish util refactoring: [RC]
* $GNUNET_HOME directory creation (where?)
* util:
- + statuscalls: load always extremely high (2^31 ++)
+ network/io: load monitor support
+ loggers: SMTP logger
+ use new loggers in for CS error reporting
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r3346 - in GNUnet: . src/server src/transports src/util/network,
grothoff <=