Skip to content

Fix a race in TCP accepting.

Witold Krecicki requested to merge 1930-tcp-race-quota into master

There's a possibility of a race in TCP accepting code: T1 accepts a connection C1 T2 accepts a connection C2 T1 tries to accept a connection C3, but we hit a quota, isc_quota_cb_init() sets quota_accept_cb for the socket, we return from accept_connection T2 drops C2, but we race in quota_release with accepting C3 so we don't see quota->waiting is > 0, we don't launch the callback T1 accepts a connection C4, we are able to get the quota we clear the quota_accept_cb from sock->quotacb T1 drops C1, tries to call the callback which is zeroed, sigsegv.

Closes #1930 (closed)

Merge request reports