Lines Matching refs:con

337 	connection *con;  in proxy_connection_close()  local
342 con = hctx->remote_conn; in proxy_connection_close()
357 con->plugin_ctx[p->id] = NULL; in proxy_connection_close()
417 static void proxy_set_header(connection *con, const char *key, const char *value) { in proxy_set_header() argument
420 …if (NULL == (ds_dst = (data_string *)array_get_unused_element(con->request.headers, TYPE_STRING)))… in proxy_set_header()
426 array_insert_unique(con->request.headers, (data_unset *)ds_dst); in proxy_set_header()
429 static void proxy_append_header(connection *con, const char *key, const char *value) { in proxy_append_header() argument
432 …if (NULL == (ds_dst = (data_string *)array_get_unused_element(con->request.headers, TYPE_STRING)))… in proxy_append_header()
438 array_insert_unique(con->request.headers, (data_unset *)ds_dst); in proxy_append_header()
445 connection *con = hctx->remote_conn; in proxy_create_env() local
453 buffer_copy_string(b, get_http_method_name(con->request.http_method)); in proxy_create_env()
456 buffer_append_string_buffer(b, con->request.uri); in proxy_create_env()
459 proxy_append_header(con, "X-Forwarded-For", (char *)inet_ntop_cache_get_ip(srv, &(con->dst_addr))); in proxy_create_env()
462 if (con->request.http_host && in proxy_create_env()
463 !buffer_is_empty(con->request.http_host)) { in proxy_create_env()
464 proxy_set_header(con, "X-Host", con->request.http_host->ptr); in proxy_create_env()
466 proxy_set_header(con, "X-Forwarded-Proto", con->conf.is_ssl ? "https" : "http"); in proxy_create_env()
469 for (i = 0; i < con->request.headers->used; i++) { in proxy_create_env()
472 ds = (data_string *)con->request.headers->data[i]; in proxy_create_env()
490 if (con->request.content_length) { in proxy_create_env()
491 chunkqueue *req_cq = con->request_content_queue; in proxy_create_env()
554 static int proxy_response_parse(server *srv, connection *con, plugin_data *p, buffer *in) { in proxy_response_parse() argument
585 con->http_status = http_response_status; in proxy_response_parse()
586 con->parsed_response |= HTTP_STATUS; in proxy_response_parse()
608 con->parsed_response |= HTTP_DATE; in proxy_response_parse()
613 con->parsed_response |= HTTP_LOCATION; in proxy_response_parse()
623 con->response.content_length = strtol(value, NULL, 10); in proxy_response_parse()
624 con->parsed_response |= HTTP_CONTENT_LENGTH; in proxy_response_parse()
632 if (NULL == (ds = (data_string *)array_get_unused_element(con->response.headers, TYPE_STRING))) { in proxy_response_parse()
638 array_insert_unique(con->response.headers, (data_unset *)ds); in proxy_response_parse()
652 connection *con = hctx->remote_conn; in proxy_demux_response() local
697 if (0 == con->got_response) { in proxy_demux_response()
698 con->got_response = 1; in proxy_demux_response()
702 if (0 == con->file_started) { in proxy_demux_response()
716 proxy_response_parse(srv, con, p, hctx->response_header); in proxy_demux_response()
719 if (con->request.http_version == HTTP_VERSION_1_1 && in proxy_demux_response()
720 !(con->parsed_response & HTTP_CONTENT_LENGTH)) { in proxy_demux_response()
721 con->response.transfer_encoding = HTTP_TRANSFER_ENCODING_CHUNKED; in proxy_demux_response()
724 con->file_started = 1; in proxy_demux_response()
726 http_chunk_append_mem(srv, con, c + 4, blen + 1); in proxy_demux_response()
729 joblist_append(srv, con); in proxy_demux_response()
732 http_chunk_append_mem(srv, con, hctx->response->ptr, hctx->response->used); in proxy_demux_response()
733 joblist_append(srv, con); in proxy_demux_response()
739 con->file_finished = 1; in proxy_demux_response()
741 http_chunk_append_mem(srv, con, NULL, 0); in proxy_demux_response()
742 joblist_append(srv, con); in proxy_demux_response()
753 connection *con = hctx->remote_conn; in proxy_write_request() local
828 ret = srv->network_backend_write(srv, con, hctx->fd, hctx->wb, MAX_WRITE_LIMIT); in proxy_write_request()
867 static int mod_proxy_patch_connection(server *srv, connection *con, plugin_data *p) { in mod_proxy_patch_connection() argument
881 if (!config_check_cond(srv, con, dc)) continue; in mod_proxy_patch_connection()
904 handler_ctx *hctx = con->plugin_ctx[p->id]; in SUBREQUEST_FUNC()
909 mod_proxy_patch_connection(srv, con, p); in SUBREQUEST_FUNC()
914 if (con->mode != p->id) return HANDLER_GO_ON; in SUBREQUEST_FUNC()
931 buffer_reset(con->physical.path); in SUBREQUEST_FUNC()
932 con->mode = DIRECT; in SUBREQUEST_FUNC()
934 joblist_append(srv, con); in SUBREQUEST_FUNC()
950 if (con->file_started == 1) { in SUBREQUEST_FUNC()
959 connection *con = hctx->remote_conn; in proxy_handle_fdevent() local
978 joblist_append(srv, con); in proxy_handle_fdevent()
981 if (con->file_started == 0) { in proxy_handle_fdevent()
983 connection_set_state(srv, con, CON_STATE_HANDLE_REQUEST); in proxy_handle_fdevent()
984 con->http_status = 500; in proxy_handle_fdevent()
985 con->mode = DIRECT; in proxy_handle_fdevent()
988 connection_set_state(srv, con, CON_STATE_ERROR); in proxy_handle_fdevent()
991 joblist_append(srv, con); in proxy_handle_fdevent()
1015 joblist_append(srv, con); in proxy_handle_fdevent()
1023 joblist_append(srv, con); in proxy_handle_fdevent()
1040 return mod_proxy_handle_subrequest(srv, con, p); in proxy_handle_fdevent()
1077 buffer_reset(con->physical.path); in proxy_handle_fdevent()
1078 con->mode = DIRECT; in proxy_handle_fdevent()
1080 joblist_append(srv, con); in proxy_handle_fdevent()
1083 joblist_append(srv, con); in proxy_handle_fdevent()
1085 con->mode = DIRECT; in proxy_handle_fdevent()
1086 con->http_status = 503; in proxy_handle_fdevent()
1092 if (!con->file_finished) { in proxy_handle_fdevent()
1093 http_chunk_append_mem(srv, con, NULL, 0); in proxy_handle_fdevent()
1096 con->file_finished = 1; in proxy_handle_fdevent()
1098 joblist_append(srv, con); in proxy_handle_fdevent()
1104 con->file_finished = 1; in proxy_handle_fdevent()
1105 joblist_append(srv, con); in proxy_handle_fdevent()
1112 static handler_t mod_proxy_check_extension(server *srv, connection *con, void *p_d) { in mod_proxy_check_extension() argument
1123 if (con->mode != DIRECT) return HANDLER_GO_ON; in mod_proxy_check_extension()
1126 if (con->file_started == 1) return HANDLER_GO_ON; in mod_proxy_check_extension()
1128 mod_proxy_patch_connection(srv, con, p); in mod_proxy_check_extension()
1130 fn = con->uri.path; in mod_proxy_check_extension()
1207 cur_max = generate_crc32c(CONST_BUF_LEN(con->uri.path)) + in mod_proxy_check_extension()
1209 generate_crc32c(CONST_BUF_LEN(con->uri.authority)); in mod_proxy_check_extension()
1214 con->uri.path, in mod_proxy_check_extension()
1216 con->uri.authority, in mod_proxy_check_extension()
1306 hctx->remote_conn = con; in mod_proxy_check_extension()
1310 con->plugin_ctx[p->id] = hctx; in mod_proxy_check_extension()
1314 con->mode = p->id; in mod_proxy_check_extension()
1325 con->http_status = 500; in mod_proxy_check_extension()
1336 static handler_t mod_proxy_connection_close_callback(server *srv, connection *con, void *p_d) { in mod_proxy_connection_close_callback() argument
1339 proxy_connection_close(srv, con->plugin_ctx[p->id]); in mod_proxy_connection_close_callback()