Print error if we can't send a packet in rad_send()
authorAlan T. DeKok <aland@freeradius.org>
Sun, 20 Feb 2011 08:39:57 +0000 (09:39 +0100)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 21 Feb 2011 06:20:39 +0000 (07:20 +0100)
src/lib/radius.c

index 4a7f209..d038986 100644 (file)
@@ -211,6 +211,7 @@ static int rad_sendto(int sockfd, void *data, size_t data_len, int flags,
                      fr_ipaddr_t *src_ipaddr, int src_port,
                      fr_ipaddr_t *dst_ipaddr, int dst_port)
 {
+       int rcode;
        struct sockaddr_storage dst;
        socklen_t               sizeof_dst;
 
@@ -234,9 +235,10 @@ static int rad_sendto(int sockfd, void *data, size_t data_len, int flags,
         */
        if (((dst_ipaddr->af == AF_INET) || (dst_ipaddr->af == AF_INET6)) &&
            (src_ipaddr->af != AF_UNSPEC)) {
-               return sendfromto(sockfd, data, data_len, flags,
-                                 (struct sockaddr *)&src, sizeof_src,
-                                 (struct sockaddr *)&dst, sizeof_dst);
+               rcode = sendfromto(sockfd, data, data_len, flags,
+                                  (struct sockaddr *)&src, sizeof_src,
+                                  (struct sockaddr *)&dst, sizeof_dst);
+               goto done;
        }
 #else
        src_ipaddr = src_ipaddr; /* -Wunused */
@@ -245,8 +247,14 @@ static int rad_sendto(int sockfd, void *data, size_t data_len, int flags,
        /*
         *      No udpfromto, fail gracefully.
         */
-       return sendto(sockfd, data, data_len, flags,
-                     (struct sockaddr *) &dst, sizeof_dst);
+       rcode = sendto(sockfd, data, data_len, flags,
+                      (struct sockaddr *) &dst, sizeof_dst);
+done:
+       if (rcode < 0) {
+               DEBUG("rad_send() failed: %s\n", strerror(errno));
+       }
+
+       return rcode;
 }