use ff_neterrno() and FF_NETERROR() for networking error handling
Originally committed as revision 8845 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
0bdacf29d4
commit
8da4034f52
21
ffserver.c
21
ffserver.c
@ -588,7 +588,8 @@ static int http_server(void)
|
||||
second to handle timeouts */
|
||||
do {
|
||||
ret = poll(poll_table, poll_entry - poll_table, delay);
|
||||
if (ret < 0 && errno != EAGAIN && errno != EINTR)
|
||||
if (ret < 0 && ff_neterrno() != FF_NETERROR(EAGAIN) &&
|
||||
ff_neterrno() != FF_NETERROR(EINTR))
|
||||
return -1;
|
||||
} while (ret < 0);
|
||||
|
||||
@ -791,7 +792,8 @@ static int handle_connection(HTTPContext *c)
|
||||
read_loop:
|
||||
len = recv(c->fd, c->buffer_ptr, 1, 0);
|
||||
if (len < 0) {
|
||||
if (errno != EAGAIN && errno != EINTR)
|
||||
if (ff_neterrno() != FF_NETERROR(EAGAIN) &&
|
||||
ff_neterrno() != FF_NETERROR(EINTR))
|
||||
return -1;
|
||||
} else if (len == 0) {
|
||||
return -1;
|
||||
@ -826,7 +828,8 @@ static int handle_connection(HTTPContext *c)
|
||||
return 0;
|
||||
len = send(c->fd, c->buffer_ptr, c->buffer_end - c->buffer_ptr, 0);
|
||||
if (len < 0) {
|
||||
if (errno != EAGAIN && errno != EINTR) {
|
||||
if (ff_neterrno() != FF_NETERROR(EAGAIN) &&
|
||||
ff_neterrno() != FF_NETERROR(EINTR)) {
|
||||
/* error : close connection */
|
||||
av_freep(&c->pb_buffer);
|
||||
return -1;
|
||||
@ -896,7 +899,8 @@ static int handle_connection(HTTPContext *c)
|
||||
return 0;
|
||||
len = send(c->fd, c->buffer_ptr, c->buffer_end - c->buffer_ptr, 0);
|
||||
if (len < 0) {
|
||||
if (errno != EAGAIN && errno != EINTR) {
|
||||
if (ff_neterrno() != FF_NETERROR(EAGAIN) &&
|
||||
ff_neterrno() != FF_NETERROR(EINTR)) {
|
||||
/* error : close connection */
|
||||
av_freep(&c->pb_buffer);
|
||||
return -1;
|
||||
@ -922,7 +926,8 @@ static int handle_connection(HTTPContext *c)
|
||||
len = send(c->fd, c->packet_buffer_ptr,
|
||||
c->packet_buffer_end - c->packet_buffer_ptr, 0);
|
||||
if (len < 0) {
|
||||
if (errno != EAGAIN && errno != EINTR) {
|
||||
if (ff_neterrno() != FF_NETERROR(EAGAIN) &&
|
||||
ff_neterrno() != FF_NETERROR(EINTR)) {
|
||||
/* error : close connection */
|
||||
av_freep(&c->packet_buffer);
|
||||
return -1;
|
||||
@ -2333,7 +2338,8 @@ static int http_send_data(HTTPContext *c)
|
||||
/* TCP data output */
|
||||
len = send(c->fd, c->buffer_ptr, c->buffer_end - c->buffer_ptr, 0);
|
||||
if (len < 0) {
|
||||
if (errno != EAGAIN && errno != EINTR) {
|
||||
if (ff_neterrno() != FF_NETERROR(EAGAIN) &&
|
||||
ff_neterrno() != FF_NETERROR(EINTR)) {
|
||||
/* error : close connection */
|
||||
return -1;
|
||||
} else {
|
||||
@ -2390,7 +2396,8 @@ static int http_receive_data(HTTPContext *c)
|
||||
|
||||
len = recv(c->fd, c->buffer_ptr, c->buffer_end - c->buffer_ptr, 0);
|
||||
if (len < 0) {
|
||||
if (errno != EAGAIN && errno != EINTR) {
|
||||
if (ff_neterrno() != FF_NETERROR(EAGAIN) &&
|
||||
ff_neterrno() != FF_NETERROR(EINTR)) {
|
||||
/* error : close connection */
|
||||
goto fail;
|
||||
}
|
||||
|
@ -29,6 +29,9 @@
|
||||
#endif
|
||||
#include <netdb.h>
|
||||
|
||||
#define ff_neterrno() errno
|
||||
#define FF_NETERROR(err) err
|
||||
|
||||
#if !defined(HAVE_INET_ATON)
|
||||
/* in os_support.c */
|
||||
int inet_aton (const char * str, struct in_addr * add);
|
||||
|
@ -178,7 +178,8 @@ static int rtp_read(URLContext *h, uint8_t *buf, int size)
|
||||
len = recvfrom (s->rtp_fd, buf, size, 0,
|
||||
(struct sockaddr *)&from, &from_len);
|
||||
if (len < 0) {
|
||||
if (errno == EAGAIN || errno == EINTR)
|
||||
if (ff_neterrno() == FF_NETERROR(EAGAIN) ||
|
||||
ff_neterrno() == FF_NETERROR(EINTR))
|
||||
continue;
|
||||
return AVERROR_IO;
|
||||
}
|
||||
@ -201,7 +202,8 @@ static int rtp_read(URLContext *h, uint8_t *buf, int size)
|
||||
len = recvfrom (s->rtcp_fd, buf, size, 0,
|
||||
(struct sockaddr *)&from, &from_len);
|
||||
if (len < 0) {
|
||||
if (errno == EAGAIN || errno == EINTR)
|
||||
if (ff_neterrno() == FF_NETERROR(EAGAIN) ||
|
||||
ff_neterrno() == FF_NETERROR(EINTR))
|
||||
continue;
|
||||
return AVERROR_IO;
|
||||
}
|
||||
@ -213,7 +215,8 @@ static int rtp_read(URLContext *h, uint8_t *buf, int size)
|
||||
len = recvfrom (s->rtp_fd, buf, size, 0,
|
||||
(struct sockaddr *)&from, &from_len);
|
||||
if (len < 0) {
|
||||
if (errno == EAGAIN || errno == EINTR)
|
||||
if (ff_neterrno() == FF_NETERROR(EAGAIN) ||
|
||||
ff_neterrno() == FF_NETERROR(EINTR))
|
||||
continue;
|
||||
return AVERROR_IO;
|
||||
}
|
||||
|
@ -68,9 +68,9 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
|
||||
ret = connect(fd, (struct sockaddr *)&dest_addr,
|
||||
sizeof(dest_addr));
|
||||
if (ret < 0) {
|
||||
if (errno == EINTR)
|
||||
if (ff_neterrno() == FF_NETERROR(EINTR))
|
||||
goto redo;
|
||||
if (errno != EINPROGRESS)
|
||||
if (ff_neterrno() != FF_NETERROR(EINPROGRESS))
|
||||
goto fail;
|
||||
|
||||
/* wait until we are connected or until abort */
|
||||
@ -126,7 +126,8 @@ static int tcp_read(URLContext *h, uint8_t *buf, int size)
|
||||
if (ret > 0 && FD_ISSET(s->fd, &rfds)) {
|
||||
len = recv(s->fd, buf, size, 0);
|
||||
if (len < 0) {
|
||||
if (errno != EINTR && errno != EAGAIN)
|
||||
if (ff_neterrno() != FF_NETERROR(EINTR) &&
|
||||
ff_neterrno() != FF_NETERROR(EAGAIN))
|
||||
return AVERROR(errno);
|
||||
} else return len;
|
||||
} else if (ret < 0) {
|
||||
@ -155,7 +156,8 @@ static int tcp_write(URLContext *h, uint8_t *buf, int size)
|
||||
if (ret > 0 && FD_ISSET(s->fd, &wfds)) {
|
||||
len = send(s->fd, buf, size, 0);
|
||||
if (len < 0) {
|
||||
if (errno != EINTR && errno != EAGAIN)
|
||||
if (ff_neterrno() != FF_NETERROR(EINTR) &&
|
||||
ff_neterrno() != FF_NETERROR(EAGAIN))
|
||||
return AVERROR(errno);
|
||||
continue;
|
||||
}
|
||||
|
@ -428,7 +428,8 @@ static int udp_read(URLContext *h, uint8_t *buf, int size)
|
||||
len = recvfrom (s->udp_fd, buf, size, 0,
|
||||
(struct sockaddr *)&from, &from_len);
|
||||
if (len < 0) {
|
||||
if (errno != EAGAIN && errno != EINTR)
|
||||
if (ff_neterrno() != FF_NETERROR(EAGAIN) &&
|
||||
ff_neterrno() != FF_NETERROR(EINTR))
|
||||
return AVERROR_IO;
|
||||
} else {
|
||||
break;
|
||||
@ -451,7 +452,8 @@ static int udp_write(URLContext *h, uint8_t *buf, int size)
|
||||
s->dest_addr_len);
|
||||
#endif
|
||||
if (ret < 0) {
|
||||
if (errno != EINTR && errno != EAGAIN)
|
||||
if (ff_neterrno() != FF_NETERROR(EINTR) &&
|
||||
ff_neterrno() != FF_NETERROR(EAGAIN))
|
||||
return AVERROR_IO;
|
||||
} else {
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user