@@ -8,8 +8,9 @@ use std::io;
8
8
9
9
use nginx_sys:: {
10
10
ngx_addr_t, ngx_connection_t, ngx_destroy_pool, ngx_event_connect_peer, ngx_event_get_peer,
11
- ngx_inet_set_port, ngx_int_t, ngx_log_t, ngx_peer_connection_t, ngx_pool_t, ngx_ssl_shutdown,
12
- ngx_ssl_t, ngx_str_t, ngx_url_t, NGX_DEFAULT_POOL_SIZE , NGX_LOG_ERR , NGX_LOG_WARN ,
11
+ ngx_inet_set_port, ngx_int_t, ngx_log_t, ngx_msec_t, ngx_peer_connection_t, ngx_pool_t,
12
+ ngx_ssl_shutdown, ngx_ssl_t, ngx_str_t, ngx_url_t, NGX_DEFAULT_POOL_SIZE , NGX_LOG_ERR ,
13
+ NGX_LOG_WARN ,
13
14
} ;
14
15
use ngx:: collections:: Vec ;
15
16
use ngx:: core:: Status ;
@@ -20,6 +21,8 @@ use super::connection::{Connection, ConnectionLogError};
20
21
use super :: resolver:: Resolver ;
21
22
use crate :: util:: OwnedPool ;
22
23
24
+ const ACME_DEFAULT_READ_TIMEOUT : ngx_msec_t = 60000 ;
25
+
23
26
/// Async wrapper over an [ngx_peer_connection_t].
24
27
pub struct PeerConnection {
25
28
pub pool : OwnedPool ,
@@ -56,7 +59,7 @@ impl hyper::rt::Read for PeerConnection {
56
59
}
57
60
58
61
if rev. active ( ) != 0 {
59
- unsafe { nginx_sys:: ngx_add_timer ( rev, 60000 ) } ;
62
+ unsafe { nginx_sys:: ngx_add_timer ( rev, ACME_DEFAULT_READ_TIMEOUT ) } ;
60
63
} else if rev. timer_set ( ) != 0 {
61
64
unsafe { nginx_sys:: ngx_del_timer ( rev) } ;
62
65
}
@@ -116,6 +119,7 @@ impl PeerConnection {
116
119
let mut pool = OwnedPool :: new ( NGX_DEFAULT_POOL_SIZE as _ , log)
117
120
. map_err ( |_| io:: ErrorKind :: OutOfMemory ) ?;
118
121
122
+ // We need a copy of the log object to avoid modifying log.connection on a cycle log.
119
123
let new_log = ngx:: allocator:: allocate ( unsafe { log. read ( ) } , & * pool)
120
124
. map_err ( |_| io:: ErrorKind :: OutOfMemory ) ?;
121
125
( * pool) . as_mut ( ) . log = new_log. as_ptr ( ) ;
@@ -287,7 +291,8 @@ impl PeerConnection {
287
291
c. read ( ) . handler = Some ( ngx_peer_conn_read_handler) ;
288
292
c. write ( ) . handler = Some ( ngx_peer_conn_write_handler) ;
289
293
290
- c. read ( ) . set_timer_set ( 60000 ) ;
294
+ unsafe { nginx_sys:: ngx_add_timer ( c. read ( ) , ACME_DEFAULT_READ_TIMEOUT ) } ;
295
+
291
296
self . rev = Some ( cx. waker ( ) . clone ( ) ) ;
292
297
self . wev = Some ( cx. waker ( ) . clone ( ) ) ;
293
298
@@ -459,6 +464,8 @@ unsafe extern "C" fn ngx_peer_conn_write_handler(ev: *mut nginx_sys::ngx_event_t
459
464
460
465
if let Some ( waker) = ( * this) . wev . take ( ) {
461
466
waker. wake ( ) ;
467
+
468
+ // Handle write events posted from the ngx_event_openssl code.
462
469
} else if Status ( nginx_sys:: ngx_handle_write_event ( ev, 0 ) ) != Status :: NGX_OK {
463
470
ngx_log_error ! (
464
471
NGX_LOG_WARN ,
0 commit comments