Merge pull request #1499 from jtattermusch/core_cb_fix

Fix server side call finalization when connection is closed.
pull/1503/head^2
Nicolas Noble 10 years ago
commit 63733efd73
  1. 6
      src/core/transport/chttp2_transport.c

@ -823,12 +823,13 @@ static void unlock(transport *t) {
finish_reads(t);
/* gather any callbacks that need to be made */
if (!t->calling_back && cb) {
if (!t->calling_back) {
perform_callbacks = prepare_callbacks(t);
if (perform_callbacks) {
t->calling_back = 1;
}
if (t->error_state == ERROR_STATE_SEEN && !t->writing) {
if (cb) {
if (t->error_state == ERROR_STATE_SEEN && !t->writing && !t->calling_back) {
call_closed = 1;
t->calling_back = 1;
t->cb = NULL; /* no more callbacks */
@ -843,6 +844,7 @@ static void unlock(transport *t) {
t->calling_back = 1;
}
}
}
if (perform_callbacks || call_closed || num_goaways) {
ref_transport(t);

Loading…
Cancel
Save