Ondřej Surý
64fbffbbaa
Use simple pthread_rwlock in place of our custom adaptive rwlock
2019-05-30 16:10:16 +02:00
Ondřej Surý
4d2d3b49ce
Cleanup the way we detect json-c library to use only pkg-config
2019-05-29 15:08:52 +02:00
Witold Kręcicki
75815c1581
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.
2019-05-24 03:18:41 -04:00
Mark Andrews
505ec918d7
include <isc/string.h> for isc_string_strerror_r prototype
2019-05-24 16:27:40 +10:00
Mark Andrews
978a37c827
use atomics in lib/isc/win32/app.c
2019-05-24 16:27:40 +10:00
Ondřej Surý
d5055665ca
Remove isc_hash_reverse function
2019-05-21 10:23:17 +00:00
Ondřej Surý
2e7d82443f
Convert isc_hash functions to use isc_siphash24
2019-05-21 10:23:13 +00:00
Ondřej Surý
2cbf633192
Add tests for the isc_siphash24 function
2019-05-20 19:01:31 +02:00
Ondřej Surý
a197df137a
Add reference SipHash 2-4 implementation
2019-05-20 19:01:31 +02:00
Ondřej Surý
0efc36c19a
Add portable <isc/endian.h> header
2019-05-20 19:01:31 +02:00
Ondřej Surý
eb8c9bdd55
Make lib/isc/app.c opaque and thread-safe
...
This work cleans up the API which includes couple of things:
1. Make the isc_appctx_t type fully opaque
2. Protect all access to the isc_app_t members via stdatomics
3. sigwait() is part of POSIX.1, remove dead non-sigwait code
4. Remove unused code: isc_appctx_set{taskmgr,sockmgr,timermgr}
2019-05-20 18:13:02 +02:00
Ondřej Surý
94cb73d96c
Use SO_REUSEPORT_LB on FreeBSD if available
2019-05-15 07:30:23 +02:00
Ondřej Surý
1c672367a0
Add safeguard against the other usage of SO_REUSEPORT
2019-05-15 07:30:23 +02:00
Ondřej Surý
ab389695b0
Add most useful relaxed and acquire-relase stdatomic convenience macros
...
The header file <isc/atomic.h> now contains convenience macros for
most useful explicit memory ordering for C11 stdatomics, only relaxed
and acquire-release semantics is being used. These macros SHOULD be
used instead of atomic_<func>_explicit functions.
2019-05-13 12:17:21 +07:00
Mark Andrews
f546769b8b
arm: just use the compiler's default yield support
2019-05-12 21:39:43 -04:00
Ondřej Surý
7ec9502ec5
Add benchmark for isc_{mem,mempool}_{get,put} operations
2019-05-11 04:02:35 +07:00
Mark Andrews
4886701c03
clear pointer before hash table
2019-05-07 10:37:37 +10:00
Evan Hunt
4e5edb35e4
simplify the isc_stat structure to take avantage of atomics
2019-05-06 12:53:45 -07:00
Evan Hunt
2f3876d187
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:32:05 +02:00
Mark Andrews
265554f895
use isc_refcount_decrement to decrement NEWCONNSOCK(dev)->references; use isc_refcount_increment instead of isc_refcount_init in socket_create
2019-04-23 00:12:17 -04:00
Ondřej Surý
2e40cc94dc
On non-GNUC systems, use uintmax_t in the ISC_ALIGN macro
2019-04-18 12:55:25 +02:00
Mark Andrews
a520662ed4
allow dlz to signal that the view's transfer acl should be used
2019-03-11 14:27:13 +11:00
Ondřej Surý
7eea756858
Restore missing check for flockfile and getc_unlocked
2019-03-08 21:20:20 +01:00
Ondřej Surý
a04a390195
Convert *.vcxproj.user to CRLF line endings
2019-03-08 18:01:48 +01:00
Ondřej Surý
c2637c8429
Use ForcedIncludeFiles directive to include config.h everywhere automatically
2019-03-08 17:14:38 +01:00
Ondřej Surý
1b25d8a0ca
Remove explicit '#include <config.h>' from the header files (the include should not have been there in the first place)
2019-03-08 15:15:05 +01:00
Ondřej Surý
78d0cb0a7d
Use coccinelle to remove explicit '#include <config.h>' from the source files
2019-03-08 15:15:05 +01:00
Mark Andrews
435ae2f29a
Handle EDQUOT and ENOSPC errors
2019-03-07 21:02:48 -08:00
Witold Kręcicki
b57a38ae43
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.
2019-03-06 12:56:11 -08:00
Mark Andrews
cb913177ae
improve clang / cmocka integration
2019-03-05 10:20:29 -08:00
Evan Hunt
efb0d1e83d
documentation changes setting up 9.15 development branch
2019-02-21 16:42:17 -08: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