Skip to content
Snippets Groups Projects
Commit 6ee1cb57 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont Committed by Martin Storsjö
Browse files

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: default avatarMartin Storsjö <martin@martin.st>
parent b263f8ff
No related branches found
No related tags found
No related merge requests found
...@@ -98,6 +98,10 @@ struct sockaddr_storage { ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment