@@ -19,6 +19,7 @@ static int redirectionio_log_handler(request_rec *r);
1919static apr_status_t redirectionio_create_connection (redirectionio_connection * conn , redirectionio_config * config , apr_pool_t * pool );
2020static redirectionio_connection * redirectionio_acquire_connection (redirectionio_config * config , apr_pool_t * pool );
2121static apr_status_t redirectionio_release_connection (redirectionio_connection * conn , redirectionio_config * config , apr_pool_t * pool );
22+ static apr_status_t redirectionio_invalidate_connection (redirectionio_connection * conn , redirectionio_config * config , apr_pool_t * pool );
2223
2324static void * create_redirectionio_dir_conf (apr_pool_t * pool , char * context );
2425static void * merge_redirectionio_dir_conf (apr_pool_t * pool , void * BASE , void * ADD );
@@ -80,7 +81,7 @@ static int redirectionio_redirect_handler(request_rec *r) {
8081
8182 // Ask for redirection
8283 if (redirectionio_protocol_match (conn , context , r , config -> project_key ) != APR_SUCCESS ) {
83- redirectionio_release_connection (conn , config , r -> pool );
84+ redirectionio_invalidate_connection (conn , config , r -> pool );
8485
8586 return DECLINED ;
8687 }
@@ -127,7 +128,7 @@ static int redirectionio_log_handler(request_rec *r) {
127128 }
128129
129130 if (redirectionio_protocol_log (conn , context , r , config -> project_key ) != APR_SUCCESS ) {
130- redirectionio_release_connection (conn , config , r -> pool );
131+ redirectionio_invalidate_connection (conn , config , r -> pool );
131132
132133 return DECLINED ;
133134 }
@@ -145,7 +146,6 @@ static apr_status_t redirectionio_create_connection(redirectionio_connection *co
145146 family = APR_UNIX ;
146147 }
147148
148- ap_log_perror (APLOG_MARK , APLOG_NOTICE , 0 , pool , "mod_redirectionio: Connecting to server: %s" , config -> server );
149149 rv = apr_sockaddr_info_get (& conn -> rio_addr , config -> server , family , config -> port , 0 , pool );
150150
151151 if (rv != APR_SUCCESS ) {
@@ -223,6 +223,16 @@ static apr_status_t redirectionio_release_connection(redirectionio_connection *c
223223 return rv ;
224224}
225225
226+ static apr_status_t redirectionio_invalidate_connection (redirectionio_connection * conn , redirectionio_config * config , apr_pool_t * pool ) {
227+ apr_status_t rv = apr_reslist_invalidate (config -> connection_pool , conn );
228+
229+ if (rv != APR_SUCCESS ) {
230+ ap_log_perror (APLOG_MARK , APLOG_ERR , 0 , pool , "mod_redirectionio: Can not invalidate RIO socket." );
231+ }
232+
233+ return rv ;
234+ }
235+
226236static void * create_redirectionio_dir_conf (apr_pool_t * pool , char * context ) {
227237 redirectionio_config * config = apr_pcalloc (pool , sizeof (redirectionio_config ));
228238
@@ -336,7 +346,6 @@ static apr_status_t redirectionio_pool_destruct(void* resource, void* params, ap
336346static apr_status_t redirectionio_child_exit (void * resource ) {
337347 apr_reslist_t * connection_pool = (apr_reslist_t * )resource ;
338348 apr_pool_t * pool ;
339-
340349 apr_pool_create (& pool , NULL );
341350
342351 while (apr_reslist_acquired_count (connection_pool ) != 0 ) {
0 commit comments