In h2s_notify_send(), use the new sending_list instead of using the old
way of setting hs->send_wait to NULL, failing to do so may lead to crashes.
This should be backported to 1.9.
{
struct wait_event *sw;
- if (h2s->send_wait) {
+ if (h2s->send_wait && !(h2s->send_wait->events & SUB_CALL_UNSUBSCRIBE)) {
sw = h2s->send_wait;
sw->events &= ~SUB_RETRY_SEND;
+ sw->events |= SUB_CALL_UNSUBSCRIBE;
+ LIST_ADDQ(&h2s->h2c->sending_list, &h2s->sending_list);
tasklet_wakeup(sw->task);
- h2s->send_wait = NULL;
- LIST_DEL(&h2s->list);
- LIST_INIT(&h2s->list);
}
}