Mark Andrews
65ece077c2
teach cppcheck that _assert_int_equal and _assert_int_not_equal don't return on failure
...
(cherry picked from commit 5d5d751c7f )
2019-06-04 15:23:49 +10:00
Witold Kręcicki
b6d11230b2
Fix a possible race between udp dispatch and socket code
...
There's a small possibility of race between udp dispatcher and
socket code - socket code can still hold internal reference to a
socket while dispatcher calls isc_socket_open, which can cause
an assertion failure. Fix it by relaxing the assertion test, and
instead simply locking the socket in isc_socket_open.
(cherry picked from commit e517c18d98 )
2019-05-31 12:32:37 -07:00
Witold Kręcicki
000fdd8fa5
Fix a possible deadlock in TCP accepting
...
Each network thread holds an array of locks, indexed by a hash
of fd. When we accept a connection we hold a lock in accepting thread.
We then generate the thread number and lock bucket for the new
connection socket - if we hit the same thread and lock bucket as
accepting socket we get a deadlock. Avoid this by checking if we're
in the same thread/lock bucket and not locking in this case.
(cherry picked from commit 75815c1581 )
2019-05-24 12:50:15 +02:00
Ondřej Surý
2b343d1fc1
Use SO_REUSEPORT_LB on FreeBSD if available
...
(cherry picked from commit 94cb73d96c )
2019-05-17 07:45:21 +02:00
Ondřej Surý
5d8d65bfdc
Add safeguard against the other usage of SO_REUSEPORT
...
(cherry picked from commit 1c672367a0 )
2019-05-17 07:45:21 +02:00
Mark Andrews
4de58ee1c8
arm: just use the compiler's default yield support
...
(cherry picked from commit f546769b8b )
2019-05-13 12:19:26 +10:00
Tinderbox User
d7862ea81c
prep 9.14.2
2019-05-10 04:51:22 +00:00
Mark Andrews
dbbbed29e9
clear pointer before hash table
...
(cherry picked from commit 4886701c03 )
2019-05-07 11:07:32 +10:00
Evan Hunt
fb58d23a94
simplify the isc_stat structure to take avantage of atomics
...
(cherry picked from commit 4e5edb35e4 )
2019-05-06 14:02:41 -07:00
Tinderbox User
02cbca91d7
prep 9.14.1
...
(cherry picked from commit c7004347bc )
2019-04-25 17:00:56 +02:00
Evan Hunt
a78af2f1d3
refactor tcpquota and pipeline refs; allow special-case overrun in isc_quota
...
- if the TCP quota has been exceeded but there are no clients listening
for new connections on the interface, we can now force attachment to the
quota using isc_quota_force(), instead of carrying on with the quota not
attached.
- the TCP client quota is now referenced via a reference-counted
'ns_tcpconn' object, one of which is created whenever a client begins
listening for new connections, and attached to by members of that
client's pipeline group. when the last reference to the tcpconn
object is detached, it is freed and the TCP quota slot is released.
- reduce code duplication by adding mark_tcp_active() function
- convert counters to stdatomic
(cherry picked from commit a8dd133d270873b736c1be9bf50ebaa074f5b38f)
(cherry picked from commit 4a8fc979c4 )
2019-04-25 16:20:50 +02:00
Mark Andrews
ca51ee2bb3
use isc_refcount_decrement to decrement NEWCONNSOCK(dev)->references; use isc_refcount_increment instead of isc_refcount_init in socket_create
...
(cherry picked from commit 265554f895 )
2019-04-23 14:47:20 +10:00
Ondřej Surý
3349792aa3
On non-GNUC systems, use uintmax_t in the ISC_ALIGN macro
...
(cherry picked from commit 2e40cc94dc )
2019-04-18 13:17:21 +02:00
Ondřej Surý
a169e35634
Restore missing check for flockfile and getc_unlocked
...
(cherry picked from commit 7eea756858 )
2019-03-08 21:35:08 +01:00
Mark Andrews
cdf928d391
Handle EDQUOT and ENOSPC errors
...
(cherry picked from commit 435ae2f29a )
2019-03-07 21:23:39 -08:00
Witold Kręcicki
54f9c1d306
Fix a race in socket code when internal_{accept, send, receive} is called
...
from event loop on an socket and, in the meantime, someone has closed this
socket.
(cherry picked from commit b57a38ae43 )
2019-03-06 14:15:19 -08:00
Mark Andrews
7c78e5b90a
improve clang / cmocka integration
...
(cherry picked from commit cb913177ae )
2019-03-05 10:42:01 -08:00
Evan Hunt
3396f9396f
documentation changes establishing the 9.14 stable branch
2019-02-27 18:06:35 -05:00
Tinderbox User
856c74700f
prep 9.13.7
2019-02-21 01:57:08 +00:00
Mark Andrews
f87b88e520
remove dead assignments
2019-02-19 08:12:09 +11:00
Mark Andrews
76a1c1531a
assert result is ISC_R_SUCCESS
2019-02-19 07:57:14 +11:00
Tinderbox User
b4d3f78293
prep 9.13.6
2019-02-06 22:13:05 +00:00
Evan Hunt
2f13524164
initalize a named_g_defaultbindkeys variable
2019-02-06 13:18:00 +11:00
Ondřej Surý
3a3e75042d
Remove support for compiling without assertions (Both ISC_CHECK_ALL, ISC_CHECK_NONE are now gone)
2019-01-31 11:16:08 +01:00
Ondřej Surý
27eb6189a8
Fix Centos 6 build by explicitly casting to __typeof__(obj) in atomic_compare_exchange_strong shim function
2019-01-30 15:54:17 +01:00
Witold Kręcicki
9ded5d5193
Cast atomic_load_explicit to proper size
2019-01-30 14:12:06 +01:00
Ondřej Surý
f2d1a88efc
Add #pragma intrinsic for intrinsic Windows functions
2019-01-30 13:48:58 +01:00
Ondřej Surý
9539e1c3a1
Fix memory_order_cst_seq -> memory_order_seq_cst typo
2019-01-30 13:48:58 +01:00
Ondřej Surý
d3e0604354
Properly use atomic_compare_exchange instead of load/store
2019-01-30 13:48:58 +01:00
Ondřej Surý
4f5e83b139
Add define for InterlockedExchangeAdd8 intrinsic
2019-01-30 13:48:58 +01:00
Ondřej Surý
7a7a8b0f7b
Add atomic_bool implementation to unix and win32 stdatomic.h shim headers
2019-01-30 09:37:38 +01:00
Ondřej Surý
a84e70acd0
Fix copy&paste error in the atomic_fetch_add_explicit{32,64} macros.
...
- InterlockedExchange was incorrectly used in place where InterlockedExchangeAdd
should have been used
2019-01-30 09:37:38 +01:00
Evan Hunt
19dd6a409c
Fix a typo in the win32 version of the atomic_store macro
2019-01-30 09:37:38 +01:00
Evan Hunt
39527e9c36
Moved the unix version to lib/isc/unix/include/isc so it's more obvious in the future that it isn't the only copy
2019-01-30 09:37:38 +01:00
Witold Kręcicki
a003908af4
Fix a race in access to manager->tasks in taskmgr
...
Make taskmgr->mode and boolean state flags (exclusive, paused, exiting) atomic.
2019-01-29 03:32:29 -05:00
Evan Hunt
995134ce76
rename struct members to avoid a name collision on BSD
2019-01-28 10:59:48 -08:00
Witold Kręcicki
42d9a536a7
Make isc_counter use atomics instead of locks
2019-01-25 04:26:49 -05:00
Witold Kręcicki
0af500a2c5
- Make isc_quota use atomics instead of locks
...
- Use getters for isc_quota parameters, make fields private
- Fix a potential data race with recursion clients limits logging
2019-01-25 04:26:49 -05:00
Witold Kręcicki
814bfa23b2
Add atomic_store_relaxed and atomic_load_relaxed macros to isc/atomic.h, fix issues in isc/stdatomic.h
2019-01-25 04:26:49 -05:00
Mark Andrews
2be55f5c05
use smt_pause instead of pause on sparc
2019-01-15 20:29:27 -05:00
Mark Andrews
bd529b1f30
silence coverity issues; move isc_refcount_decrement out of INSIST
2019-01-10 14:42:28 +11:00
Ondřej Surý
e2cdf066ea
Remove message catalogs
2019-01-09 23:44:26 +01:00
Mark Andrews
5e8b772ad1
Ensure base64/base32/hex fields in DNS records that should be non-empty are.
2019-01-09 18:04:21 +11:00
Ondřej Surý
ff7c868f25
__SANITIZE_ADDRESS__ needs to be defined to 1
2018-12-19 22:02:37 +01:00
Ondřej Surý
272c065268
Add emacs .dir-locals.el settings for flycheck mode
2018-12-19 17:03:37 +01:00
Ondřej Surý
8903d68d69
gcc defines __SANITIZE_ADDRESS__ and not __ADDRESS_SANITIZER__, use the correct #define
2018-12-19 12:24:59 +01:00
Ondřej Surý
e1ce3a3d42
Define __ADDRESS_SANITIZER__ if compiling under clang's AddressSanitizer
2018-12-19 09:54:37 +01:00
Tinderbox User
5bd855251c
prep 9.13.5
2018-12-07 03:41:19 +00:00
Ondřej Surý
953a957dfa
Just #define isc_refcount_increment0() to isc_refcount_increment()
2018-12-05 14:16:41 +01:00
Ondřej Surý
8537adef4c
The isc_refcount_decrement must use memory_order_release and isc_refcount_destroy must run thread barrier with memory_order_require
2018-12-05 14:11:53 +01:00