]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
let's do error messages, too
authorAlan T. DeKok <aland@freeradius.org>
Fri, 31 Oct 2025 21:33:46 +0000 (17:33 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Sat, 1 Nov 2025 11:57:37 +0000 (07:57 -0400)
src/lib/io/network.c
src/listen/detail/proto_detail_work.c
src/listen/tacacs/proto_tacacs_tcp.c

index 5372b26f226bd8eb85e66764b362403c4b54d224..f09290682d7c751b5ab38526b93b51dabe47ad5c 100644 (file)
@@ -1185,7 +1185,11 @@ static void fr_network_write(UNUSED fr_event_list_t *el, UNUSED int sockfd, UNUS
                /*
                 *      Write of 0 bytes means an OS bug, and we just discard this packet.
                 */
-               if (rcode == 0) goto discard;
+               if (rcode == 0) {
+                       RATE_LIMIT_GLOBAL(ERROR, "Discarding packet due to write returning zero for socket %s",
+                                         s->listen->name);
+                       goto discard;
+               }
 
                /*
                 *      Or we have a write error.
@@ -1224,6 +1228,8 @@ static void fr_network_write(UNUSED fr_event_list_t *el, UNUSED int sockfd, UNUS
                                return;
                        }
 
+                       PERROR("Failed writing to socket %s", s->listen->name);
+
                        /*
                         *      As a special hack, check for something
                         *      that will never be returned from a
@@ -1233,7 +1239,6 @@ static void fr_network_write(UNUSED fr_event_list_t *el, UNUSED int sockfd, UNUS
                         */
                        if ((errno == ECONNREFUSED) || (errno == ECONNRESET)) goto dead;
 
-                       PERROR("Failed writing to socket %s", s->listen->name);
                        if (li->app_io->error) li->app_io->error(li);
 
                dead:
index c9509d2ac3a09a7687b27727c60413d2c4563167..20b4696d7b117636d8418145b4cad9975cd41c5e 100644 (file)
@@ -665,7 +665,8 @@ free_track:
         */
        if (thread->closing && !thread->outstanding) {
                MPRINT("WRITE ASKED TO CLOSE");
-               return 0;
+               errno = ECONNRESET;
+               return -1;
        }
 
        MPRINT("WRITE RETURN B %ld", buffer_len);
index 4585c8f8847c6be49a28eb117730679b74bf78fa..3faaa0f9a3ba0cf9152fed32247e47875b95651f 100644 (file)
@@ -304,7 +304,8 @@ static ssize_t mod_write(fr_listen_t *li, UNUSED void *packet_ctx, UNUSED fr_tim
                case FR_TAC_PLUS_AUTHOR:
                        if (pkt->author_reply.status == FR_TAC_PLUS_AUTHOR_STATUS_ERROR) {
                        close_it:
-                               DEBUG("Closing connection due to unrecoverable server error response");
+                               ERROR("tavacs %s - Closing connection due to unrecoverable server error response",
+                                       thread->name);
                                errno = ECONNRESET;
                                return -1;
                        }