Skip to content

Commit 64cf3b1

Browse files
committed
fixup! Net: add a simple HTTP client implementation.
1 parent a4cf3c2 commit 64cf3b1

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/net/peer_conn.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ use std::io;
88

99
use nginx_sys::{
1010
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,
1314
};
1415
use ngx::collections::Vec;
1516
use ngx::core::Status;
@@ -20,6 +21,8 @@ use super::connection::{Connection, ConnectionLogError};
2021
use super::resolver::Resolver;
2122
use crate::util::OwnedPool;
2223

24+
const ACME_DEFAULT_READ_TIMEOUT: ngx_msec_t = 60000;
25+
2326
/// Async wrapper over an [ngx_peer_connection_t].
2427
pub struct PeerConnection {
2528
pub pool: OwnedPool,
@@ -56,7 +59,7 @@ impl hyper::rt::Read for PeerConnection {
5659
}
5760

5861
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) };
6063
} else if rev.timer_set() != 0 {
6164
unsafe { nginx_sys::ngx_del_timer(rev) };
6265
}
@@ -116,6 +119,7 @@ impl PeerConnection {
116119
let mut pool = OwnedPool::new(NGX_DEFAULT_POOL_SIZE as _, log)
117120
.map_err(|_| io::ErrorKind::OutOfMemory)?;
118121

122+
// We need a copy of the log object to avoid modifying log.connection on a cycle log.
119123
let new_log = ngx::allocator::allocate(unsafe { log.read() }, &*pool)
120124
.map_err(|_| io::ErrorKind::OutOfMemory)?;
121125
(*pool).as_mut().log = new_log.as_ptr();
@@ -287,7 +291,8 @@ impl PeerConnection {
287291
c.read().handler = Some(ngx_peer_conn_read_handler);
288292
c.write().handler = Some(ngx_peer_conn_write_handler);
289293

290-
c.read().set_timer_set(60000);
294+
unsafe { nginx_sys::ngx_add_timer(c.read(), ACME_DEFAULT_READ_TIMEOUT) };
295+
291296
self.rev = Some(cx.waker().clone());
292297
self.wev = Some(cx.waker().clone());
293298

@@ -459,6 +464,8 @@ unsafe extern "C" fn ngx_peer_conn_write_handler(ev: *mut nginx_sys::ngx_event_t
459464

460465
if let Some(waker) = (*this).wev.take() {
461466
waker.wake();
467+
468+
// Handle write events posted from the ngx_event_openssl code.
462469
} else if Status(nginx_sys::ngx_handle_write_event(ev, 0)) != Status::NGX_OK {
463470
ngx_log_error!(
464471
NGX_LOG_WARN,

0 commit comments

Comments
 (0)