summaryrefslogtreecommitdiffstats
path: root/server/providers/krb5
diff options
context:
space:
mode:
authorMartin Nagy <mnagy@redhat.com>2009-12-10 22:23:04 +0100
committerStephen Gallagher <sgallagh@redhat.com>2009-12-15 07:23:57 -0500
commitd52617ca1c217327bcb8dc53fa67e329f550a667 (patch)
treefbc93623bb419e98e6b7e1acfe3eeb3e0d766ef9 /server/providers/krb5
parentefb68a421a4cd8dbccc7fb60d5fcd5aa3a00ca30 (diff)
downloadsssd-d52617ca1c217327bcb8dc53fa67e329f550a667.tar.gz
sssd-d52617ca1c217327bcb8dc53fa67e329f550a667.tar.xz
sssd-d52617ca1c217327bcb8dc53fa67e329f550a667.zip
Don't consider one address with different port numbers as the same
There were two problems with the code. We were using fo_set_server_status() instead of fo_set_port_status() when we failed to connect to a service. This is a problem because if two services use the same server, or we want to use one server with two different ports, marking the whole server as bad is incorrect. The other problem was that be_resolve_server_done() was comparing the hostent structures -- these are, however, equal across multiple server:port pairs with the same server addresses. Fixes: #321
Diffstat (limited to 'server/providers/krb5')
-rw-r--r--server/providers/krb5/krb5_auth.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/server/providers/krb5/krb5_auth.c b/server/providers/krb5/krb5_auth.c
index 0321ce820..4581278de 100644
--- a/server/providers/krb5/krb5_auth.c
+++ b/server/providers/krb5/krb5_auth.c
@@ -975,10 +975,12 @@ static void krb5_child_done(struct tevent_req *req)
if (*msg_status == PAM_AUTHINFO_UNAVAIL) {
if (kr->srv != NULL) {
- fo_set_server_status(kr->srv, SERVER_NOT_WORKING);
+ fo_set_port_status(kr->srv, PORT_NOT_WORKING);
}
be_mark_offline(be_req->be_ctx);
kr->is_offline = true;
+ } else if (kr->srv != NULL) {
+ fo_set_port_status(kr->srv, PORT_WORKING);
}
struct sysdb_attrs *attrs;