Lines Matching refs:con

232 static request_st * h2_init_stream (request_st * const h2r, connection * const con);
282 h2_send_settings_ack (connection * const con) in h2_send_settings_ack() argument
292 chunkqueue_append_mem(con->write_queue, in h2_send_settings_ack()
299 h2_send_rst_stream_id (uint32_t h2id, connection * const con, const request_h2error_t e) in h2_send_rst_stream_id() argument
316 chunkqueue_append_mem(con->write_queue, /*(+3 to skip over align padding)*/ in h2_send_rst_stream_id()
337 h2_send_rst_stream (request_st * const r, connection * const con, const request_h2error_t e) in h2_send_rst_stream() argument
339 h2_send_rst_stream_state(r, con->h2);/*(sets r->h2state = H2_STATE_CLOSED)*/ in h2_send_rst_stream()
340 h2_send_rst_stream_id(r->h2id, con, e); in h2_send_rst_stream()
346 h2_send_goaway_rst_stream (connection * const con) in h2_send_goaway_rst_stream() argument
348 h2con * const h2c = con->h2; in h2_send_goaway_rst_stream()
356 h2_send_rst_stream_id(r->h2id, con, H2_E_PROTOCOL_ERROR); in h2_send_goaway_rst_stream()
362 h2_send_goaway (connection * const con, const request_h2error_t e) in h2_send_goaway() argument
372 h2_send_goaway_rst_stream(con); in h2_send_goaway()
375 h2con * const h2c = con->h2; in h2_send_goaway()
399 chunkqueue_append_mem(con->write_queue, /*(+3 to skip over align padding)*/ in h2_send_goaway()
406 h2_send_goaway_e (connection * const con, const request_h2error_t e) in h2_send_goaway_e() argument
408 h2_send_goaway(con, e); in h2_send_goaway_e()
414 h2_send_refused_stream (uint32_t h2id, connection * const con) in h2_send_refused_stream() argument
416 h2con * const h2c = con->h2; in h2_send_refused_stream()
454 h2_send_rst_stream_id(h2id, con, H2_E_REFUSED_STREAM); in h2_send_refused_stream()
460 h2_recv_goaway (connection * const con, const uint8_t * const s, uint32_t len) in h2_recv_goaway() argument
465 h2_send_goaway_e(con, H2_E_FRAME_SIZE_ERROR); in h2_recv_goaway()
469 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_goaway()
488 h2_send_goaway(con, e==H2_E_NO_ERROR ? H2_E_NO_ERROR : H2_E_PROTOCOL_ERROR); in h2_recv_goaway()
489 h2con * const h2c = con->h2; in h2_recv_goaway()
496 h2_recv_rst_stream (connection * const con, const uint8_t * const s, const uint32_t len) in h2_recv_rst_stream() argument
501 h2_send_goaway_e(con, H2_E_FRAME_SIZE_ERROR); in h2_recv_rst_stream()
506 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_rst_stream()
509 h2con * const h2c = con->h2; in h2_recv_rst_stream()
515 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_rst_stream()
530 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_rst_stream()
533 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_rst_stream()
541 h2_recv_ping (connection * const con, uint8_t * const s, const uint32_t len) in h2_recv_ping() argument
562 h2_send_goaway_e(con, H2_E_FRAME_SIZE_ERROR); in h2_recv_ping()
567 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_ping()
575 chunkqueue_append_mem(con->write_queue, (const char *)s, 17); in h2_recv_ping()
653 h2_recv_priority_update (connection * const con, const uint8_t * const s, const uint32_t len) in h2_recv_priority_update() argument
658 h2_send_goaway_e(con, H2_E_FRAME_SIZE_ERROR); in h2_recv_priority_update()
663 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_priority_update()
668 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_priority_update()
671 h2con * const h2c = con->h2; in h2_recv_priority_update()
704 h2_recv_priority (connection * const con, const uint8_t * const s, const uint32_t len) in h2_recv_priority() argument
709 h2_send_goaway_e(con, H2_E_FRAME_SIZE_ERROR); in h2_recv_priority()
714 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_priority()
726 h2con * const h2c = con->h2; in h2_recv_priority()
732 h2_send_rst_stream(r, con, H2_E_PROTOCOL_ERROR); in h2_recv_priority()
746 h2_send_rst_stream_id(id, con, H2_E_PROTOCOL_ERROR); in h2_recv_priority()
753 h2_recv_window_update (connection * const con, const uint8_t * const s, const uint32_t len) in h2_recv_window_update() argument
758 h2_send_goaway_e(con, H2_E_FRAME_SIZE_ERROR); in h2_recv_window_update()
765 r = &con->request; in h2_recv_window_update()
767 h2con * const h2c = con->h2; in h2_recv_window_update()
781 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_window_update()
787 h2_send_rst_stream_id(id, con, H2_E_PROTOCOL_ERROR); in h2_recv_window_update()
789 h2_send_rst_stream_id(id, con, H2_E_FLOW_CONTROL_ERROR); in h2_recv_window_update()
802 h2_send_goaway_e(con, e); in h2_recv_window_update()
804 h2_send_rst_stream(r, con, e); in h2_recv_window_update()
812 h2_send_window_update (connection * const con, uint32_t h2id, const uint32_t len) in h2_send_window_update() argument
830 chunkqueue_append_mem(con->write_queue, /*(+3 to skip over align padding)*/ in h2_send_window_update()
837 h2_send_window_update_unit (connection * const con, request_st * const r, const uint32_t len) in h2_send_window_update_unit() argument
842 h2_send_window_update(con, r->h2id, 16384); /*(r->h2_rwin)*/ in h2_send_window_update_unit()
848 h2_parse_frame_settings (connection * const con, const uint8_t *s, uint32_t len) in h2_parse_frame_settings() argument
852 h2con * const h2c = con->h2; in h2_parse_frame_settings()
870 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_parse_frame_settings()
880 h2_send_goaway_e(con, H2_E_FLOW_CONTROL_ERROR); in h2_parse_frame_settings()
896 h2_send_rst_stream(r, con, H2_E_FLOW_CONTROL_ERROR); in h2_parse_frame_settings()
906 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_parse_frame_settings()
920 h2_send_goaway_e(con, H2_E_FRAME_SIZE_ERROR); in h2_parse_frame_settings()
931 h2_recv_settings (connection * const con, const uint8_t * const s, const uint32_t len) in h2_recv_settings() argument
936 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_settings()
940 h2con * const h2c = con->h2; in h2_recv_settings()
942 h2_parse_frame_settings(con, s+9, len); in h2_recv_settings()
944 h2_send_settings_ack(con); in h2_recv_settings()
952 h2_send_goaway_e(con, H2_E_FRAME_SIZE_ERROR); in h2_recv_settings()
956 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_settings()
962 h2_recv_end_data (request_st * const r, connection * const con, const uint32_t alen) in h2_recv_end_data() argument
972 h2_send_rst_stream(r, con, H2_E_PROTOCOL_ERROR); in h2_recv_end_data()
982 h2_recv_data (connection * const con, const uint8_t * const s, const uint32_t len) in h2_recv_data() argument
990 h2con * const h2c = con->h2; in h2_recv_data()
993 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_data()
1002 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_data()
1008 request_st * const h2r = &con->request; in h2_recv_data()
1029 chunkqueue * const cq = con->read_queue; in h2_recv_data()
1044 h2_send_window_update_unit(con, h2r, len); /*(h2r->h2_rwin)*/ in h2_recv_data()
1049 h2_send_goaway_e(con, H2_E_NO_ERROR); in h2_recv_data()
1056 h2_send_rst_stream_id(id, con, H2_E_STREAM_CLOSED); in h2_recv_data()
1058 h2_send_window_update_unit(con, h2r, len); /*(h2r->h2_rwin)*/ in h2_recv_data()
1083 h2_send_window_update_unit(con, h2r, len); /*(h2r->h2_rwin)*/ in h2_recv_data()
1093 h2_send_rst_stream(r, con, H2_E_PROTOCOL_ERROR); in h2_recv_data()
1106 if (!h2_recv_end_data(r, con, alen)) { in h2_recv_data()
1135 h2_send_rst_stream_id(id, con, H2_E_STREAM_CLOSED); in h2_recv_data()
1155 h2_send_window_update_unit(con, r, wupd); in h2_recv_data()
1177 h2_send_rst_stream(r, con, H2_E_INTERNAL_ERROR); in h2_recv_data()
1207 …ation (uint32_t n, uint32_t clen, const off_t cqlen, chunkqueue * const cq, connection * const con) in h2_recv_continuation() argument
1213 h2con * const h2c = con->h2; in h2_recv_continuation()
1224 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_continuation()
1230 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_continuation()
1234 h2_send_goaway_e(con, H2_E_FRAME_SIZE_ERROR); in h2_recv_continuation()
1239 h2_send_goaway_e(con, H2_E_FRAME_SIZE_ERROR); in h2_recv_continuation()
1283 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_continuation()
1310 h2_send_goaway_e(con, H2_E_FRAME_SIZE_ERROR); in h2_recv_continuation()
1342 h2_recv_trailers_r (connection * const con, h2con * const h2c, const uint32_t id, const uint32_t fl… in h2_recv_trailers_r() argument
1360 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_trailers_r()
1365 h2_send_rst_stream(r, con, H2_E_STREAM_CLOSED); in h2_recv_trailers_r()
1373 h2_send_rst_stream(r, con, H2_E_PROTOCOL_ERROR); in h2_recv_trailers_r()
1377 return h2_recv_end_data(r, con, 0) ? r : NULL; in h2_recv_trailers_r()
1384 h2con * const h2c = r->con->h2; in h2_parse_headers_frame()
1431 "fd:%d id:%u rqst: %.*s: %.*s", r->con->fd, r->h2id, in h2_parse_headers_frame()
1467 h2_send_rst_stream(r, r->con, err); in h2_parse_headers_frame()
1471 h2_send_goaway_e(r->con, err); in h2_parse_headers_frame()
1473 h2_retire_stream(r, r->con); in h2_parse_headers_frame()
1497 http_request_headers_process_h2(r, r->con->proto_default_port); in h2_parse_headers_frame()
1503 h2_recv_headers (connection * const con, uint8_t * const s, uint32_t flen) in h2_recv_headers() argument
1513 h2con * const h2c = con->h2; in h2_recv_headers()
1517 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_headers()
1522 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_headers()
1526 request_st * const h2r = &con->request; in h2_recv_headers()
1531 return h2_send_refused_stream(id, con); in h2_recv_headers()
1539 r = h2_init_stream(h2r, con); in h2_recv_headers()
1561 r = h2_recv_trailers_r(con, h2c, id, s[4]); /* (cold code path) */ in h2_recv_headers()
1575 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_headers()
1577 h2_retire_stream(r, con); in h2_recv_headers()
1589 h2_send_rst_stream(r, con, H2_E_PROTOCOL_ERROR); in h2_recv_headers()
1591 h2_retire_stream(r, con); in h2_recv_headers()
1623 h2_retire_stream(r, con); in h2_recv_headers()
1642 h2_send_window_update(con, id, 131072); /*(add 128k)*/ in h2_recv_headers()
1687 h2_send_rst_stream(r, con, H2_E_PROTOCOL_ERROR); in h2_recv_headers()
1688 h2_retire_stream(r, con); in h2_recv_headers()
1699 h2_retire_stream(r, con); in h2_recv_headers()
1707 h2_parse_frames (connection * const con) in h2_parse_frames() argument
1710 h2con * const h2c = con->h2; in h2_parse_frames()
1711 chunkqueue * const cq = con->read_queue; in h2_parse_frames()
1731 h2_send_goaway_e(con, H2_E_FRAME_SIZE_ERROR); in h2_parse_frames()
1750 clen = h2_recv_continuation(9+flen, clen, cqlen, cq, con); in h2_parse_frames()
1770 int rc = h2_recv_headers(con, s, flen); in h2_parse_frames()
1776 con->read_idle_ts = log_monotonic_secs; in h2_parse_frames()
1786 con->read_idle_ts = log_monotonic_secs; in h2_parse_frames()
1788 if (!h2_recv_data(con, s, flen)) in h2_parse_frames()
1814 h2_recv_window_update(con, s, flen); in h2_parse_frames()
1817 h2_recv_priority_update(con, s, flen); in h2_parse_frames()
1820 h2_recv_settings(con, s, flen); in h2_parse_frames()
1823 h2_recv_ping(con, s, flen); in h2_parse_frames()
1826 h2_recv_rst_stream(con, s, flen); in h2_parse_frames()
1829 if (!h2_recv_goaway(con, s, flen)) return 0; in h2_parse_frames()
1832 h2_recv_priority(con, s, flen); in h2_parse_frames()
1836 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_parse_frames()
1853 h2_want_read (connection * const con) in h2_want_read() argument
1855 chunkqueue * const cq = con->read_queue; in h2_want_read()
1892 h2_recv_client_connection_preface (connection * const con) in h2_recv_client_connection_preface() argument
1896 chunkqueue * const cq = con->read_queue; in h2_recv_client_connection_preface()
1902 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_client_connection_preface()
1918 h2_send_goaway_e(con, H2_E_PROTOCOL_ERROR); in h2_recv_client_connection_preface()
1925 h2_read_client_connection_preface (struct connection * const con, chunkqueue * const cq, off_t max_… in h2_read_client_connection_preface() argument
1930 void ** const hctx = con->plugin_ctx+0; /*(0 idx used for h2)*/ in h2_read_client_connection_preface()
1934 int rc = (network_read)(con, cq, max_bytes); in h2_read_client_connection_preface()
1935 if (NULL == con->h2) return rc; /*(unexpected; already cleaned up)*/ in h2_read_client_connection_preface()
1936 if (-1 != rc && h2_recv_client_connection_preface(con)) { in h2_read_client_connection_preface()
1937 con->network_read = network_read; in h2_read_client_connection_preface()
1940 con->read_idle_ts = log_monotonic_secs; in h2_read_client_connection_preface()
1947 h2_init_con (request_st * const restrict h2r, connection * const restrict con, const buffer * const… in h2_init_con() argument
1949 h2con * const h2c = con->h2 = ck_calloc(1, sizeof(h2con)); in h2_init_con()
1950 con->read_idle_ts = log_monotonic_secs; in h2_init_con()
1951 con->keep_alive_idle = h2r->conf.max_keep_alive_idle; in h2_init_con()
1970 h2_parse_frame_settings(con, (uint8_t *)BUF_PTR_LEN(http2_settings)); in h2_init_con()
2012 chunkqueue_append_mem(con->write_queue, in h2_init_con()
2015 if (!h2_recv_client_connection_preface(con)) { in h2_init_con()
2017 con->plugin_ctx[0] = (void *)(uintptr_t)con->network_read; in h2_init_con()
2018 con->network_read = h2_read_client_connection_preface; in h2_init_con()
2028 h2_send_hpack (request_st * const r, connection * const con, const char *data, uint32_t dlen, const… in h2_send_hpack() argument
2069 chunkqueue_append_buffer_open_sz(con->write_queue, dlen + (dlen>>10) + 9); in h2_send_hpack()
2071 h2con * const h2c = con->h2; in h2_send_hpack()
2081 chunkqueue_append_mem(con->write_queue, /*(+3 to skip over align pad)*/ in h2_send_hpack()
2083 chunkqueue_append_mem(con->write_queue, data, len); in h2_send_hpack()
2096 chunkqueue_append_buffer_commit(con->write_queue); in h2_send_hpack()
2106 "fd:%d id:%u resp: %.*s: %.*s", r->con->fd, r->h2id, in h2_log_response_header_lsx()
2117 "fd:%d id:%u resp: %.*s", r->con->fd, r->h2id, len, hdr); in h2_log_response_header()
2122 h2_send_headers (request_st * const r, connection * const con) in h2_send_headers() argument
2126 con->keep_alive_idle = r->conf.max_keep_alive_idle; in h2_send_headers()
2142 h2con * const h2c = con->h2; in h2_send_headers()
2182 h2_send_rst_stream(r, con, H2_E_INTERNAL_ERROR); in h2_send_headers()
2205 h2_send_rst_stream(r, con, H2_E_INTERNAL_ERROR); in h2_send_headers()
2261 h2_send_rst_stream(r, con, H2_E_INTERNAL_ERROR); in h2_send_headers()
2294 h2_send_rst_stream(r, con, H2_E_INTERNAL_ERROR); in h2_send_headers()
2319 h2_send_rst_stream(r, con, H2_E_INTERNAL_ERROR); in h2_send_headers()
2336 h2_send_hpack(r, con, tb->ptr, dlen, flags); in h2_send_headers()
2343 h2_send_headers_block (request_st * const r, connection * const con, const char * const hdrs, const… in h2_send_headers_block() argument
2368 h2con * const h2c = con->h2; in h2_send_headers_block()
2386 h2_send_rst_stream(r, con, H2_E_INTERNAL_ERROR); in h2_send_headers_block()
2424 h2_send_rst_stream(r, con, H2_E_INTERNAL_ERROR); in h2_send_headers_block()
2429 h2_send_hpack(r, con, tb->ptr, dlen, flags); in h2_send_headers_block()
2434 h2_send_1xx_block (request_st * const r, connection * const con, const char * const hdrs, const uin… in h2_send_1xx_block() argument
2436 h2_send_headers_block(r, con, hdrs, hlen, 0); in h2_send_1xx_block()
2441 h2_send_1xx (request_st * const r, connection * const con) in h2_send_1xx() argument
2457 h2_send_1xx_block(r, con, BUF_PTR_LEN(b)); in h2_send_1xx()
2465 h2_send_100_continue (request_st * const r, connection * const con) in h2_send_100_continue() argument
2478 h2_send_1xx_block(r, con, CONST_STR_LEN(":status: 100\r\n\r\n")); in h2_send_100_continue()
2483 h2_send_end_stream_data (request_st * const r, connection * const con);
2488 h2_send_end_stream_trailers (request_st * const r, connection * const con, const buffer * const tra… in h2_send_end_stream_trailers() argument
2503 h2_send_end_stream_data(r, con); in h2_send_end_stream_trailers()
2512 h2_send_end_stream_data(r, con); in h2_send_end_stream_trailers()
2522 h2_send_headers_block(r, con, BUF_PTR_LEN(trailers), H2_FLAG_END_STREAM); in h2_send_end_stream_trailers()
2528 h2_send_cqheaders (request_st * const r, connection * const con)
2539 h2_send_headers_block(r, con, c->mem->ptr + c->offset, len, flags);
2548 h2_send_data (request_st * const r, connection * const con, const char *data, uint32_t dlen)
2571 request_st * const h2r = &con->request;
2590 chunkqueue_append_buffer_open_sz(con->write_queue, dlen + (dlen>>10) + 9);
2592 h2con * const h2c = con->h2;
2601 chunkqueue_append_mem(con->write_queue, /*(+3 to skip over align pad)*/
2603 chunkqueue_append_mem(con->write_queue, data, len);
2614 chunkqueue_append_buffer_commit(con->write_queue);
2622 h2_send_cqdata (request_st * const r, connection * const con, chunkqueue * const cq, uint32_t dlen) in h2_send_cqdata() argument
2645 request_st * const h2r = &con->request; in h2_send_cqdata()
2661 h2con * const h2c = con->h2; in h2_send_cqdata()
2679 chunkqueue_append_buffer_open_sz(con->write_queue, 9+len); in h2_send_cqdata()
2692 chunkqueue_append_buffer_commit(con->write_queue); in h2_send_cqdata()
2707 chunkqueue_append_mem(con->write_queue, /*(+3 to skip over align pad)*/ in h2_send_cqdata()
2709 chunkqueue_steal(con->write_queue, cq, (off_t)len); in h2_send_cqdata()
2719 h2_send_end_stream_data (request_st * const r, connection * const con) in h2_send_end_stream_data() argument
2736 chunkqueue_append_mem(con->write_queue, /*(+3 to skip over align pad)*/ in h2_send_end_stream_data()
2742 h2con * const h2c = con->h2; in h2_send_end_stream_data()
2745 h2_send_rst_stream_id(r->h2id, con, H2_E_NO_ERROR); in h2_send_end_stream_data()
2752 h2_send_end_stream (request_st * const r, connection * const con) in h2_send_end_stream() argument
2759 h2_send_end_stream_trailers(r, con, &r->gw_dechunk->b); in h2_send_end_stream()
2761 h2_send_end_stream_data(r, con); in h2_send_end_stream()
2764 h2_send_rst_stream(r, con, H2_E_INTERNAL_ERROR); in h2_send_end_stream()
2780 h2_init_stream (request_st * const h2r, connection * const con) in h2_init_stream() argument
2782 h2con * const h2c = con->h2; in h2_init_stream()
2783 ++con->request_count; in h2_init_stream()
2786 request_st * const r = request_acquire(con); in h2_init_stream()
2800 server * const srv = con->srv; in h2_init_stream()
2819 h2_release_stream (request_st * const r, connection * const con) in h2_release_stream() argument
2833 con->read_queue->bytes_in -= r->read_queue.bytes_in; in h2_release_stream()
2834 con->write_queue->bytes_out -= r->write_queue.bytes_out; in h2_release_stream()
2836 UNUSED(con); in h2_release_stream()
2845 h2_retire_stream (request_st *r, connection * const con) in h2_retire_stream() argument
2848 h2con * const h2c = con->h2; in h2_retire_stream()
2858 h2_release_stream(r, con); in h2_retire_stream()
2865 h2_retire_con (request_st * const h2r, connection * const con) in h2_retire_con() argument
2867 h2con * const h2c = con->h2; in h2_retire_con()
2871 h2_send_goaway(con, H2_E_NO_ERROR); in h2_retire_con()
2875 h2_send_rst_stream(r, con, H2_E_INTERNAL_ERROR); in h2_retire_con()
2876 h2_release_stream(r, con); in h2_retire_con()
2878 if (!chunkqueue_is_empty(con->write_queue)) { in h2_retire_con()
2884 chunkqueue * const cq = con->write_queue; in h2_retire_con()
2887 con->network_write(con, cq, len); in h2_retire_con()
2890 con->bytes_written_cur_second += written; in h2_retire_con()
2898 h2_release_stream(r, con); in h2_retire_con()
2903 con->h2 = NULL; in h2_retire_con()
2935 connection * const con = h2r->con; in h2_con_upgrade_h2c() local
2936 h2_init_con(h2r, con, http2_settings); in h2_con_upgrade_h2c()
2937 if (con->h2->sent_goaway) return; in h2_con_upgrade_h2c()
2939 con->h2->h2_cid = 1; /* stream id 1 is assigned to h2c upgrade */ in h2_con_upgrade_h2c()
2945 request_st * const r = h2_init_stream(h2r, con); in h2_con_upgrade_h2c()
2947 --con->request_count; in h2_con_upgrade_h2c()
3050 && !r->con->is_ssl_sock /*(disallow h2c over TLS socket)*/ in h2_check_con_upgrade_h2c()