Try to get some more debug info

pull/6897/head
Craig Tiller 9 years ago
parent fc25b5f2a8
commit 8df99f2ac5
  1. 23
      src/core/lib/security/transport/handshake.c

@ -66,6 +66,17 @@ typedef struct {
gpr_refcount refs;
} grpc_security_handshake;
static void dump_state(const char *state, grpc_security_handshake *h,
grpc_error *error) {
gpr_timespec ttl =
gpr_time_sub(h->timer.deadline, gpr_now(h->timer.deadline.clock_type));
const char *msg = grpc_error_string(error);
gpr_log(GPR_DEBUG, "%p: %s ttl=%d.%09d err=%s", h, state, ttl.tv_sec,
ttl.tv_nsec, msg);
grpc_error_free_string(msg);
GRPC_ERROR_UNREF(error);
}
static void on_handshake_data_received_from_peer(grpc_exec_ctx *exec_ctx,
void *setup,
grpc_error *error);
@ -116,6 +127,7 @@ static void unref_handshake(grpc_security_handshake *h) {
static void security_handshake_done(grpc_exec_ctx *exec_ctx,
grpc_security_handshake *h,
grpc_error *error) {
dump_state("done", h, GRPC_ERROR_REF(error));
grpc_timer_cancel(exec_ctx, &h->timer);
if (!h->is_client_side) {
security_connector_remove_handshake(h);
@ -144,6 +156,9 @@ static void on_peer_checked(grpc_exec_ctx *exec_ctx, void *user_data,
grpc_security_status status,
grpc_auth_context *auth_context) {
grpc_security_handshake *h = user_data;
dump_state("on_peer_checked", h,
grpc_error_set_int(GRPC_ERROR_CREATE("on_peer_checked"),
GRPC_ERROR_INT_SECURITY_STATUS, status));
tsi_frame_protector *protector;
tsi_result result;
if (status != GRPC_SECURITY_OK) {
@ -176,6 +191,9 @@ static void check_peer(grpc_exec_ctx *exec_ctx, grpc_security_handshake *h) {
tsi_peer peer;
tsi_result result = tsi_handshaker_extract_peer(h->handshaker, &peer);
dump_state(
"check_peer", h,
grpc_set_tsi_error_result(GRPC_ERROR_CREATE("peer_extraction"), result));
if (result != TSI_OK) {
security_handshake_done(
exec_ctx, h, grpc_set_tsi_error_result(
@ -192,6 +210,7 @@ static void send_handshake_bytes_to_peer(grpc_exec_ctx *exec_ctx,
tsi_result result = TSI_OK;
gpr_slice to_send;
dump_state("send_handshake_bytes_to_peer", h, GRPC_ERROR_NONE);
do {
size_t to_send_size = h->handshake_buffer_size - offset;
result = tsi_handshaker_get_bytes_to_send_to_peer(
@ -231,6 +250,7 @@ static void on_handshake_data_received_from_peer(grpc_exec_ctx *exec_ctx,
size_t num_left_overs;
int has_left_overs_in_current_slice = 0;
dump_state("on_handshake_data_received_from_peer", h, GRPC_ERROR_REF(error));
if (error != GRPC_ERROR_NONE) {
security_handshake_done(
exec_ctx, h,
@ -294,6 +314,7 @@ static void on_handshake_data_sent_to_peer(grpc_exec_ctx *exec_ctx,
void *handshake, grpc_error *error) {
grpc_security_handshake *h = handshake;
dump_state("on_handshake_data_sent_to_peer", h, GRPC_ERROR_REF(error));
/* Make sure that write is OK. */
if (error != GRPC_ERROR_NONE) {
if (handshake != NULL)
@ -316,6 +337,7 @@ static void on_handshake_data_sent_to_peer(grpc_exec_ctx *exec_ctx,
static void on_timeout(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
grpc_security_handshake *h = arg;
dump_state("on_timeout", h, GRPC_ERROR_REF(error));
if (error == GRPC_ERROR_NONE) {
grpc_endpoint_shutdown(exec_ctx, h->wrapped_endpoint);
}
@ -346,6 +368,7 @@ void grpc_do_security_handshake(
gpr_slice_buffer_init(&h->left_overs);
gpr_slice_buffer_init(&h->outgoing);
gpr_slice_buffer_init(&h->incoming);
dump_state("grpc_do_security_handshake", h, GRPC_ERROR_NONE);
if (!is_client_side) {
grpc_server_security_connector *server_connector =
(grpc_server_security_connector *)connector;

Loading…
Cancel
Save