}
if ((p = strchr_m(uname,'@'))) {
- /*
- * We also need to set username and domain
- * in order to undo the effect of
- * cli_credentials_guess().
- */
- cli_credentials_set_username(credentials, uname, obtained);
- cli_credentials_set_domain(credentials, "", obtained);
+ const char *realm = p + 1;
- cli_credentials_set_principal(credentials, uname, obtained);
- *p = 0;
- cli_credentials_set_realm(credentials, p+1, obtained);
+ if (realm[0] == '\0') {
+ *p = 0;
+
+ /*
+ * We also need to set username and domain
+ * in order to undo the effect of
+ * cli_credentials_guess().
+ */
+ cli_credentials_set_username(credentials,
+ uname,
+ obtained);
+ cli_credentials_set_domain(credentials, "", obtained);
+ } else {
+ cli_credentials_set_principal(credentials,
+ uname,
+ obtained);
+ *p = 0;
+
+ cli_credentials_set_realm(credentials, realm, obtained);
+ }
return;
} else if ((p = strchr_m(uname,'\\'))
|| (p = strchr_m(uname, '/'))