aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2023-10-27 00:44:53 -0400
committerGreg Hudson <ghudson@mit.edu>2023-10-30 17:49:07 -0400
commitca80f64c786341d5871ae1de18142e62af64f7b9 (patch)
tree558b06c92166c18c07d2338a19abeed1638bd62d
parent6c5471176f5266564fbc8a7e02f03b4b042202f8 (diff)
downloadkrb5-ca80f64c786341d5871ae1de18142e62af64f7b9.zip
krb5-ca80f64c786341d5871ae1de18142e62af64f7b9.tar.gz
krb5-ca80f64c786341d5871ae1de18142e62af64f7b9.tar.bz2
End connection on KDC_ERR_SVC_UNAVAILABLE
In sendto_kdc.c:service_fds(), if a message handler indicates that a message should be discarded, kill the connection so we don't continue waiting on it for more data. ticket: 7899
-rw-r--r--src/lib/krb5/os/sendto_kdc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lib/krb5/os/sendto_kdc.c b/src/lib/krb5/os/sendto_kdc.c
index b1dc66a..0f198c3 100644
--- a/src/lib/krb5/os/sendto_kdc.c
+++ b/src/lib/krb5/os/sendto_kdc.c
@@ -1442,7 +1442,10 @@ service_fds(krb5_context context, struct select_state *selstate,
if (msg_handler != NULL) {
krb5_data reply = make_data(state->in.buf, state->in.pos);
- stop = (msg_handler(context, &reply, msg_handler_data) != 0);
+ if (!msg_handler(context, &reply, msg_handler_data)) {
+ kill_conn(context, state, selstate);
+ stop = 0;
+ }
}
if (stop) {