1616#include <aws/io/logging.h>
1717#include <aws/io/socket.h>
1818#include <aws/io/tls_channel_handler.h>
19+ #include <aws/io/uri.h>
1920
2021#include <aws/common/clock.h>
2122#include <aws/common/hash_table.h>
@@ -209,6 +210,8 @@ struct aws_http_connection_manager {
209210 struct aws_http_proxy_config * proxy_config ;
210211 struct aws_http_connection_monitoring_options monitoring_options ;
211212 struct aws_string * host ;
213+ struct proxy_env_var_settings proxy_ev_settings ;
214+ struct aws_tls_connection_options * proxy_ev_tls_options ;
212215 uint16_t port ;
213216
214217 /*
@@ -632,7 +635,10 @@ static void s_aws_http_connection_manager_finish_destroy(struct aws_http_connect
632635 aws_tls_connection_options_clean_up (manager -> tls_connection_options );
633636 aws_mem_release (manager -> allocator , manager -> tls_connection_options );
634637 }
635-
638+ if (manager -> proxy_ev_tls_options ) {
639+ aws_tls_connection_options_clean_up (manager -> proxy_ev_tls_options );
640+ aws_mem_release (manager -> allocator , manager -> proxy_ev_tls_options );
641+ }
636642 if (manager -> proxy_config ) {
637643 aws_http_proxy_config_destroy (manager -> proxy_config );
638644 }
@@ -806,7 +812,6 @@ struct aws_http_connection_manager *aws_http_connection_manager_new(
806812 goto on_error ;
807813 }
808814 }
809-
810815 if (options -> proxy_options ) {
811816 manager -> proxy_config = aws_http_proxy_config_new_from_manager_options (allocator , options );
812817 if (manager -> proxy_config == NULL ) {
@@ -830,7 +835,16 @@ struct aws_http_connection_manager *aws_http_connection_manager_new(
830835 manager -> shutdown_complete_user_data = options -> shutdown_complete_user_data ;
831836 manager -> enable_read_back_pressure = options -> enable_read_back_pressure ;
832837 manager -> max_connection_idle_in_milliseconds = options -> max_connection_idle_in_milliseconds ;
833-
838+ if (options -> proxy_ev_settings ) {
839+ manager -> proxy_ev_settings = * options -> proxy_ev_settings ;
840+ }
841+ if (manager -> proxy_ev_settings .tls_options ) {
842+ manager -> proxy_ev_tls_options = aws_mem_calloc (allocator , 1 , sizeof (struct aws_tls_connection_options ));
843+ if (aws_tls_connection_options_copy (manager -> proxy_ev_tls_options , manager -> proxy_ev_settings .tls_options )) {
844+ goto on_error ;
845+ }
846+ manager -> proxy_ev_settings .tls_options = manager -> proxy_ev_tls_options ;
847+ }
834848 s_schedule_connection_culling (manager );
835849
836850 AWS_LOGF_INFO (AWS_LS_HTTP_CONNECTION_MANAGER , "id=%p: Successfully created" , (void * )manager );
@@ -907,6 +921,7 @@ static int s_aws_http_connection_manager_new_connection(struct aws_http_connecti
907921 options .on_setup = s_aws_http_connection_manager_on_connection_setup ;
908922 options .on_shutdown = s_aws_http_connection_manager_on_connection_shutdown ;
909923 options .manual_window_management = manager -> enable_read_back_pressure ;
924+ options .proxy_ev_settings = & manager -> proxy_ev_settings ;
910925
911926 if (aws_http_connection_monitoring_options_is_valid (& manager -> monitoring_options )) {
912927 options .monitoring_options = & manager -> monitoring_options ;
0 commit comments