#define PASSWD_NOSAVE (1 << 1)
#define PASSWD_ALL (PASSWD_SET | PASSWD_NOSAVE)
+#define IS_AFP_SESSION(obj) ((obj)->dsi && (obj)->dsi->serversock == -1)
+
/**********************************************************************************************
* Ini config sections
**********************************************************************************************/
q++;
}
} else if (IS_VAR(p, "$c")) {
- DSI *dsi = obj->dsi;
- if (obj->username[0]) {
+ if (IS_AFP_SESSION(obj)) {
+ DSI *dsi = obj->dsi;
len = sprintf(dest, "%s:%u",
getip_string((struct sockaddr *)&dsi->client),
getip_port((struct sockaddr *)&dsi->client));
- } else {
+ dest += len;
+ destlen -= len;
}
- dest += len;
- destlen -= len;
} else if (IS_VAR(p, "$d")) {
q = path;
} else if (pwd && IS_VAR(p, "$f")) {
continue;
if (STRCMP(secname, ==, INISEC_HOMES)) {
have_uservol = 1;
- if (obj->username[0] == 0
+ if (!IS_AFP_SESSION(obj)
|| strcmp(obj->username, obj->options.guest) == 0)
/* not an AFP session, but cnid daemon, dbd or ad util, or guest login */
continue;
subpath = prw;
strlcat(tmpbuf, user, MAXPATHLEN);
+ strlcat(obj->username, user, MAXUSERLEN);
strlcat(tmpbuf, "/", MAXPATHLEN);
/* (6) */