Vanilla Development Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
CVS update: Vanilla/ntserv
Date: Tuesday February 22, 19100 @ 20:39
Author: xyzzy
Update of /home/netrek/cvsroot/Vanilla/ntserv
In directory swashbuckler.fortress.real-time.com:/var/tmp/cvs-serv30451
Modified Files:
socket.c
Log Message:
Bind UDP socket to the same interface as the TCP socket uses. Needed for
multi-homed servers.
****************************************
Index: Vanilla/ntserv/socket.c
diff -u Vanilla/ntserv/socket.c:1.17 Vanilla/ntserv/socket.c:1.18
--- Vanilla/ntserv/socket.c:1.17 Fri Jul 23 17:09:13 1999
+++ Vanilla/ntserv/socket.c Tue Feb 22 20:39:09 2000
@@ -1,4 +1,4 @@
-/* $Id: socket.c,v 1.17 1999/07/23 22:09:13 ahn Exp $
+/* $Id: socket.c,v 1.18 2000/02/23 02:39:09 xyzzy Exp $
*/
/*
@@ -2279,8 +2279,16 @@
}
#ifdef UDP_FIX /* 15/6/93 SK UDP connection time out fix */
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = INADDR_ANY;
+ /* Bind to interface used by the TCP socket 10/13/99 TAP *?
+ len = sizeof(addr);
+ if (getsockname(sock, (struct sockaddr *)&addr, &len) < 0) {
+ perror("netrek: unable to getsockname(TCP)");
+ UDPDIAG(("Can't get our own socket; using default interface\n"));
+ addr.sin_family = AF_INET;
+ addr.sin_addr.s_addr = INADDR_ANY;
+ } else {
+ UDPDIAG(("Using interface 0x%x\n", ntohl(addr.sin_addr.s_addr)));
+ }
addr.sin_port = 0;
if (bind(udpSock, &addr, sizeof(addr)) < 0) {