const char *name, const char *value,
const char *default_scheme)
{
- const char *p;
+ const char *p, *orig_value;
i_assert(*name != '\0');
i_assert(value != NULL);
if (strcmp(name, "user") == 0 ||
strcmp(name, "username") == 0 || strcmp(name, "domain") == 0) {
/* update username */
+ orig_value = value;
if (strcmp(name, "username") == 0 &&
strchr(value, '@') == NULL &&
(p = strchr(request->user, '@')) != NULL) {
request->user, value);
request->user = p_strdup(request->pool, value);
}
+ /* restore the original value so it gets saved correctly to
+ cache. */
+ value = orig_value;
} else if (strcmp(name, "nodelay") == 0) {
/* don't delay replying to client of the failure */
request->no_failure_delay = TRUE;