use ff_neterrno() and FF_NETERROR() for networking error handling
authorAlex Beregszaszi <alex@rtfs.hu>
Fri, 27 Apr 2007 00:35:54 +0000 (00:35 +0000)
committerAlex Beregszaszi <alex@rtfs.hu>
Fri, 27 Apr 2007 00:35:54 +0000 (00:35 +0000)
Originally committed as revision 8845 to svn://svn.ffmpeg.org/ffmpeg/trunk

ffserver.c
libavformat/network.h
libavformat/rtpproto.c
libavformat/tcp.c
libavformat/udp.c

index e7b0b7b..9f5502b 100644 (file)
@@ -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;
             }
index 3aa8ba8..7dcbfe2 100644 (file)
@@ -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);
index 4d32e66..369a805 100644 (file)
@@ -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;
                 }
index 40aba66..b2f6d37 100644 (file)
@@ -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;
             }
index bbf8ca2..e8721ce 100644 (file)
@@ -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;