[SSSD] [PATCH] Create kdcinfo and kpasswdinfo file at startup
Sumit Bose
sbose at redhat.com
Fri May 7 13:34:39 UTC 2010
Hi,
this patch should solve #470 by calling be_resolve_server_send() during
startup.
bye,
Sumit
-------------- next part --------------
From 0a61519bcb149b81d932c6f188d8c67be257d658 Mon Sep 17 00:00:00 2001
From: Sumit Bose <sbose at redhat.com>
Date: Fri, 7 May 2010 15:28:21 +0200
Subject: [PATCH] Create kdcinfo and kpasswdinfo file at startup
---
src/providers/ipa/ipa_common.c | 9 +++++++++
src/providers/krb5/krb5_common.c | 25 ++++++++++++++++++++++++-
src/providers/krb5/krb5_common.h | 2 ++
3 files changed, 35 insertions(+), 1 deletions(-)
diff --git a/src/providers/ipa/ipa_common.c b/src/providers/ipa/ipa_common.c
index 3a79eb4..25a3d1c 100644
--- a/src/providers/ipa/ipa_common.c
+++ b/src/providers/ipa/ipa_common.c
@@ -485,6 +485,7 @@ int ipa_service_init(TALLOC_CTX *memctx, struct be_ctx *ctx,
char *realm;
int ret;
int i;
+ struct tevent_req *req;
tmp_ctx = talloc_new(memctx);
if (!tmp_ctx) {
@@ -579,6 +580,14 @@ int ipa_service_init(TALLOC_CTX *memctx, struct be_ctx *ctx,
goto done;
}
+ req = be_resolve_server_send(memctx, ctx->ev, ctx, "IPA");
+ if (req == NULL) {
+ DEBUG(1, ("be_resolve_server_send failed.\n"));
+ ret = ENOMEM;
+ goto done;
+ }
+ tevent_req_set_callback(req, krb5_init_resolve_done, ctx);
+
ret = EOK;
done:
diff --git a/src/providers/krb5/krb5_common.c b/src/providers/krb5/krb5_common.c
index 9a2255f..4689481 100644
--- a/src/providers/krb5/krb5_common.c
+++ b/src/providers/krb5/krb5_common.c
@@ -288,7 +288,6 @@ static void krb5_resolve_callback(void *private_data, struct fo_server *server)
return;
}
-
int krb5_service_init(TALLOC_CTX *memctx, struct be_ctx *ctx,
const char *service_name, const char *servers,
const char *realm, struct krb5_service **_service)
@@ -303,6 +302,7 @@ int krb5_service_init(TALLOC_CTX *memctx, struct be_ctx *ctx,
char *server_spec;
char *endptr;
struct servent *servent;
+ struct tevent_req *req;
tmp_ctx = talloc_new(memctx);
if (!tmp_ctx) {
@@ -425,6 +425,14 @@ int krb5_service_init(TALLOC_CTX *memctx, struct be_ctx *ctx,
goto done;
}
+ req = be_resolve_server_send(memctx, ctx->ev, ctx, service_name);
+ if (req == NULL) {
+ DEBUG(1, ("be_resolve_server_send failed.\n"));
+ ret = ENOMEM;
+ goto done;
+ }
+ tevent_req_set_callback(req, krb5_init_resolve_done, ctx);
+
ret = EOK;
done:
@@ -435,3 +443,18 @@ done:
return ret;
}
+void krb5_init_resolve_done(struct tevent_req *req)
+{
+ int ret;
+ struct fo_server *srv;
+
+ ret = be_resolve_server_recv(req, &srv);
+ talloc_zfree(req);
+ if (ret) {
+ DEBUG(1, ("be_resolve_server request failed [%d][%s].\n", ret,
+ strerror(ret)));
+ }
+
+ return;
+}
+
diff --git a/src/providers/krb5/krb5_common.h b/src/providers/krb5/krb5_common.h
index 46d7a61..aa585b3 100644
--- a/src/providers/krb5/krb5_common.h
+++ b/src/providers/krb5/krb5_common.h
@@ -76,4 +76,6 @@ errno_t write_krb5info_file(const char *realm, const char *kdc,
int krb5_service_init(TALLOC_CTX *memctx, struct be_ctx *ctx,
const char *service_name, const char *servers,
const char *realm, struct krb5_service **_service);
+
+void krb5_init_resolve_done(struct tevent_req *req);
#endif /* __KRB5_COMMON_H__ */
--
1.6.6.1
More information about the sssd-devel
mailing list