aboutsummaryrefslogtreecommitdiff
path: root/src/kdc/network.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kdc/network.c')
-rw-r--r--src/kdc/network.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/kdc/network.c b/src/kdc/network.c
index 4c49102..c8bf5af 100644
--- a/src/kdc/network.c
+++ b/src/kdc/network.c
@@ -328,8 +328,9 @@ delete_fd (struct connection *xconn)
FOREACH_ELT(connections, i, conn)
if (conn == xconn) {
DEL(connections, i);
- return;
+ break;
}
+ free(xconn);
}
static int
@@ -841,6 +842,7 @@ static void accept_tcp_connection(struct connection *conn, const char *prog,
newconn->u.tcp.addrbuf);
delete_fd(newconn);
close(s);
+ tcp_data_counter--;
return;
}
newconn->u.tcp.offset = 0;
@@ -857,7 +859,6 @@ static void accept_tcp_connection(struct connection *conn, const char *prog,
static void
kill_tcp_connection(struct connection *conn)
{
- delete_fd(conn);
if (conn->u.tcp.response)
krb5_free_data(kdc_context, conn->u.tcp.response);
if (conn->u.tcp.buffer)
@@ -873,6 +874,7 @@ kill_tcp_connection(struct connection *conn)
sstate.max--;
close(conn->fd);
conn->fd = -1;
+ delete_fd(conn);
tcp_data_counter--;
}