>From b303e25a4a891aebb61e04e97b40dd61c7191f01 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Sat, 17 Aug 2013 09:12:03 +0200 Subject: [PATCH] DB: Update sss_domain_info with new updated data The code didn't reload the sss_domain_info structure in memory after changing the domain data on disk, which caused the SSSD to keep using stale data. Also adds a comment that explains why we call the update twice. --- src/db/sysdb_subdomains.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/db/sysdb_subdomains.c b/src/db/sysdb_subdomains.c index 58df470182ea6ecbb5b48e288ab6a3d3bcec18ba..e6eab46f320f04d50097dd5d1bfc3141e6b29be9 100644 --- a/src/db/sysdb_subdomains.c +++ b/src/db/sysdb_subdomains.c @@ -264,6 +264,11 @@ errno_t sysdb_master_domain_add_info(struct sss_domain_info *domain, return ENOMEM; } + /* First, update the domain object to make sure we're using the same + * data as the data on disk. Then we might find out that just the + * structure in memory was outdated and won't need the write + * to cache at all + */ ret = sysdb_master_domain_update(domain); if (ret != EOK) { goto done; @@ -350,6 +355,14 @@ errno_t sysdb_master_domain_add_info(struct sss_domain_info *domain, goto done; } + /* Because the contents of domain on disk changed, we need to refresh + * the structure as well + */ + ret = sysdb_master_domain_update(domain); + if (ret != EOK) { + goto done; + } + ret = EOK; done: -- 1.8.3.1