|
|
|
@ -194,9 +194,13 @@ gpr_slice grpc_chttp2_base64_encode_and_huffman_compress_impl(gpr_slice input) { |
|
|
|
|
|
|
|
|
|
/* encode full triplets */ |
|
|
|
|
for (i = 0; i < input_triplets; i++) { |
|
|
|
|
enc_add2(&out, in[0] >> 2, (uint8_t)((in[0] & 0x3) << 4) | (in[1] >> 4)); |
|
|
|
|
enc_add2(&out, (uint8_t)((in[1] & 0xf) << 2) | (in[2] >> 6), |
|
|
|
|
(uint8_t)(in[2] & 0x3f)); |
|
|
|
|
const uint8_t low_to_high = (uint8_t)((in[0] & 0x3) << 4); |
|
|
|
|
const uint8_t high_to_low = in[1] >> 4; |
|
|
|
|
enc_add2(&out, in[0] >> 2, low_to_high | high_to_low); |
|
|
|
|
|
|
|
|
|
const uint8_t a = (uint8_t)((in[1] & 0xf) << 2); |
|
|
|
|
const uint8_t b = (in[2] >> 6); |
|
|
|
|
enc_add2(&out, a | b, in[2] & 0x3f); |
|
|
|
|
in += 3; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -208,12 +212,14 @@ gpr_slice grpc_chttp2_base64_encode_and_huffman_compress_impl(gpr_slice input) { |
|
|
|
|
enc_add2(&out, in[0] >> 2, (uint8_t)((in[0] & 0x3) << 4)); |
|
|
|
|
in += 1; |
|
|
|
|
break; |
|
|
|
|
case 2: |
|
|
|
|
enc_add2(&out, in[0] >> 2, |
|
|
|
|
(uint8_t)((in[0] & 0x3) << 4) | (uint8_t)(in[1] >> 4)); |
|
|
|
|
case 2: { |
|
|
|
|
const uint8_t low_to_high = (uint8_t)((in[0] & 0x3) << 4); |
|
|
|
|
const uint8_t high_to_low = in[1] >> 4; |
|
|
|
|
enc_add2(&out, in[0] >> 2, low_to_high | high_to_low); |
|
|
|
|
enc_add1(&out, (uint8_t)((in[1] & 0xf) << 2)); |
|
|
|
|
in += 2; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (out.temp_length) { |
|
|
|
|