|
|
@ -37,6 +37,7 @@ |
|
|
|
#include <stdio.h> |
|
|
|
#include <stdio.h> |
|
|
|
#include <string.h> |
|
|
|
#include <string.h> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "src/core/profiling/timers.h" |
|
|
|
#include "src/core/support/string.h" |
|
|
|
#include "src/core/support/string.h" |
|
|
|
#include "src/core/transport/chttp2/frame_data.h" |
|
|
|
#include "src/core/transport/chttp2/frame_data.h" |
|
|
|
#include "src/core/transport/chttp2/frame_goaway.h" |
|
|
|
#include "src/core/transport/chttp2/frame_goaway.h" |
|
|
@ -783,6 +784,8 @@ static void unlock(transport *t) { |
|
|
|
grpc_stream_op_buffer nuke_now; |
|
|
|
grpc_stream_op_buffer nuke_now; |
|
|
|
const grpc_transport_callbacks *cb = t->cb; |
|
|
|
const grpc_transport_callbacks *cb = t->cb; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GRPC_TIMER_MARK(HTTP2_UNLOCK_BEGIN, 0); |
|
|
|
|
|
|
|
|
|
|
|
grpc_sopb_init(&nuke_now); |
|
|
|
grpc_sopb_init(&nuke_now); |
|
|
|
if (t->nuke_later_sopb.nops) { |
|
|
|
if (t->nuke_later_sopb.nops) { |
|
|
|
grpc_sopb_swap(&nuke_now, &t->nuke_later_sopb); |
|
|
|
grpc_sopb_swap(&nuke_now, &t->nuke_later_sopb); |
|
|
@ -831,6 +834,8 @@ static void unlock(transport *t) { |
|
|
|
/* finally unlock */ |
|
|
|
/* finally unlock */ |
|
|
|
gpr_mu_unlock(&t->mu); |
|
|
|
gpr_mu_unlock(&t->mu); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GRPC_TIMER_MARK(HTTP2_UNLOCK_CLEANUP, 0); |
|
|
|
|
|
|
|
|
|
|
|
/* perform some callbacks if necessary */ |
|
|
|
/* perform some callbacks if necessary */ |
|
|
|
for (i = 0; i < num_goaways; i++) { |
|
|
|
for (i = 0; i < num_goaways; i++) { |
|
|
|
cb->goaway(t->cb_user_data, &t->base, goaways[i].status, goaways[i].debug); |
|
|
|
cb->goaway(t->cb_user_data, &t->base, goaways[i].status, goaways[i].debug); |
|
|
@ -861,6 +866,8 @@ static void unlock(transport *t) { |
|
|
|
grpc_sopb_destroy(&nuke_now); |
|
|
|
grpc_sopb_destroy(&nuke_now); |
|
|
|
|
|
|
|
|
|
|
|
gpr_free(goaways); |
|
|
|
gpr_free(goaways); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GRPC_TIMER_MARK(HTTP2_UNLOCK_END, 0); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|