From: Alan T. DeKok Date: Fri, 31 Oct 2025 21:33:46 +0000 (-0400) Subject: let's do error messages, too X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=11377875ee7ab7d6e81d226e7d00a904fdfef57e;p=thirdparty%2Ffreeradius-server.git let's do error messages, too --- diff --git a/src/lib/io/network.c b/src/lib/io/network.c index 5372b26f226..f09290682d7 100644 --- a/src/lib/io/network.c +++ b/src/lib/io/network.c @@ -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: diff --git a/src/listen/detail/proto_detail_work.c b/src/listen/detail/proto_detail_work.c index c9509d2ac3a..20b4696d7b1 100644 --- a/src/listen/detail/proto_detail_work.c +++ b/src/listen/detail/proto_detail_work.c @@ -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); diff --git a/src/listen/tacacs/proto_tacacs_tcp.c b/src/listen/tacacs/proto_tacacs_tcp.c index 4585c8f8847..3faaa0f9a3b 100644 --- a/src/listen/tacacs/proto_tacacs_tcp.c +++ b/src/listen/tacacs/proto_tacacs_tcp.c @@ -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; }