]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
LynxOS does not block in sendto, but gives "no buffer space" error.
authorhadaq <hadaq>
Tue, 4 Nov 2003 09:46:02 +0000 (09:46 +0000)
committerhadaq <hadaq>
Tue, 4 Nov 2003 09:46:02 +0000 (09:46 +0000)
So wait a little in that case.

hadaq/nettrans.c

index d761f87361e6bfad4d89d0787061a4dfdb074840..b57a6559ca46361992df120c0e46b47b2db78e66 100644 (file)
@@ -1,4 +1,4 @@
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/nettrans.c,v 6.30 2003-11-04 08:55:47 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/nettrans.c,v 6.31 2003-11-04 09:46:02 hadaq Exp $";
 
 
 #define _GNU_SOURCE
@@ -132,7 +132,6 @@ int openGeneric(NetTrans *my, const char *name, int flags, size_t bandwidth)
                        int port;
 
                        addr = inet_addr(pa);
-                       fprintf(stderr, "%d\n", addr);
                        port = htons(atoi(ep));
                        my->type = NetTransType_udp;
                        retVal = openUdp(my, addr, port, flags);
@@ -187,18 +186,14 @@ int sendGeneric(NetTrans *my)
                }
                break;
        case NetTransType_udp:
-               retVal = sendto(my->fd, my->pkt, my->pktSize, 0, &my->spec.sa, socklen);
-#if 0                                                  /* This limits the output data rate to 100 * mtuSize / s */
-               {
-                       static int i = 0;
-                       if (i++ % 2 != 0) {
-                               struct timespec tS, *t = &tS;
-                               t->tv_sec = 0;
-                               t->tv_nsec = 020000000;
-                               nanosleep(t, NULL);
-                       }
+               for (retVal = sendto(my->fd, my->pkt, my->pktSize, 0, &my->spec.sa, socklen);
+                        0 > retVal && errno == ENOBUFS; retVal = sendto(my->fd, my->pkt, my->pktSize, 0, &my->spec.sa, socklen)
+                       ) {
+                       struct timespec tS, *t = &tS;
+                       t->tv_sec = 0;
+                       t->tv_nsec = 020000000;
+                       nanosleep(t, NULL);
                }
-#endif
                break;
        }
 
@@ -206,7 +201,7 @@ int sendGeneric(NetTrans *my)
                retVal = -1;
        }
        if (0 > retVal) {
-               syslog(LOG_DEBUG, "sendGeneric: %s", strerror(errno));
+               syslog(LOG_DEBUG, "sendGeneric: %s (%d)", strerror(errno), errno);
        }
        return retVal;
 }