Skip to content
  • Witold Kręcicki's avatar
    Fix a race in TCP accepting. · 85d8e4bf
    Witold Kręcicki authored and Evan Hunt's avatar Evan Hunt committed
    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.
    85d8e4bf
To find the state of this project's repository at the time of any of these versions, check out the tags.