use MSG_NOSIGNAL from liblibc
This commit is contained in:
parent
ed5e542819
commit
5980d5bfdd
3 changed files with 7 additions and 11 deletions
|
|
@ -1 +1 @@
|
|||
Subproject commit eb708c020826a8d792a5a5275be147aabe47fe24
|
||||
Subproject commit b474785561d58efbd27add9d22339dcabad742ad
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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)
|
||||
}
|
||||
|
|
@ -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)
|
||||
}
|
||||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue