mirror of https://git.ffmpeg.org/ffmpeg.git
libavformat: use MSG_NOSIGNAL when applicable
If the remote end of a connection oriented socket hangs up, generating an EPIPE error is preferable over an unhandled SIGPIPE signal. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
b263f8ffe7
commit
6ee1cb5740
|
@ -98,6 +98,10 @@ struct sockaddr_storage {
|
||||||
};
|
};
|
||||||
#endif /* !HAVE_STRUCT_SOCKADDR_STORAGE */
|
#endif /* !HAVE_STRUCT_SOCKADDR_STORAGE */
|
||||||
|
|
||||||
|
#ifndef MSG_NOSIGNAL
|
||||||
|
#define MSG_NOSIGNAL 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !HAVE_STRUCT_ADDRINFO
|
#if !HAVE_STRUCT_ADDRINFO
|
||||||
struct addrinfo {
|
struct addrinfo {
|
||||||
int ai_flags;
|
int ai_flags;
|
||||||
|
|
|
@ -143,7 +143,7 @@ static int ff_sctp_send(int s, const void *msg, size_t len,
|
||||||
memcpy(CMSG_DATA(cmsg), sinfo, sizeof(struct sctp_sndrcvinfo));
|
memcpy(CMSG_DATA(cmsg), sinfo, sizeof(struct sctp_sndrcvinfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
return sendmsg(s, &outmsg, flags);
|
return sendmsg(s, &outmsg, flags | MSG_NOSIGNAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct SCTPContext {
|
typedef struct SCTPContext {
|
||||||
|
@ -300,7 +300,7 @@ static int sctp_write(URLContext *h, const uint8_t *buf, int size)
|
||||||
abort();
|
abort();
|
||||||
ret = ff_sctp_send(s->fd, buf + 2, size - 2, &info, MSG_EOR);
|
ret = ff_sctp_send(s->fd, buf + 2, size - 2, &info, MSG_EOR);
|
||||||
} else
|
} else
|
||||||
ret = send(s->fd, buf, size, 0);
|
ret = send(s->fd, buf, size, MSG_NOSIGNAL);
|
||||||
|
|
||||||
return ret < 0 ? ff_neterrno() : ret;
|
return ret < 0 ? ff_neterrno() : ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -154,7 +154,7 @@ static int tcp_write(URLContext *h, const uint8_t *buf, int size)
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
ret = send(s->fd, buf, size, 0);
|
ret = send(s->fd, buf, size, MSG_NOSIGNAL);
|
||||||
return ret < 0 ? ff_neterrno() : ret;
|
return ret < 0 ? ff_neterrno() : ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,7 @@ static int unix_write(URLContext *h, const uint8_t *buf, int size)
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
ret = send(s->fd, buf, size, 0);
|
ret = send(s->fd, buf, size, MSG_NOSIGNAL);
|
||||||
return ret < 0 ? ff_neterrno() : ret;
|
return ret < 0 ? ff_neterrno() : ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue