summaryrefslogtreecommitdiff
path: root/imap4d
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2017-04-08 19:16:04 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2017-04-08 19:41:25 +0300
commitf9a28c0373000d37b6021eaf845fec23f7608eb8 (patch)
tree247d11ed04e43f10f8680992cc7411658240fa1e /imap4d
parentf8ee4fc648dd94e25d81e1c2f892cf7d9fc0d500 (diff)
downloadmailutils-f9a28c0373000d37b6021eaf845fec23f7608eb8.tar.gz
mailutils-f9a28c0373000d37b6021eaf845fec23f7608eb8.tar.bz2
Improve generation of session identifiers for server programs
* include/mailutils/acl.h (mu_acl_set_session_id): Remove proto. * include/mailutils/server.h (mu_session_id): Remove extern. (mu_sid): New proto. * libmailutils/server/sid.c: New file. * libmailutils/server/Makefile.am: Add sid.c * libmailutils/server/ipsrv.c (mu_ip_tcp_accept) (mu_ip_udp_accept): Remove calls to mu_acl_set_session_id. (mu_ip_server_accept): Make sure output to mu_strerr is filtered so that session ID is prepended to each line. (mu_ip_server_loop): Remove. * libmailutils/server/msrv.c (mu_m_server_check_acl): Remove call to mu_acl_set_session_id. * libmailutils/server/server.c (mu_session_id): Remove variable. * imap4d/imap4d.c (get_client_address, set_strerr_flt) (clr_strerr_flt): Remove unused functions. (imap4d_connection): Simplify. * pop3d/pop3d.c: Likewise.
Diffstat (limited to 'imap4d')
-rw-r--r--imap4d/imap4d.c98
1 files changed, 6 insertions, 92 deletions
diff --git a/imap4d/imap4d.c b/imap4d/imap4d.c
index 5fa579c40..4d660779a 100644
--- a/imap4d/imap4d.c
+++ b/imap4d/imap4d.c
@@ -17,8 +17,8 @@
#include "imap4d.h"
#include <mailutils/gsasl.h>
-#include "mailutils/cli.h"
-#include "mailutils/kwd.h"
+#include <mailutils/cli.h>
+#include <mailutils/kwd.h>
#include "tcpwrap.h"
mu_m_server_t server;
@@ -705,83 +705,6 @@ imap4d_session_setup (char *username)
}
return imap4d_session_setup0 ();
}
-
-int
-get_client_address (int fd, struct sockaddr_in *pcs)
-{
- socklen_t len = sizeof *pcs;
-
- if (getpeername (fd, (struct sockaddr *) pcs, &len) < 0)
- {
- mu_diag_funcall (MU_DIAG_ERROR, "getpeername", NULL, errno);
- return 1;
- }
- return 0;
-}
-
-static int
-set_strerr_flt (void)
-{
- mu_stream_t flt, trans[2];
- int rc;
-
- rc = mu_stream_ioctl (mu_strerr, MU_IOCTL_TOPSTREAM, MU_IOCTL_OP_GET, trans);
- if (rc == 0)
- {
- char sessidstr[10];
- char *argv[] = { "inline-comment", NULL, "-S", NULL };
-
- snprintf (sessidstr, sizeof sessidstr, "%08lx:", mu_session_id);
- argv[1] = sessidstr;
- rc = mu_filter_create_args (&flt, trans[0], "inline-comment", 3,
- (const char **)argv,
- MU_FILTER_ENCODE, MU_STREAM_WRITE);
- mu_stream_unref (trans[0]);
- if (rc == 0)
- {
- mu_stream_set_buffer (flt, mu_buffer_line, 0);
- trans[0] = flt;
- trans[1] = NULL;
- rc = mu_stream_ioctl (mu_strerr, MU_IOCTL_TOPSTREAM,
- MU_IOCTL_OP_SET, trans);
- mu_stream_unref (trans[0]);
- if (rc)
- mu_error (_("%s failed: %s"), "MU_IOCTL_SET_STREAM",
- mu_stream_strerror (mu_strerr, rc));
- }
- else
- mu_error (_("cannot create log filter stream: %s"), mu_strerror (rc));
- }
- else
- {
- mu_error (_("%s failed: %s"), "MU_IOCTL_GET_STREAM",
- mu_stream_strerror (mu_strerr, rc));
- }
- return rc;
-}
-
-static void
-clr_strerr_flt (void)
-{
- mu_stream_t flt, trans[2];
- int rc;
-
- rc = mu_stream_ioctl (mu_strerr, MU_IOCTL_TOPSTREAM, MU_IOCTL_OP_GET, trans);
- if (rc == 0)
- {
- flt = trans[0];
-
- rc = mu_stream_ioctl (flt, MU_IOCTL_TOPSTREAM, MU_IOCTL_OP_GET, trans);
- if (rc == 0)
- {
- mu_stream_unref (trans[0]);
- rc = mu_stream_ioctl (mu_strerr, MU_IOCTL_TOPSTREAM,
- MU_IOCTL_OP_SET, trans);
- if (rc == 0)
- mu_stream_unref (flt);
- }
- }
-}
void
imap4d_child_signal_setup (RETSIGTYPE (*handler) (int signo))
@@ -895,27 +818,18 @@ imap4d_mainloop (int ifd, int ofd, struct imap4d_srv_config *cfg)
return 0;
}
-
+
int
imap4d_connection (int fd, struct sockaddr *sa, int salen,
struct mu_srv_config *pconf, void *data)
{
struct imap4d_srv_config *cfg = (struct imap4d_srv_config *) pconf;
- int rc;
- idle_timeout = pconf->timeout;
- imap4d_transcript = pconf->transcript;
+ idle_timeout = cfg->m_cfg.timeout;
+ imap4d_transcript = cfg->m_cfg.transcript;
- if (mu_log_session_id)
- rc = set_strerr_flt ();
- else
- rc = 1;
-
imap4d_mainloop (fd, fd, cfg);
- if (rc == 0)
- clr_strerr_flt ();
-
return 0;
}
@@ -1057,7 +971,7 @@ main (int argc, char **argv)
if (setgid (gr->gr_gid) == -1)
{
mu_error (_("error setting mail group: %s"), mu_strerror (errno));
- exit (EX_OSERR);
+ //exit (EX_OSERR);
}
}

Return to:

Send suggestions and report system problems to the System administrator.