Import Upstream version 1.0.16
This commit is contained in:
parent
d09cb3d82a
commit
bb1aebd963
11 changed files with 70 additions and 50 deletions
38
ChangeLog
38
ChangeLog
|
@ -1,3 +1,41 @@
|
|||
commit 0f2aa4bd8b698608876bec141c5aef1aa619730b
|
||||
Author: Guus Sliepen <guus@tinc-vpn.org>
|
||||
Date: Sat Jul 23 14:12:23 2011 +0200
|
||||
|
||||
Releasing 1.0.16.
|
||||
|
||||
commit e16ead8dd9d4600664058069f0695832dfe068b2
|
||||
Author: Guus Sliepen <guus@tinc-vpn.org>
|
||||
Date: Sat Jul 23 14:11:44 2011 +0200
|
||||
|
||||
Use usleep() instead of sleep(), MinGW complained.
|
||||
|
||||
commit 50fcfea127c9d2fdf8894498a9fdcc6fb3bbb2ce
|
||||
Author: Guus Sliepen <guus@tinc-vpn.org>
|
||||
Date: Sun Jul 17 19:34:01 2011 +0200
|
||||
|
||||
Flush output buffer in send_tcppacket().
|
||||
|
||||
This is mainly important for Windows, where the select() call in the
|
||||
main thread is not being woken up when the tapreader thread calls
|
||||
route(), causing a delay of up to 1 second before the output buffer is
|
||||
flushed. This would cause bad performance when UDP communication is not
|
||||
possible.
|
||||
|
||||
commit be2fc8b0458b1e2ced3b5de410356d8d8639acff
|
||||
Author: Guus Sliepen <guus@tinc-vpn.org>
|
||||
Date: Sat Jul 16 10:47:35 2011 +0200
|
||||
|
||||
Make code to detect two nodes with the same Name less triggerhappy.
|
||||
|
||||
First of all, if there really are two nodes with the same name, much
|
||||
more than 10 contradicting ADD_EDGE and DEL_EDGE messages will be sent.
|
||||
Also, we forgot to reset the counters when nothing happened.
|
||||
|
||||
In case there is a ADD_EDGE/DEL_EDGE storm, we do not shut down, but
|
||||
sleep an increasing amount of time, allowing tinc to recover gracefully
|
||||
from temporary failures.
|
||||
|
||||
commit 05260f941c2a24eb3f09070a2550cf15e431266a
|
||||
Author: Guus Sliepen <guus@tinc-vpn.org>
|
||||
Date: Fri Jun 24 14:50:20 2011 +0200
|
||||
|
|
7
NEWS
7
NEWS
|
@ -1,3 +1,10 @@
|
|||
Version 1.0.16 July 23 2011
|
||||
|
||||
* Fixed a performance issue with TCP communication under Windows.
|
||||
|
||||
* Fixed code that, during network outages, would cause tinc to exit when it
|
||||
thought two nodes with identical Names were on the VPN.
|
||||
|
||||
Version 1.0.15 June 24 2011
|
||||
|
||||
* Improved logging to file.
|
||||
|
|
4
README
4
README
|
@ -1,4 +1,4 @@
|
|||
This is the README file for tinc version 1.0.15. Installation
|
||||
This is the README file for tinc version 1.0.16. Installation
|
||||
instructions may be found in the INSTALL file.
|
||||
|
||||
tinc is Copyright (C) 1998-2011 by:
|
||||
|
@ -55,7 +55,7 @@ should be changed into "Device", and "Device" should be changed into
|
|||
Compatibility
|
||||
-------------
|
||||
|
||||
Version 1.0.15 is compatible with 1.0pre8, 1.0 and later, but not with older
|
||||
Version 1.0.16 is compatible with 1.0pre8, 1.0 and later, but not with older
|
||||
versions of tinc.
|
||||
|
||||
|
||||
|
|
2
configure
vendored
2
configure
vendored
|
@ -2731,7 +2731,7 @@ fi
|
|||
|
||||
# Define the identity of the package.
|
||||
PACKAGE=tinc
|
||||
VERSION=1.0.15
|
||||
VERSION=1.0.16
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
|
|
|
@ -3,7 +3,7 @@ dnl Process this file with autoconf to produce a configure script.
|
|||
AC_PREREQ(2.61)
|
||||
AC_INIT
|
||||
AC_CONFIG_SRCDIR([src/tincd.c])
|
||||
AM_INIT_AUTOMAKE(tinc, 1.0.15)
|
||||
AM_INIT_AUTOMAKE(tinc, 1.0.16)
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
|
|
Binary file not shown.
|
@ -165,7 +165,7 @@ int gettimeofday(struct timeval *tv, void *tz) {
|
|||
#endif
|
||||
|
||||
#ifndef HAVE_USLEEP
|
||||
int usleep(long usec) {
|
||||
int usleep(long long usec) {
|
||||
struct timeval tv = {usec / 1000000, (usec / 1000) % 1000};
|
||||
select(0, NULL, NULL, NULL, &tv);
|
||||
return 0;
|
||||
|
|
|
@ -42,7 +42,7 @@ extern int gettimeofday(struct timeval *, void *);
|
|||
#endif
|
||||
|
||||
#ifndef HAVE_USLEEP
|
||||
extern int usleep(long);
|
||||
extern int usleep(long long);
|
||||
#endif
|
||||
|
||||
#endif /* __DROPIN_H__ */
|
||||
|
|
33
m4/ev.m4
33
m4/ev.m4
|
@ -1,33 +0,0 @@
|
|||
dnl Check to find the libev headers/libraries
|
||||
|
||||
AC_DEFUN([tinc_LIBEV],
|
||||
[
|
||||
AC_ARG_WITH(libev,
|
||||
AS_HELP_STRING([--with-libev=DIR], [libev base directory, or:]),
|
||||
[libev="$withval"
|
||||
CPPFLAGS="$CPPFLAGS -I$withval/include"
|
||||
LDFLAGS="$LDFLAGS -L$withval/lib"]
|
||||
)
|
||||
|
||||
AC_ARG_WITH(libev-include,
|
||||
AS_HELP_STRING([--with-libev-include=DIR], [libev headers directory]),
|
||||
[libev_include="$withval"
|
||||
CPPFLAGS="$CPPFLAGS -I$withval"]
|
||||
)
|
||||
|
||||
AC_ARG_WITH(libev-lib,
|
||||
AS_HELP_STRING([--with-libev-lib=DIR], [libev library directory]),
|
||||
[libev_lib="$withval"
|
||||
LDFLAGS="$LDFLAGS -L$withval"]
|
||||
)
|
||||
|
||||
AC_CHECK_HEADERS(ev.h,
|
||||
[],
|
||||
[AC_MSG_ERROR("ev header files not found."); break]
|
||||
)
|
||||
|
||||
AC_CHECK_LIB(ev, ev_loop,
|
||||
[LIBS="$LIBS -lev"],
|
||||
[AC_MSG_ERROR("libev libraries not found.")]
|
||||
)
|
||||
])
|
28
src/net.c
28
src/net.c
|
@ -50,6 +50,7 @@ bool graph_dump = false;
|
|||
time_t now = 0;
|
||||
int contradicting_add_edge = 0;
|
||||
int contradicting_del_edge = 0;
|
||||
static int sleeptime = 10;
|
||||
|
||||
/* Purge edges and subnets of unreachable nodes. Use carefully. */
|
||||
|
||||
|
@ -464,18 +465,25 @@ int main_loop(void) {
|
|||
keyexpires = now + keylifetime;
|
||||
}
|
||||
|
||||
if(contradicting_del_edge > 10 && contradicting_add_edge > 10) {
|
||||
logger(LOG_WARNING, "Possible node with same Name as us!");
|
||||
/* Detect ADD_EDGE/DEL_EDGE storms that are caused when
|
||||
* two tinc daemons with the same name are on the VPN.
|
||||
* If so, sleep a while. If this happens multiple times
|
||||
* in a row, sleep longer. */
|
||||
|
||||
if(rand() % 3 == 0) {
|
||||
logger(LOG_ERR, "Shutting down, check configuration of all nodes for duplicate Names!");
|
||||
running = false;
|
||||
break;
|
||||
}
|
||||
|
||||
contradicting_add_edge = 0;
|
||||
contradicting_del_edge = 0;
|
||||
if(contradicting_del_edge > 100 && contradicting_add_edge > 100) {
|
||||
logger(LOG_WARNING, "Possible node with same Name as us! Sleeping %d seconds.", sleeptime);
|
||||
usleep(sleeptime * 1000000LL);
|
||||
sleeptime *= 2;
|
||||
if(sleeptime < 0)
|
||||
sleeptime = 3600;
|
||||
} else {
|
||||
sleeptime /= 2;
|
||||
if(sleeptime < 10)
|
||||
sleeptime = 10;
|
||||
}
|
||||
|
||||
contradicting_add_edge = 0;
|
||||
contradicting_del_edge = 0;
|
||||
}
|
||||
|
||||
if(sigalrm) {
|
||||
|
|
|
@ -129,7 +129,7 @@ bool send_tcppacket(connection_t *c, const vpn_packet_t *packet) {
|
|||
if(!send_request(c, "%d %hd", PACKET, packet->len))
|
||||
return false;
|
||||
|
||||
return send_meta(c, (char *)packet->data, packet->len);
|
||||
return send_meta(c, (char *)packet->data, packet->len) && flush_meta(c);
|
||||
}
|
||||
|
||||
bool tcppacket_h(connection_t *c) {
|
||||
|
|
Loading…
Reference in a new issue