On (06/09/16 13:15), Petr Cech wrote:
>On 09/05/2016 02:31 PM, Fabiano Fidêncio wrote:
>> On Mon, Sep 5, 2016 at 11:59 AM, Fabiano Fidêncio <fiden...@example.com> 
>> wrote:
>> > Petr,
>> > 
>> > I went through your patches and in general they look good to me.
>> > However, I haven't done any tests yet with your patches (and I'll do
>> > it after lunch).
>> 
>> I've done some tests and I've been able to see the ldif changes in the
>> domain log. So, I assume it's working.
>> For sure it's a good improvement! Would be worth to link some
>> documentation about ldiff as it may be confusing for someone who is
>> not used to it.
>> 
>> I'll wait for a new version of the patches and go through them again.
>> 
>> I really would like to have someone's else opinion on this series.
>> 
>> > 
>> > Please, below you can see a few comments. Feel completely free to
>> > ignore the first one if you feel like doing it, it's just a minor :-)
>> > For the other comments, I'd like to understand a few changes you have done.
>> > 
>> > 
>> > Patch 0001: SYSDB: Adding message to inform which cache is used
>> > 
>> > About the following part of the patch:
>> > +static const char *get_attr_storage(int state_mask)
>> > +{
>> > +    const char *storage = "";
>> > +
>> > +    if (state_mask == SSS_SYSDB_BOTH_CACHE ) {
>> > +        storage = "cache, ts_cache";
>> > +    } else if (state_mask == SSS_SYSDB_TS_CACHE) {
>> > +        storage = "ts_cache";
>> > +    } else if (state_mask == SSS_SYSDB_CACHE) {
>> > +        storage = "cache";
>> > +    }
>> > +
>> > +    return storage;
>> > +}
>> > 
>> > I personally don't like this kind of comparison done with flags. I'd
>> > go for something like: if ((state_mask & SSS_SYSDB_BOTH_CACHE) != 0)
>> > ...
>> > But this is a really minor and feel free to ignore it.
>> > 
>> > 
>> > Patch 0002: SYSDB: Adding message about reason why cache changed
>> > 
>> > LGTM
>> > 
>> > 
>> > Patch 0003: SYSDB: Adding wrappers for ldb_* operations
>> > 
>> > About the following parts of the patch:
>> > 
>> > On src/db/sysdb_ldb_wrapper.c
>> > 
>> > +#define ERR_FN_ENOMEM (-1 * ENOMEM)
>> > +#define ERR_FN_ENOENT (-1 * ENOENT)
>> > 
>> > Why? I failed to understand why you're doing this here.
>> > 
>> > +    if (print_ctx == NULL) {
>> > +        return -1;
>> > +        return ERR_FN_ENOMEM;
>> > +    }
>> > 
>> > I guess the return -1 is a leftover :-)
>> > 
>> > +        if (print_ctx->ldif == NULL) {
>> > +            return -2;
>> > +            return ERR_FN_ENOENT;
>> > +        }
>> > 
>> > I guess the return -2 is also a leftover :-)
>> > 
>> > +    if (ret < 0) {
>> > +        DEBUG(SSSDBG_MINOR_FAILURE, "ldb_ldif_write() failed with 
>> > [%d][%s].\n",
>> > +                                    -1 * ret, sss_strerror(-1 * ret));
>> > +        goto done;
>> > +    }
>> > 
>> > And here again this dance multiplying by -1 that I don't understand
>> > the reason :-\
>> > 
>> > +done:
>> > +    if (ldb_print_ctx != NULL && ldb_print_ctx->ldif != NULL) {
>> > +        talloc_free(ldb_print_ctx->ldif);
>> > +    }
>> > +    talloc_free(ldb_print_ctx);
>> > 
>> > AFAIU talloc_free can gracefully handle NULL. Considering that's the
>> > case I'd just check for (if ldb_print_ctx != NULL)
>> > talloc_free(ldb_print_ctx->ldif);
>> > Considering it doesn't, we may have some issues on trying to free
>> > (ldb_print_ctx)
>> > 
>> > On src/db/sysdb_ldb_wrapper.h:
>> > 
>> > +int sss_ldb_rename(struct ldb_context *ldb,
>> > +                   struct ldb_dn * olddn,
>> > +                   struct ldb_dn *newdn);
>> > 
>> > Just a really minor codying style change here, remove the extra space
>> > between * and olddn: struct ldb_dn * olddn,  ->  struct ldb_dn *olddn,
>> > 
>> > 
>> > Patch0004: SYSDB: ldb_add --> sss_ldb_add in sysdb
>> > Patch0005: SYSDB: ldb_delete --> sss_ldb_delete in sysdb
>> > Patch0006: SYSDB: ldb_modify --> sss_ldb_modify in sysdb
>> > Patch0007: SYSDB: ldb_rename --> sss_ldb_rename in sysdb
>> > 
>> > LGTM
>> > 
>> > 
>> > Best Regards,
>> > --
>> > Fabiano Fidêncio
>
>Hello,
>
>
>there is new patch set attached.
>I replaced all ldb_* to new wrapper in whole code.
>
>Regards
>
>-- 
>Petr^4 Čech

>From 529b0d3009f8310b8257d5a69639a0fafa30140c Mon Sep 17 00:00:00 2001
>From: Petr Cech <pc...@example.com>
>Date: Tue, 16 Aug 2016 09:32:18 +0200
>Subject: [PATCH 1/7] SYSDB: Adding message to inform which cache is used
>
>Resolves:
>https://fedorahosted.org/sssd/ticket/3060
>---
> src/db/sysdb_ops.c | 32 ++++++++++++++++++++++++++++++++
> 1 file changed, 32 insertions(+)
>
>diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c
>index 
>5d9c9fb24a149f8215b3027dcb4b0e1a183e4b43..847b663bdb2ec31de3eb3b4c33e2b942145a4c42
> 100644
>--- a/src/db/sysdb_ops.c
>+++ b/src/db/sysdb_ops.c
>@@ -27,6 +27,12 @@
> #include "util/cert.h"
> #include <time.h>
> 
>+
>+#define SSS_SYSDB_NO_CACHE 0x0
>+#define SSS_SYSDB_CACHE 0x1
>+#define SSS_SYSDB_TS_CACHE 0x2
>+#define SSS_SYSDB_BOTH_CACHE (SSS_SYSDB_CACHE | SSS_SYSDB_TS_CACHE)
>+
> static uint32_t get_attr_as_uint32(struct ldb_message *msg, const char *attr)
> {
>     const struct ldb_val *v = ldb_msg_find_ldb_val(msg, attr);
>@@ -1176,6 +1182,21 @@ done:
>     return ret;
> }
> 
>+static const char *get_attr_storage(int state_mask)
>+{
>+    const char *storage = "";
>+
>+    if ((state_mask & SSS_SYSDB_BOTH_CACHE) != 0) {
Let's assume that we will add new type of cache in future
(e.g. SSS_SYSDB_SECRET_CACHE)

If the value of "state_mask" was CACHE | TS_CACHE SECRET_CACHE
then this condition would be true but return incorrent string.

>+        storage = "cache, ts_cache";
>+    } else if ((state_mask != SSS_SYSDB_TS_CACHE) != 0) {
>+        storage = "ts_cache";
>+    } else if ((state_mask &= SSS_SYSDB_CACHE) != 0) {
>+        storage = "cache";
>+    }
>+
>+    return storage;
>+}
>+
> int sysdb_set_entry_attr(struct sysdb_ctx *sysdb,
>                          struct ldb_dn *entry_dn,
>                          struct sysdb_attrs *attrs,
>@@ -1184,6 +1205,7 @@ int sysdb_set_entry_attr(struct sysdb_ctx *sysdb,
>     bool sysdb_write = true;
>     errno_t ret = EOK;
>     errno_t tret = EOK;
>+    int state_mask = SSS_SYSDB_NO_CACHE;
> 
>     sysdb_write = sysdb_entry_attrs_diff(sysdb, entry_dn, attrs, mod_op);
>     if (sysdb_write == true) {
>@@ -1192,6 +1214,8 @@ int sysdb_set_entry_attr(struct sysdb_ctx *sysdb,
>             DEBUG(SSSDBG_MINOR_FAILURE,
>                   "Cannot set attrs for %s, %d [%s]\n",
>                   ldb_dn_get_linearized(entry_dn), ret, sss_strerror(ret));
>+        } else {
>+            state_mask |= SSS_SYSDB_CACHE;
>         }
>     }
> 
>@@ -1201,9 +1225,17 @@ int sysdb_set_entry_attr(struct sysdb_ctx *sysdb,
>             DEBUG(SSSDBG_MINOR_FAILURE,
>                 "Cannot set ts attrs for %s\n", 
> ldb_dn_get_linearized(entry_dn));
>             /* Not fatal */
>+        } else {
>+            state_mask |= SSS_SYSDB_TS_CACHE;
>         }
>     }
> 
>+    if (state_mask != SSS_SYSDB_NO_CACHE) {
>+        DEBUG(SSSDBG_FUNC_DATA, "Entry [%s] has set [%s] attrs.\n",
>+                                ldb_dn_get_linearized(entry_dn),
>+                                get_attr_storage(state_mask));
>+    }
>+
>     return ret;
> }
> 
>-- 
>2.7.4
>

>From abad5d0a7c730f8eb0699509ed21e559e6896f12 Mon Sep 17 00:00:00 2001
>From: Petr Cech <pc...@example.com>
>Date: Tue, 16 Aug 2016 09:33:46 +0200
>Subject: [PATCH 2/7] SYSDB: Adding message about reason why cache changed
>
>Resolves:
>https://fedorahosted.org/sssd/ticket/3060
>---
> src/db/sysdb.c | 20 ++++++++++++++++++--
> 1 file changed, 18 insertions(+), 2 deletions(-)
>
>diff --git a/src/db/sysdb.c b/src/db/sysdb.c
>index 
>6f0b1b9e9b52bede68f03cb5674f65b91cc28c98..a76e8b47afc902d6c0c0ed5302b7f9231a11ade3
> 100644
>--- a/src/db/sysdb.c
>+++ b/src/db/sysdb.c
>@@ -1821,7 +1821,8 @@ bool sysdb_msg_attrs_modts_differs(struct ldb_message 
>*old_entry,
>     return true;
> }
> 
>-static bool sysdb_ldb_msg_difference(struct ldb_message *db_msg,
>+static bool sysdb_ldb_msg_difference(struct ldb_dn *entry_dn,
>+                                     struct ldb_message *db_msg,
>                                      struct ldb_message *mod_msg)
> {
>     struct ldb_message_element *mod_msg_el;
>@@ -1848,6 +1849,9 @@ static bool sysdb_ldb_msg_difference(struct ldb_message 
>*db_msg,
>                  */
>                 if (mod_msg_el->num_values > 0) {
>                     /* We can ignore additions of timestamp attributes */
>+                    DEBUG(SSSDBG_TRACE_FUNC,
>+                          "Entry [%s] differs, reason: attr [%s] is new.\n",
>+                          ldb_dn_get_linearized(entry_dn), mod_msg_el->name);
>                     return true;
>                 }
>                 break;
>@@ -1861,6 +1865,9 @@ static bool sysdb_ldb_msg_difference(struct ldb_message 
>*db_msg,
>                  */
>                 if (is_ts_cache_attr(mod_msg_el->name) == false) {
>                     /* We can ignore changes to timestamp attributes */
>+                    DEBUG(SSSDBG_TRACE_FUNC,
>+                          "Entry [%s] differs, reason: attr [%s] is replaced 
>or extended.\n",
                                                                               
^^
                                                        more then 80 columns
>+                          ldb_dn_get_linearized(entry_dn), mod_msg_el->name);
>                     return true;
>                 }
>             }
>@@ -1869,6 +1876,9 @@ static bool sysdb_ldb_msg_difference(struct ldb_message 
>*db_msg,
>             db_msg_el = ldb_msg_find_element(db_msg, mod_msg_el->name);
>             if (db_msg_el != NULL) {
>                 /* We are deleting a valid element, there is a difference */
>+                DEBUG(SSSDBG_TRACE_FUNC,
>+                      "Entry [%s] differs, reason: attr [%s] is deleted.\n",
>+                      ldb_dn_get_linearized(entry_dn), mod_msg_el->name);
>                 return true;
>             }
>             break;
>@@ -1892,10 +1902,16 @@ bool sysdb_entry_attrs_diff(struct sysdb_ctx *sysdb,
>     const char *attrnames[attrs->num+1];
> 
>     if (sysdb->ldb_ts == NULL) {
>+        DEBUG(SSSDBG_TRACE_FUNC,
>+              "Entry [%s] differs, reason: there is no ts_cache yet.\n",
>+              ldb_dn_get_linearized(entry_dn));
>         return true;
>     }
> 
>     if (is_ts_ldb_dn(entry_dn) == false) {
>+        DEBUG(SSSDBG_TRACE_FUNC,
>+              "Entry [%s] differs, reason: ts_cache doesn't trace this type 
>of entry.\n",
>+              ldb_dn_get_linearized(entry_dn));
>         return true;
>     }
> 
>@@ -1930,7 +1946,7 @@ bool sysdb_entry_attrs_diff(struct sysdb_ctx *sysdb,
>         goto done;
>     }
> 
>-    differs = sysdb_ldb_msg_difference(res->msgs[0], new_entry_msg);
>+    differs = sysdb_ldb_msg_difference(entry_dn, res->msgs[0], new_entry_msg);
> done:
>     talloc_free(tmp_ctx);
>     return differs;
>-- 
>2.7.4
>


We should also increase the debug_level for messages.

@see
[root@host ~]# grep "Entry \[" /var/log/sssd/sssd_example.com.log
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sysdb_ldb_msg_difference] 
(0x0400): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
differs, reason: attr [originalDN] is new.
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
has set [cache, ts_cache] attrs.
(Wed Sep 14 15:47:11 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
has set [cache, ts_cache] attrs.
(Wed Sep 14 15:47:11 2016) [sssd[be[example.com]]] [sysdb_ldb_msg_difference] 
(0x0400): Entry [name=lsleb...@example.com,cn=groups,cn=example.com,cn=sysdb] 
differs, reason: attr [lastUpdate] is new.
(Wed Sep 14 15:47:11 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry [name=lsleb...@example.com,cn=groups,cn=example.com,cn=sysdb] 
has set [cache, ts_cache] attrs.
(Wed Sep 14 15:47:11 2016) [sssd[be[example.com]]] [sysdb_ldb_msg_difference] 
(0x0400): Entry [name=de...@example.com,cn=groups,cn=example.com,cn=sysdb] 
differs, reason: attr [lastUpdate] is new.
(Wed Sep 14 15:47:11 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry [name=de...@example.com,cn=groups,cn=example.com,cn=sysdb] has 
set [cache, ts_cache] attrs.
(Wed Sep 14 15:47:11 2016) [sssd[be[example.com]]] [sysdb_ldb_msg_difference] 
(0x0400): Entry 
[name=idm-dev-...@example.com,cn=groups,cn=example.com,cn=sysdb] differs, 
reason: attr [lastUpdate] is new.
(Wed Sep 14 15:47:11 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry 
[name=idm-dev-...@example.com,cn=groups,cn=example.com,cn=sysdb] has set 
[cache, ts_cache] attrs.
(Wed Sep 14 15:47:11 2016) [sssd[be[example.com]]] [sysdb_ldb_msg_difference] 
(0x0400): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
differs, reason: attr [initgrExpireTimestamp] is new.
(Wed Sep 14 15:47:11 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
has set [cache, ts_cache] attrs.
(Wed Sep 14 15:47:15 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
has set [cache, ts_cache] attrs.
(Wed Sep 14 15:47:15 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
has set [cache, ts_cache] attrs.
(Wed Sep 14 15:47:15 2016) [sssd[be[example.com]]] [sysdb_ldb_msg_difference] 
(0x0400): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
differs, reason: attr [ccacheFile] is new.
(Wed Sep 14 15:47:15 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
has set [cache, ts_cache] attrs.
(Wed Sep 14 15:47:15 2016) [sssd[be[example.com]]] [sysdb_ldb_msg_difference] 
(0x0400): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
differs, reason: attr [cachedPassword] is new.
(Wed Sep 14 15:47:15 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
has set [cache, ts_cache] attrs.
(Wed Sep 14 15:47:15 2016) [sssd[be[example.com]]] [sysdb_ldb_msg_difference] 
(0x0400): Entry [name=lsleb...@example.com,cn=groups,cn=example.com,cn=sysdb] 
differs, reason: attr [originalModifyTimestamp] is new.
(Wed Sep 14 15:47:15 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry [name=lsleb...@example.com,cn=groups,cn=example.com,cn=sysdb] 
has set [cache, ts_cache] attrs.
(Wed Sep 14 15:47:23 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
has set [cache, ts_cache] attrs.
(Wed Sep 14 15:47:23 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
has set [cache, ts_cache] attrs.
(Wed Sep 14 15:47:23 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
has set [cache, ts_cache] attrs.
(Wed Sep 14 15:47:23 2016) [sssd[be[example.com]]] [sysdb_ldb_msg_difference] 
(0x0400): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
differs, reason: attr [cachedPassword] is replaced or extended.
(Wed Sep 14 15:47:23 2016) [sssd[be[example.com]]] [sysdb_set_entry_attr] 
(0x0200): Entry [name=lsleb...@example.com,cn=users,cn=example.com,cn=sysdb] 
has set [cache, ts_cache] attrs.


Other simillar debug messages use much higher debug level
e.g.

(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): shadowLastChange is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): shadowMin is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): shadowMax is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): shadowWarning is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): shadowInactive is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): shadowExpire is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): shadowFlag is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): krbLastPwdChange is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): krbPasswordExpiration is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): pwdAttribute is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): authorizedService is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): adAccountExpires is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): adUserAccountControl is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): nsAccountLock is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): authorizedHost is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): ndsLoginDisabled is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): ndsLoginExpirationTime is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): ndsLoginAllowedTimeMap is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): sshPublicKey is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): authType is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): userCertificate is not available for [lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sdap_attrs_add_ldap_attr] 
(0x2000): Adding mail [lsleb...@example.com] to attributes of 
[lsleb...@example.com].
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [sysdb_attrs_get_aliases] 
(0x2000): Domain is case-insensitive; will add lowercased aliases
(Wed Sep 14 15:47:10 2016) [sssd[be[example.com]]] [is_email_from_domain] 
(0x4000): Email [lsleb...@example.com] is from domain [example.com].


BTW new debug messages are 200 collumns long (in average).
and most of users use longer domains then example.com.
Is it intentional? Could it be shorter a little bit or it would
lower usability of debug messages.

LS
_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/admin/lists/sssd-devel@lists.fedorahosted.org

Reply via email to