mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-13 06:33:44 +01:00
Merge remote branch 'origin/maint-0.2.2'
Trivial Conflicts: configure.in
This commit is contained in:
commit
8b393afa94
5
changes/bug2696
Normal file
5
changes/bug2696
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
o Minor features:
|
||||||
|
- Make compilation with clang possible when using
|
||||||
|
--enable-gcc-warnings by removing two warnings that clang hasn't
|
||||||
|
implemented yet and by fixing a few warnings. Implements ticket
|
||||||
|
2696.
|
22
configure.in
22
configure.in
@ -1068,12 +1068,13 @@ fi
|
|||||||
# Set CFLAGS _after_ all the above checks, since our warnings are stricter
|
# Set CFLAGS _after_ all the above checks, since our warnings are stricter
|
||||||
# than autoconf's macros like.
|
# than autoconf's macros like.
|
||||||
if test "$GCC" = yes; then
|
if test "$GCC" = yes; then
|
||||||
CFLAGS="$CFLAGS -Wall -g -O2"
|
|
||||||
# Disable GCC's strict aliasing checks. They are an hours-to-debug
|
# Disable GCC's strict aliasing checks. They are an hours-to-debug
|
||||||
# accident waiting to happen.
|
# accident waiting to happen.
|
||||||
CFLAGS="$CFLAGS -fno-strict-aliasing"
|
CFLAGS="$CFLAGS -Wall -fno-strict-aliasing"
|
||||||
else
|
else
|
||||||
CFLAGS="$CFLAGS -g -O"
|
# Autoconf sets -g -O2 by default. Override optimization level
|
||||||
|
# for non-gcc compilers
|
||||||
|
CFLAGS="$CFLAGS -O"
|
||||||
enable_gcc_warnings=no
|
enable_gcc_warnings=no
|
||||||
enable_gcc_warnings_advisory=no
|
enable_gcc_warnings_advisory=no
|
||||||
fi
|
fi
|
||||||
@ -1097,6 +1098,11 @@ if test x$enable_gcc_warnings = xyes || test x$enable_gcc_warnings_advisory = xy
|
|||||||
#error
|
#error
|
||||||
#endif])], have_gcc43=yes, have_gcc43=no)
|
#endif])], have_gcc43=yes, have_gcc43=no)
|
||||||
|
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
|
||||||
|
#if !defined(__clang__) || (__clang_major__ > 2) || (__clang_major__ == 2 && __clang_minor__ > 9)
|
||||||
|
#error
|
||||||
|
#endif])], have_clang29orlower=yes, have_clang29orlower=no)
|
||||||
|
|
||||||
save_CFLAGS="$CFLAGS"
|
save_CFLAGS="$CFLAGS"
|
||||||
CFLAGS="$CFLAGS -Wshorten-64-to-32"
|
CFLAGS="$CFLAGS -Wshorten-64-to-32"
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], have_shorten64_flag=yes,
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], have_shorten64_flag=yes,
|
||||||
@ -1132,10 +1138,18 @@ if test x$enable_gcc_warnings = xyes || test x$enable_gcc_warnings_advisory = xy
|
|||||||
if test x$have_gcc42 = xyes ; then
|
if test x$have_gcc42 = xyes ; then
|
||||||
# These warnings break gcc 4.0.2 and work on gcc 4.2
|
# These warnings break gcc 4.0.2 and work on gcc 4.2
|
||||||
# XXXX020 See if any of these work with earlier versions.
|
# XXXX020 See if any of these work with earlier versions.
|
||||||
CFLAGS="$CFLAGS -Waddress -Wmissing-noreturn -Wnormalized=id -Woverride-init -Wstrict-overflow=1"
|
CFLAGS="$CFLAGS -Waddress -Wmissing-noreturn -Wstrict-overflow=1"
|
||||||
|
|
||||||
# We used to use -Wstrict-overflow=5, but that breaks us heavily under 4.3.
|
# We used to use -Wstrict-overflow=5, but that breaks us heavily under 4.3.
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test x$have_gcc42 = xyes && test x$have_clang29orlower = xno; then
|
||||||
|
# These warnings break gcc 4.0.2 and clang, but work on gcc 4.2
|
||||||
|
# We only disable these for clang 2.9 and lower, in case they are
|
||||||
|
# supported in later versions.
|
||||||
|
CFLAGS="$CFLAGS -Wnormalized=id -Woverride-init"
|
||||||
|
fi
|
||||||
|
|
||||||
if test x$have_gcc43 = xyes ; then
|
if test x$have_gcc43 = xyes ; then
|
||||||
# These warnings break gcc 4.2 and work on gcc 4.3
|
# These warnings break gcc 4.2 and work on gcc 4.3
|
||||||
# XXXX020 See if any of these work with earlier versions.
|
# XXXX020 See if any of these work with earlier versions.
|
||||||
|
@ -304,11 +304,18 @@ geoip_db_digest(void)
|
|||||||
typedef struct clientmap_entry_t {
|
typedef struct clientmap_entry_t {
|
||||||
HT_ENTRY(clientmap_entry_t) node;
|
HT_ENTRY(clientmap_entry_t) node;
|
||||||
uint32_t ipaddr;
|
uint32_t ipaddr;
|
||||||
|
/** Time when we last saw this IP address, in MINUTES since the epoch.
|
||||||
|
*
|
||||||
|
* (This will run out of space around 4011 CE. If Tor is still in use around
|
||||||
|
* 4000 CE, please remember to add more bits to last_seen_in_minutes.) */
|
||||||
unsigned int last_seen_in_minutes:30;
|
unsigned int last_seen_in_minutes:30;
|
||||||
unsigned int action:2;
|
unsigned int action:2;
|
||||||
} clientmap_entry_t;
|
} clientmap_entry_t;
|
||||||
|
|
||||||
#define ACTION_MASK 3
|
/** Largest allowable value for last_seen_in_minutes. (It's a 30-bit field,
|
||||||
|
* so it can hold up to (1u<<30)-1, or 0x3fffffffu.
|
||||||
|
*/
|
||||||
|
#define MAX_LAST_SEEN_IN_MINUTES 0X3FFFFFFFu
|
||||||
|
|
||||||
/** Map from client IP address to last time seen. */
|
/** Map from client IP address to last time seen. */
|
||||||
static HT_HEAD(clientmap, clientmap_entry_t) client_history =
|
static HT_HEAD(clientmap, clientmap_entry_t) client_history =
|
||||||
@ -433,15 +440,16 @@ geoip_note_client_seen(geoip_client_action_t action,
|
|||||||
lookup.ipaddr = addr;
|
lookup.ipaddr = addr;
|
||||||
lookup.action = (int)action;
|
lookup.action = (int)action;
|
||||||
ent = HT_FIND(clientmap, &client_history, &lookup);
|
ent = HT_FIND(clientmap, &client_history, &lookup);
|
||||||
if (ent) {
|
if (! ent) {
|
||||||
ent->last_seen_in_minutes = now / 60;
|
|
||||||
} else {
|
|
||||||
ent = tor_malloc_zero(sizeof(clientmap_entry_t));
|
ent = tor_malloc_zero(sizeof(clientmap_entry_t));
|
||||||
ent->ipaddr = addr;
|
ent->ipaddr = addr;
|
||||||
ent->last_seen_in_minutes = now / 60;
|
|
||||||
ent->action = (int)action;
|
ent->action = (int)action;
|
||||||
HT_INSERT(clientmap, &client_history, ent);
|
HT_INSERT(clientmap, &client_history, ent);
|
||||||
}
|
}
|
||||||
|
if (now / 60 <= (int)MAX_LAST_SEEN_IN_MINUTES && now >= 0)
|
||||||
|
ent->last_seen_in_minutes = (unsigned)(now/60);
|
||||||
|
else
|
||||||
|
ent->last_seen_in_minutes = 0;
|
||||||
|
|
||||||
if (action == GEOIP_CLIENT_NETWORKSTATUS ||
|
if (action == GEOIP_CLIENT_NETWORKSTATUS ||
|
||||||
action == GEOIP_CLIENT_NETWORKSTATUS_V2) {
|
action == GEOIP_CLIENT_NETWORKSTATUS_V2) {
|
||||||
|
Loading…
Reference in New Issue
Block a user