Skip to content

Commit

Permalink
use MSG_NOSIGNAL from liblibc
Browse files Browse the repository at this point in the history
  • Loading branch information
kali committed Sep 28, 2016
1 parent ed5e542 commit 5980d5b
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 11 deletions.
2 changes: 1 addition & 1 deletion src/liblibc
11 changes: 4 additions & 7 deletions src/libstd/sys/common/net.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ use sys::net::netc::IPV6_LEAVE_GROUP as IPV6_DROP_MEMBERSHIP;
use sys::net::netc::IPV6_DROP_MEMBERSHIP;

#[cfg(target_os = "linux")]
const MSG_NOSIGNAL: c_int = 0x4000;
use libc::MSG_NOSIGNAL;
#[cfg(not(target_os = "linux"))]
const MSG_NOSIGNAL: c_int = 0x0; // unused dummy value

Expand Down Expand Up @@ -226,12 +226,11 @@ impl TcpStream {

pub fn write(&self, buf: &[u8]) -> io::Result<usize> {
let len = cmp::min(buf.len(), <wrlen_t>::max_value() as usize) as wrlen_t;
let flags = if cfg!(target_os = "linux") { MSG_NOSIGNAL } else { 0 };
let ret = cvt(unsafe {
c::send(*self.inner.as_inner(),
buf.as_ptr() as *const c_void,
len,
flags)
MSG_NOSIGNAL)
})?;
Ok(ret as usize)
}
Expand Down Expand Up @@ -452,11 +451,10 @@ impl UdpSocket {
pub fn send_to(&self, buf: &[u8], dst: &SocketAddr) -> io::Result<usize> {
let len = cmp::min(buf.len(), <wrlen_t>::max_value() as usize) as wrlen_t;
let (dstp, dstlen) = dst.into_inner();
let flags = if cfg!(target_os = "linux") { MSG_NOSIGNAL } else { 0 };
let ret = cvt(unsafe {
c::sendto(*self.inner.as_inner(),
buf.as_ptr() as *const c_void, len,
flags, dstp, dstlen)
MSG_NOSIGNAL, dstp, dstlen)
})?;
Ok(ret as usize)
}
Expand Down Expand Up @@ -576,12 +574,11 @@ impl UdpSocket {

pub fn send(&self, buf: &[u8]) -> io::Result<usize> {
let len = cmp::min(buf.len(), <wrlen_t>::max_value() as usize) as wrlen_t;
let flags = if cfg!(target_os = "linux") { MSG_NOSIGNAL } else { 0 };
let ret = cvt(unsafe {
c::send(*self.inner.as_inner(),
buf.as_ptr() as *const c_void,
len,
flags)
MSG_NOSIGNAL)
})?;
Ok(ret as usize)
}
Expand Down
5 changes: 2 additions & 3 deletions src/libstd/sys/unix/ext/net.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ use sys::net::Socket;
use sys_common::{AsInner, FromInner, IntoInner};

#[cfg(target_os = "linux")]
const MSG_NOSIGNAL: libc::c_int = 0x4000;
use libc::MSG_NOSIGNAL;
#[cfg(not(target_os = "linux"))]
const MSG_NOSIGNAL: libc::c_int = 0x0; // unused dummy value

Expand Down Expand Up @@ -691,12 +691,11 @@ impl UnixDatagram {
fn inner(d: &UnixDatagram, buf: &[u8], path: &Path) -> io::Result<usize> {
unsafe {
let (addr, len) = sockaddr_un(path)?;
let flags = if cfg!(target_os = "linux") { MSG_NOSIGNAL } else { 0 };

let count = cvt(libc::sendto(*d.0.as_inner(),
buf.as_ptr() as *const _,
buf.len(),
flags,
MSG_NOSIGNAL,
&addr as *const _ as *const _,
len))?;
Ok(count as usize)
Expand Down

0 comments on commit 5980d5b

Please sign in to comment.