Skip to content

Commit 2c48101

Browse files
committed
fix(server): skip SO_REUSEPORT errors
Closes #1509
1 parent 1603c99 commit 2c48101

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

Diff for: src/server/mod.rs

+18-18
Original file line numberDiff line numberDiff line change
@@ -507,19 +507,6 @@ impl<S, B> Server<S, B>
507507
}
508508
}
509509

510-
fn thread_listener(addr: &SocketAddr, handle: &Handle) -> io::Result<TcpListener> {
511-
let listener = match *addr {
512-
SocketAddr::V4(_) => try!(net2::TcpBuilder::new_v4()),
513-
SocketAddr::V6(_) => try!(net2::TcpBuilder::new_v6()),
514-
};
515-
try!(reuse_port(&listener));
516-
try!(listener.reuse_address(true));
517-
try!(listener.bind(addr));
518-
listener.listen(1024).and_then(|l| {
519-
TcpListener::from_listener(l, addr, handle)
520-
})
521-
}
522-
523510
fn date_render_interval(handle: &Handle) {
524511
// Since we own the executor, we can spawn an interval to update the
525512
// thread_local rendered date, instead of checking the clock on every
@@ -573,16 +560,29 @@ fn date_render_interval(handle: &Handle) {
573560
}
574561
}
575562

563+
fn thread_listener(addr: &SocketAddr, handle: &Handle) -> io::Result<TcpListener> {
564+
let listener = match *addr {
565+
SocketAddr::V4(_) => net2::TcpBuilder::new_v4()?,
566+
SocketAddr::V6(_) => net2::TcpBuilder::new_v6()?,
567+
};
568+
reuse_port(&listener);
569+
listener.reuse_address(true)?;
570+
listener.bind(addr)?;
571+
listener.listen(1024).and_then(|l| {
572+
TcpListener::from_listener(l, addr, handle)
573+
})
574+
}
575+
576576
#[cfg(unix)]
577-
fn reuse_port(tcp: &net2::TcpBuilder) -> io::Result<()> {
577+
fn reuse_port(tcp: &net2::TcpBuilder) {
578578
use net2::unix::*;
579-
try!(tcp.reuse_port(true));
580-
Ok(())
579+
if let Err(e) = tcp.reuse_port(true) {
580+
debug!("error setting SO_REUSEPORT: {}", e);
581+
}
581582
}
582583

583584
#[cfg(not(unix))]
584-
fn reuse_port(_tcp: &net2::TcpBuilder) -> io::Result<()> {
585-
Ok(())
585+
fn reuse_port(_tcp: &net2::TcpBuilder) {
586586
}
587587

588588
impl<S: fmt::Debug, B: Stream<Error=::Error>> fmt::Debug for Server<S, B>

0 commit comments

Comments
 (0)