[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r4045 - in GNUnet: . src/transports src/util/network
From: |
grothoff |
Subject: |
[GNUnet-SVN] r4045 - in GNUnet: . src/transports src/util/network |
Date: |
Sat, 23 Dec 2006 21:15:04 -0800 (PST) |
Author: grothoff
Date: 2006-12-23 21:15:01 -0800 (Sat, 23 Dec 2006)
New Revision: 4045
Modified:
GNUnet/ChangeLog
GNUnet/src/transports/tcp.c
GNUnet/src/transports/tcp6.c
GNUnet/src/util/network/select.c
Log:
tcp fix
Modified: GNUnet/ChangeLog
===================================================================
--- GNUnet/ChangeLog 2006-12-24 05:05:18 UTC (rev 4044)
+++ GNUnet/ChangeLog 2006-12-24 05:15:01 UTC (rev 4045)
@@ -1,3 +1,8 @@
+Sat Dec 23 22:12:17 MST 2006
+ Updated various man pages and some configuration documentation.
+ Fixed TCP transport (did not work with NAT if port was set to 0).
+ Fixed verbose option for gnunet-transport-check.
+
Fri Dec 22 19:21:25 MST 2006
Added option to set maximum number of file descriptors
(convenience for OS X users where the default is too low).
Modified: GNUnet/src/transports/tcp.c
===================================================================
--- GNUnet/src/transports/tcp.c 2006-12-24 05:05:18 UTC (rev 4044)
+++ GNUnet/src/transports/tcp.c 2006-12-24 05:15:01 UTC (rev 4045)
@@ -322,7 +322,8 @@
sizeof(soaddr));
soaddr.sin_family = AF_INET;
- GE_ASSERT(ectx, sizeof(struct in_addr) == sizeof(IPaddr));
+ GE_ASSERT(ectx,
+ sizeof(struct in_addr) == sizeof(IPaddr));
memcpy(&soaddr.sin_addr,
&haddr->ip,
sizeof(IPaddr));
@@ -369,48 +370,48 @@
return SYSERR;
}
port = getGNUnetTCPPort();
- if (port == 0) {
- /* read-only TCP */
- return OK;
- }
- s = SOCKET(PF_INET,
- SOCK_STREAM,
- 0);
- if (s < 0) {
- GE_LOG_STRERROR(ectx,
- GE_ERROR | GE_ADMIN | GE_BULK,
- "socket");
- return SYSERR;
- }
- if (SETSOCKOPT(s,
- SOL_SOCKET,
- SO_REUSEADDR,
- &on,
- sizeof(on)) < 0 )
- GE_DIE_STRERROR(ectx,
- GE_FATAL | GE_ADMIN | GE_IMMEDIATE,
- "setsockopt");
- memset((char *) &serverAddr,
- 0,
- sizeof(serverAddr));
- serverAddr.sin_family = AF_INET;
- serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
- serverAddr.sin_port = htons(getGNUnetTCPPort());
- if (BIND(s,
- (struct sockaddr *) &serverAddr,
- sizeof(serverAddr)) < 0) {
- GE_LOG_STRERROR(ectx,
- GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
+ if (port != 0) {
+ s = SOCKET(PF_INET,
+ SOCK_STREAM,
+ 0);
+ if (s < 0) {
+ GE_LOG_STRERROR(ectx,
+ GE_ERROR | GE_ADMIN | GE_BULK,
+ "socket");
+ return SYSERR;
+ }
+ if (SETSOCKOPT(s,
+ SOL_SOCKET,
+ SO_REUSEADDR,
+ &on,
+ sizeof(on)) < 0 )
+ GE_DIE_STRERROR(ectx,
+ GE_FATAL | GE_ADMIN | GE_IMMEDIATE,
+ "setsockopt");
+ memset((char *) &serverAddr,
+ 0,
+ sizeof(serverAddr));
+ serverAddr.sin_family = AF_INET;
+ serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
+ serverAddr.sin_port = htons(getGNUnetTCPPort());
+ if (BIND(s,
+ (struct sockaddr *) &serverAddr,
+ sizeof(serverAddr)) < 0) {
+ GE_LOG_STRERROR(ectx,
+ GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
"bind");
- GE_LOG(ectx,
- GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
+ GE_LOG(ectx,
+ GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
_("Failed to start transport service on port %d.\n"),
- getGNUnetTCPPort());
- if (0 != CLOSE(s))
- GE_LOG_STRERROR(ectx,
- GE_ERROR | GE_USER | GE_ADMIN | GE_BULK,
- "close");
- return SYSERR;
+ getGNUnetTCPPort());
+ if (0 != CLOSE(s))
+ GE_LOG_STRERROR(ectx,
+ GE_ERROR | GE_USER | GE_ADMIN | GE_BULK,
+ "close");
+ return SYSERR;
+ }
+ } else {
+ s = -1; /* no listening! */
}
selector = select_create("tcp",
NO,
Modified: GNUnet/src/transports/tcp6.c
===================================================================
--- GNUnet/src/transports/tcp6.c 2006-12-24 05:05:18 UTC (rev 4044)
+++ GNUnet/src/transports/tcp6.c 2006-12-24 05:15:01 UTC (rev 4045)
@@ -341,47 +341,49 @@
return SYSERR;
}
port = getGNUnetTCP6Port();
- if (port == 0)
- return OK; /* read-only TCP6 */
- s = SOCKET(PF_INET6,
- SOCK_STREAM,
- 0);
- if (s < 0) {
- GE_LOG_STRERROR(ectx,
- GE_ERROR | GE_ADMIN | GE_BULK,
- "socket");
- return SYSERR;
- }
- if (SETSOCKOPT(s,
- SOL_SOCKET,
- SO_REUSEADDR,
- &on,
- sizeof(on)) < 0 )
- GE_DIE_STRERROR(ectx,
- GE_FATAL | GE_ADMIN | GE_IMMEDIATE,
- "setsockopt");
- memset((char *) &serverAddr,
- 0,
- sizeof(serverAddr));
- serverAddr.sin6_family = AF_INET6;
- serverAddr.sin6_flowinfo = 0;
- serverAddr.sin6_addr = in6addr_any;
- serverAddr.sin6_port = htons(getGNUnetTCP6Port());
- if (BIND(s,
- (struct sockaddr *) &serverAddr,
- sizeof(serverAddr)) < 0) {
- GE_LOG_STRERROR(ectx,
- GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
- "bind");
- GE_LOG(ectx,
- GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
- _("Failed to start transport service on port %d.\n"),
- getGNUnetTCP6Port());
- if (0 != CLOSE(s))
+ if (port != 0) {
+ s = SOCKET(PF_INET6,
+ SOCK_STREAM,
+ 0);
+ if (s < 0) {
GE_LOG_STRERROR(ectx,
- GE_ERROR | GE_USER | GE_ADMIN | GE_BULK,
- "close");
- return SYSERR;
+ GE_ERROR | GE_ADMIN | GE_BULK,
+ "socket");
+ return SYSERR;
+ }
+ if (SETSOCKOPT(s,
+ SOL_SOCKET,
+ SO_REUSEADDR,
+ &on,
+ sizeof(on)) < 0 )
+ GE_DIE_STRERROR(ectx,
+ GE_FATAL | GE_ADMIN | GE_IMMEDIATE,
+ "setsockopt");
+ memset((char *) &serverAddr,
+ 0,
+ sizeof(serverAddr));
+ serverAddr.sin6_family = AF_INET6;
+ serverAddr.sin6_flowinfo = 0;
+ serverAddr.sin6_addr = in6addr_any;
+ serverAddr.sin6_port = htons(getGNUnetTCP6Port());
+ if (BIND(s,
+ (struct sockaddr *) &serverAddr,
+ sizeof(serverAddr)) < 0) {
+ GE_LOG_STRERROR(ectx,
+ GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
+ "bind");
+ GE_LOG(ectx,
+ GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
+ _("Failed to start transport service on port %d.\n"),
+ getGNUnetTCP6Port());
+ if (0 != CLOSE(s))
+ GE_LOG_STRERROR(ectx,
+ GE_ERROR | GE_USER | GE_ADMIN | GE_BULK,
+ "close");
+ return SYSERR;
+ }
+ } else {
+ s = -1;
}
selector = select_create("tcp6",
NO,
Modified: GNUnet/src/util/network/select.c
===================================================================
--- GNUnet/src/util/network/select.c 2006-12-24 05:05:18 UTC (rev 4044)
+++ GNUnet/src/util/network/select.c 2006-12-24 05:15:01 UTC (rev 4045)
@@ -106,7 +106,7 @@
/**
* sock is the tcp socket that we listen on for new inbound
- * connections.
+ * connections. Maybe NULL if we are not listening.
*/
struct SocketHandle * listen_sock;
@@ -796,6 +796,7 @@
SelectHandle * sh;
if ( (is_udp == NO) &&
+ (sock != -1) &&
(0 != LISTEN(sock, 5)) ) {
GE_LOG_STRERROR(ectx,
GE_ERROR | GE_USER | GE_IMMEDIATE,
@@ -837,9 +838,12 @@
sh->memory_quota = memory_quota;
sh->timeout = timeout;
sh->lock = MUTEX_CREATE(YES);
- sh->listen_sock = socket_create(ectx,
- mon,
- sock);
+ if (sock != -1)
+ sh->listen_sock = socket_create(ectx,
+ mon,
+ sock);
+ else
+ sh->listen_sock = NULL;
sh->thread = PTHREAD_CREATE(&selectThread,
sh,
4 * 1024);
@@ -847,7 +851,8 @@
GE_LOG_STRERROR(ectx,
GE_ERROR | GE_IMMEDIATE | GE_ADMIN,
"pthread_create");
- socket_destroy(sh->listen_sock);
+ if (sh->listen_sock != NULL)
+ socket_destroy(sh->listen_sock);
if ( (0 != CLOSE(sh->signal_pipe[0])) ||
(0 != CLOSE(sh->signal_pipe[1])) )
GE_LOG_STRERROR(ectx,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r4045 - in GNUnet: . src/transports src/util/network,
grothoff <=