#include <stropts.h>
#endif
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
#if HAVE_SYS_CONF_H
#include <sys/conf.h>
#endif
) {
c->auth = 0;
} else {
- c->auth = 3;
+ c->auth = 4;
}
}
#endif /* !WANT_NONROOT */
chdir(c->curr_dir);
dump_file(c, 230, "welcome.msg");
#endif
+ /* Have a different message for anonymous users? */
numeric(c, 230, "User logged in.");
}
return 1;
#endif
bind(sock, (struct sockaddr *)&sin, sizeof(sin));
#if !WANT_NONROOT
- seteuid(c->uid);
setegid(c->gid);
+ seteuid(c->uid);
#endif
f->sin.sin_family = AF_INET;
"Waiting for e-mail address",
"Waiting for password",
"Logged in",
- "Waiting for password", /* actually non-existant user */
+ "Logged in", /* non-anonymous */
};
char ftran_state[6][42] = {
* down without clearing any sockets etc. In other words:
* Don't use it on a production site.
*/
-void cmd_exit(struct conn * const c)
+int cmd_exit(struct conn * const c)
{
while (first_conn->next_conn)
destroy_conn(first_conn->next_conn);