Commit ab006391 authored by Ondřej Zajíček's avatar Ondřej Zajíček

Fixes a bug in locking code.

When multiple protocols have a lock for the same IP address, it crashes
under some circumstances.

Thanks to Matthias Schiffer for the bugreport.
parent dfc7a6c6
...@@ -70,7 +70,7 @@ olock_free(resource *r) ...@@ -70,7 +70,7 @@ olock_free(resource *r)
DBG("olock: -> %p becomes locked\n", n); DBG("olock: -> %p becomes locked\n", n);
q = SKIP_BACK(struct object_lock, n, n); q = SKIP_BACK(struct object_lock, n, n);
rem_node(n); rem_node(n);
add_tail_list(&l->waiters, &q->waiters); add_tail_list(&q->waiters, &l->waiters);
q->state = OLOCK_STATE_EVENT; q->state = OLOCK_STATE_EVENT;
add_head(&olock_list, n); add_head(&olock_list, n);
ev_schedule(olock_event); ev_schedule(olock_event);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment