|  | @@ -69,13 +69,14 @@
 | 
	
		
			
				|  |  |  #define MAX_WRITE_BUFFER_SIZE (64 * 1024 * 1024)
 | 
	
		
			
				|  |  |  #define DEFAULT_MAX_HEADER_LIST_SIZE (16 * 1024)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -#define DEFAULT_CLIENT_KEEPALIVE_TIME_S INT_MAX
 | 
	
		
			
				|  |  | -#define DEFAULT_CLIENT_KEEPALIVE_TIMEOUT_S 20
 | 
	
		
			
				|  |  | +#define DEFAULT_CLIENT_KEEPALIVE_TIME_MS INT_MAX
 | 
	
		
			
				|  |  | +#define DEFAULT_CLIENT_KEEPALIVE_TIMEOUT_MS 20000
 | 
	
		
			
				|  |  |  #define DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS false
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -static int g_default_client_keepalive_time_s = DEFAULT_CLIENT_KEEPALIVE_TIME_S;
 | 
	
		
			
				|  |  | -static int g_default_client_keepalive_timeout_s =
 | 
	
		
			
				|  |  | -    DEFAULT_CLIENT_KEEPALIVE_TIMEOUT_S;
 | 
	
		
			
				|  |  | +static int g_default_client_keepalive_time_ms =
 | 
	
		
			
				|  |  | +    DEFAULT_CLIENT_KEEPALIVE_TIME_MS;
 | 
	
		
			
				|  |  | +static int g_default_client_keepalive_timeout_ms =
 | 
	
		
			
				|  |  | +    DEFAULT_CLIENT_KEEPALIVE_TIMEOUT_MS;
 | 
	
		
			
				|  |  |  static bool g_default_keepalive_permit_without_calls =
 | 
	
		
			
				|  |  |      DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -154,7 +155,7 @@ static void retry_initiate_ping_locked(grpc_exec_ctx *exec_ctx, void *tp,
 | 
	
		
			
				|  |  |  #define DEFAULT_MIN_TIME_BETWEEN_PINGS_MS 0
 | 
	
		
			
				|  |  |  #define DEFAULT_MAX_PINGS_BETWEEN_DATA 3
 | 
	
		
			
				|  |  |  #define DEFAULT_MAX_PING_STRIKES 2
 | 
	
		
			
				|  |  | -#define DEFAULT_MIN_PING_INTERVAL_WITHOUT_DATA_S 300
 | 
	
		
			
				|  |  | +#define DEFAULT_MIN_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /** keepalive-relevant functions */
 | 
	
		
			
				|  |  |  static void init_keepalive_ping_locked(grpc_exec_ctx *exec_ctx, void *arg,
 | 
	
	
		
			
				|  | @@ -354,21 +355,21 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
 | 
	
		
			
				|  |  |        .min_time_between_pings =
 | 
	
		
			
				|  |  |            gpr_time_from_millis(DEFAULT_MIN_TIME_BETWEEN_PINGS_MS, GPR_TIMESPAN),
 | 
	
		
			
				|  |  |        .max_ping_strikes = DEFAULT_MAX_PING_STRIKES,
 | 
	
		
			
				|  |  | -      .min_ping_interval_without_data = gpr_time_from_seconds(
 | 
	
		
			
				|  |  | -          DEFAULT_MIN_PING_INTERVAL_WITHOUT_DATA_S, GPR_TIMESPAN),
 | 
	
		
			
				|  |  | +      .min_ping_interval_without_data = gpr_time_from_millis(
 | 
	
		
			
				|  |  | +          DEFAULT_MIN_PING_INTERVAL_WITHOUT_DATA_MS, GPR_TIMESPAN),
 | 
	
		
			
				|  |  |    };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* client-side keepalive setting */
 | 
	
		
			
				|  |  |    t->keepalive_time =
 | 
	
		
			
				|  |  | -      g_default_client_keepalive_time_s == INT_MAX
 | 
	
		
			
				|  |  | +      g_default_client_keepalive_time_ms == INT_MAX
 | 
	
		
			
				|  |  |            ? gpr_inf_future(GPR_TIMESPAN)
 | 
	
		
			
				|  |  | -          : gpr_time_from_seconds(g_default_client_keepalive_time_s,
 | 
	
		
			
				|  |  | -                                  GPR_TIMESPAN);
 | 
	
		
			
				|  |  | +          : gpr_time_from_millis(g_default_client_keepalive_time_ms,
 | 
	
		
			
				|  |  | +                                 GPR_TIMESPAN);
 | 
	
		
			
				|  |  |    t->keepalive_timeout =
 | 
	
		
			
				|  |  | -      g_default_client_keepalive_timeout_s == INT_MAX
 | 
	
		
			
				|  |  | +      g_default_client_keepalive_timeout_ms == INT_MAX
 | 
	
		
			
				|  |  |            ? gpr_inf_future(GPR_TIMESPAN)
 | 
	
		
			
				|  |  | -          : gpr_time_from_seconds(g_default_client_keepalive_timeout_s,
 | 
	
		
			
				|  |  | -                                  GPR_TIMESPAN);
 | 
	
		
			
				|  |  | +          : gpr_time_from_millis(g_default_client_keepalive_timeout_ms,
 | 
	
		
			
				|  |  | +                                 GPR_TIMESPAN);
 | 
	
		
			
				|  |  |    t->keepalive_permit_without_calls = g_default_keepalive_permit_without_calls;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if (channel_args) {
 | 
	
	
		
			
				|  | @@ -414,13 +415,14 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
 | 
	
		
			
				|  |  |                  (grpc_integer_options){DEFAULT_MIN_TIME_BETWEEN_PINGS_MS, 0,
 | 
	
		
			
				|  |  |                                         INT_MAX}),
 | 
	
		
			
				|  |  |              GPR_TIMESPAN);
 | 
	
		
			
				|  |  | -      } else if (0 == strcmp(channel_args->args[i].key,
 | 
	
		
			
				|  |  | -                             GRPC_ARG_HTTP2_MIN_PING_INTERVAL_WITHOUT_DATA_S)) {
 | 
	
		
			
				|  |  | -        t->ping_policy.min_ping_interval_without_data = gpr_time_from_seconds(
 | 
	
		
			
				|  |  | +      } else if (0 ==
 | 
	
		
			
				|  |  | +                 strcmp(channel_args->args[i].key,
 | 
	
		
			
				|  |  | +                        GRPC_ARG_HTTP2_MIN_PING_INTERVAL_WITHOUT_DATA_MS)) {
 | 
	
		
			
				|  |  | +        t->ping_policy.min_ping_interval_without_data = gpr_time_from_millis(
 | 
	
		
			
				|  |  |              grpc_channel_arg_get_integer(
 | 
	
		
			
				|  |  |                  &channel_args->args[i],
 | 
	
		
			
				|  |  | -                (grpc_integer_options){DEFAULT_MIN_PING_INTERVAL_WITHOUT_DATA_S,
 | 
	
		
			
				|  |  | -                                       0, INT_MAX}),
 | 
	
		
			
				|  |  | +                (grpc_integer_options){
 | 
	
		
			
				|  |  | +                    DEFAULT_MIN_PING_INTERVAL_WITHOUT_DATA_MS, 0, INT_MAX}),
 | 
	
		
			
				|  |  |              GPR_TIMESPAN);
 | 
	
		
			
				|  |  |        } else if (0 == strcmp(channel_args->args[i].key,
 | 
	
		
			
				|  |  |                               GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE)) {
 | 
	
	
		
			
				|  | @@ -432,23 +434,23 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
 | 
	
		
			
				|  |  |          t->enable_bdp_probe = grpc_channel_arg_get_integer(
 | 
	
		
			
				|  |  |              &channel_args->args[i], (grpc_integer_options){1, 0, 1});
 | 
	
		
			
				|  |  |        } else if (0 == strcmp(channel_args->args[i].key,
 | 
	
		
			
				|  |  | -                             GRPC_ARG_CLIENT_KEEPALIVE_TIME_S)) {
 | 
	
		
			
				|  |  | +                             GRPC_ARG_CLIENT_KEEPALIVE_TIME_MS)) {
 | 
	
		
			
				|  |  |          const int value = grpc_channel_arg_get_integer(
 | 
	
		
			
				|  |  |              &channel_args->args[i],
 | 
	
		
			
				|  |  | -            (grpc_integer_options){g_default_client_keepalive_time_s, 1,
 | 
	
		
			
				|  |  | +            (grpc_integer_options){g_default_client_keepalive_time_ms, 1,
 | 
	
		
			
				|  |  |                                     INT_MAX});
 | 
	
		
			
				|  |  |          t->keepalive_time = value == INT_MAX
 | 
	
		
			
				|  |  |                                  ? gpr_inf_future(GPR_TIMESPAN)
 | 
	
		
			
				|  |  | -                                : gpr_time_from_seconds(value, GPR_TIMESPAN);
 | 
	
		
			
				|  |  | +                                : gpr_time_from_millis(value, GPR_TIMESPAN);
 | 
	
		
			
				|  |  |        } else if (0 == strcmp(channel_args->args[i].key,
 | 
	
		
			
				|  |  | -                             GRPC_ARG_CLIENT_KEEPALIVE_TIMEOUT_S)) {
 | 
	
		
			
				|  |  | +                             GRPC_ARG_CLIENT_KEEPALIVE_TIMEOUT_MS)) {
 | 
	
		
			
				|  |  |          const int value = grpc_channel_arg_get_integer(
 | 
	
		
			
				|  |  |              &channel_args->args[i],
 | 
	
		
			
				|  |  | -            (grpc_integer_options){g_default_client_keepalive_timeout_s, 0,
 | 
	
		
			
				|  |  | +            (grpc_integer_options){g_default_client_keepalive_timeout_ms, 0,
 | 
	
		
			
				|  |  |                                     INT_MAX});
 | 
	
		
			
				|  |  |          t->keepalive_timeout = value == INT_MAX
 | 
	
		
			
				|  |  |                                     ? gpr_inf_future(GPR_TIMESPAN)
 | 
	
		
			
				|  |  | -                                   : gpr_time_from_seconds(value, GPR_TIMESPAN);
 | 
	
		
			
				|  |  | +                                   : gpr_time_from_millis(value, GPR_TIMESPAN);
 | 
	
		
			
				|  |  |        } else if (0 == strcmp(channel_args->args[i].key,
 | 
	
		
			
				|  |  |                               GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)) {
 | 
	
		
			
				|  |  |          t->keepalive_permit_without_calls =
 | 
	
	
		
			
				|  | @@ -2172,15 +2174,16 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args *args) {
 | 
	
		
			
				|  |  |    size_t i;
 | 
	
		
			
				|  |  |    if (args) {
 | 
	
		
			
				|  |  |      for (i = 0; i < args->num_args; i++) {
 | 
	
		
			
				|  |  | -      if (0 == strcmp(args->args[i].key, GRPC_ARG_CLIENT_KEEPALIVE_TIME_S)) {
 | 
	
		
			
				|  |  | -        g_default_client_keepalive_time_s = grpc_channel_arg_get_integer(
 | 
	
		
			
				|  |  | -            &args->args[i], (grpc_integer_options){
 | 
	
		
			
				|  |  | -                                g_default_client_keepalive_time_s, 1, INT_MAX});
 | 
	
		
			
				|  |  | +      if (0 == strcmp(args->args[i].key, GRPC_ARG_CLIENT_KEEPALIVE_TIME_MS)) {
 | 
	
		
			
				|  |  | +        g_default_client_keepalive_time_ms = grpc_channel_arg_get_integer(
 | 
	
		
			
				|  |  | +            &args->args[i],
 | 
	
		
			
				|  |  | +            (grpc_integer_options){g_default_client_keepalive_time_ms, 1,
 | 
	
		
			
				|  |  | +                                   INT_MAX});
 | 
	
		
			
				|  |  |        } else if (0 == strcmp(args->args[i].key,
 | 
	
		
			
				|  |  | -                             GRPC_ARG_CLIENT_KEEPALIVE_TIMEOUT_S)) {
 | 
	
		
			
				|  |  | -        g_default_client_keepalive_timeout_s = grpc_channel_arg_get_integer(
 | 
	
		
			
				|  |  | +                             GRPC_ARG_CLIENT_KEEPALIVE_TIMEOUT_MS)) {
 | 
	
		
			
				|  |  | +        g_default_client_keepalive_timeout_ms = grpc_channel_arg_get_integer(
 | 
	
		
			
				|  |  |              &args->args[i],
 | 
	
		
			
				|  |  | -            (grpc_integer_options){g_default_client_keepalive_timeout_s, 0,
 | 
	
		
			
				|  |  | +            (grpc_integer_options){g_default_client_keepalive_timeout_ms, 0,
 | 
	
		
			
				|  |  |                                     INT_MAX});
 | 
	
		
			
				|  |  |        } else if (0 == strcmp(args->args[i].key,
 | 
	
		
			
				|  |  |                               GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)) {
 |