summaryrefslogtreecommitdiff
path: root/libmailutils/server/ipsrv.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2010-12-06 01:18:38 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2010-12-06 01:40:09 +0200
commit65ee39bff915f6466f57c1f81361bf57a64b0163 (patch)
treeb40172c56e33174392cbf53de52a309818bc47c8 /libmailutils/server/ipsrv.c
parent7acfd2d86d9629f8510e4badd16d1098fe6df4b4 (diff)
downloadmailutils-65ee39bff915f6466f57c1f81361bf57a64b0163.tar.gz
mailutils-65ee39bff915f6466f57c1f81361bf57a64b0163.tar.bz2
Rewrite debugging and logging support.
The mu_debug_t object and associated functions have been removed. New debugging functions are based on the logstream interface. * include/mailutils/debug.hm4: Remove. * include/mailutils/debug.h: New file. * include/mailutils/Makefile.am (BUILT_SOURCES,EXTRA_DIST): Remove debug.h, debug.hm4. * mu-aux/debugdef.m4: Remove. * mu-aux/debcat.awk: New file. * mu-aux/Makefile.am (EXTRA_DIST): Replace debugdef.m4 with debcat.awk. * include/mailutils/sys/dbgstream.h: Remove. * include/mailutils/sys/debug.h: Remove. * include/mailutils/sys/Makefile.am (sysinclude_HEADERS): Remove debug.h and dbgstream.h, add debcat.h * include/mailutils/sys/.gitignore: Add debcat.h. * libmailutils/diag/dbgstderr.c: Remove. * libmailutils/diag/dbgsyslog.c: Remove. * libmailutils/diag/gdebug.c: Remove. * libmailutils/diag/debcat: New file. * libmailutils/diag/Makefile.am (libdiag_la_SOURCES): Remove these sources. * libmailutils/diag/debug.c: Rewrite from scratch. * libmailutils/diag/diag.c: Rewrite from scratch. * libmailutils/diag/syslog.c (mu_diag_syslog_printer): Remove function. (mu_log_syslog, mu_log_print_severity): New variables. * libmailutils/stream/dbgstream.c: Remove. * libmailutils/stream/Makefile.am (libstream_la_SOURCES): Remove dbgstream.c.. * libmailutils/stdstream/Makefile.am (libstdstream_la_SOURCES): Add dbgstream.c. * libmailutils/stream/logstream.c (_mu_severity_str): Change strings to lower case. (_log_write): Improve handling of unrecognized escapes. (_log_ctl): Handle MU_LOGSTREAM_ADVANCE_LOCUS_LINE and MU_LOGSTREAM_ADVANCE_LOCUS_COL. * libmailutils/mailbox/folder.c (mu_folder_has_debug) (mu_folder_get_debug, mu_folder_set_debug): Remove functions. * mu-aux/debcat.awk: New file. * libmailutils/stdstream/dbgstream.c: New file. * comsat/action.c: Use new debug/log functions. * comsat/comsat.c: Likewise. * examples/aclck.c: Likewise. * examples/echosrv.c: Likewise. * examples/msg-send.c: Likewise. * examples/nntpclient.c: Likewise. * examples/numaddr.c: Likewise. * frm/common.c: Likewise. * imap4d/imap4d.c: Likewise. * imap4d/io.c: Likewise. * imap4d/util.c: Likewise. * libmailutils/auth/mu_auth.c: Likewise. * libmailutils/base/amd.c: Likewise. * libmailutils/cfg/driver.c: Likewise. * libmailutils/cfg/format.c: Likewise. * libmailutils/cfg/lexer.l: Likewise. * libmailutils/cfg/parser.y: Likewise. * libmailutils/mailbox/mailbox.c: Likewise. * libmailutils/mailbox/mbx_default.c: Likewise. * libmailutils/mailer/mailer.c: Likewise. * libmailutils/mailer/progmailer.c: Likewise. * libmailutils/server/acl.c: Likewise. * libmailutils/server/ipsrv.c: Likewise. * libmailutils/server/msrv.c: Likewise. * libmailutils/tests/wicket.c: Likewise. * libmu_argp/auth.c: Likewise. * libmu_argp/cmdline.c: Likewise. * libmu_argp/common.c: Likewise. * libmu_auth/ldap.c: Likewise. * libmu_cfg/acl.c: Likewise. * libmu_cfg/auth.c: Likewise. * libmu_cfg/common.c: Likewise. * libmu_cfg/ldap.c: Likewise. * libmu_cfg/sieve.c: Likewise. * libmu_cfg/sql.c: Likewise. * libmu_scm/mu_message.c: Likewise. * libmu_sieve/prog.c: Likewise. * libmu_sieve/runtime.c: Likewise. * libproto/imap/trace.c: Likewise. * libproto/mailer/mbox.c: Likewise. * libproto/mailer/prog.c: Likewise. * libproto/mailer/sendmail.c: Likewise. * libproto/mailer/smtp.c: Likewise. * libproto/mailer/smtp_trace.c: Likewise. * libproto/mbox/folder.c: Likewise. * libproto/mbox/mbox.c: Likewise. * libproto/nntp/folder.c: Likewise. * libproto/nntp/nntp_debug.c: Likewise. * libproto/pop/mbox.c: Likewise. * libproto/pop/pop3_trace.c: Likewise. * maidag/guile.c: Likewise. * maidag/lmtp.c: Likewise. * maidag/maidag.c: Likewise. * maidag/util.c: Likewise. * mail/mail.c: Likewise. * mail/mailvar.c: Likewise. * mail/send.c: Likewise. * mail/source.c: Likewise. * mh/mh_argp.c: Likewise. * mh/send.c: Likewise. * mimeview/mimeview.c: Likewise. * movemail/movemail.c: Likewise. * mu/wicket.c: Likewise. * pop3d/extra.c: Likewise. * pop3d/pop3d.c: Likewise. * readmsg/readmsg.c: Likewise. * sieve/sieve.c: Likewise. * testsuite/mimetest.c: Likewise. * libmu_sieve/sieve-priv.h (mu_sieve_machine) <parse_error_printer> <error_printer, debug_printer, debug>: Remove. <errstream>: New member. (mu_sv_compile_error, mu_sv_print_value_list) (mu_sv_print_tag_list): Change prototypes. * libmu_sieve/actions.c: Use new sieve debug functions. * libmu_sieve/extensions/list.c: Likewise. * libmu_sieve/extensions/moderator.c: Likewise. * libmu_sieve/extensions/pipe.c: Likewise. * libmu_sieve/extensions/spamd.c: Likewise. * libmu_sieve/extensions/timestamp.c: Likewise. * libmu_sieve/extensions/vacation.c: Likewise. * libmu_sieve/sieve.y : Likewise. * libmu_sieve/sieve.l: Likewise. * libmu_sieve/tests.c: Likewise. * libmu_sieve/util.c: Rewrite diagnostic support. * /maidag/sieve.c: Use new debug/log and sieve diagnostic functions. * mu/mu.c (main): Remove call to mu_stdstream_setup. It is called by mu_app_init now. * libmailutils/base/wicket.c (mu_wicket_stream_match_url): Change signature. * libmailutils/cfg/gocs.c (mu_gocs_logging_init): Rewrite. * libmailutils/mailbox/message.c (mu_message_save_to_mailbox): Remove mu_debug_t argument. * libmailutils/stdstream/basestr.c (mu_stdstream_setup): Minor fixes. * libmailutils/stdstream/strerr.c (mu_stdstream_strerr_create): Do not install filter stream if tag is NULL. (mu_stdstream_strerr_setup): New function. * libmu_argp/muinit.c (mu_app_init): Set mu_log_tag. Call mu_stdstream_setup. * libmu_scm/mu_dbgport.c: Rewrite port support. * include/mailutils/acl.h (mu_acl_get_debug) (mu_acl_set_debug): Remove prototypes. * include/mailutils/auth.h (mu_wicket_stream_match_url): Change signature. * include/mailutils/cfg.h (mu_cfg_locus_t): Remove typedef, use struct mu_locus instead. (mu_cfg_locus): Remove declaration. (mu_cfg_node)<locus>: Change type. (mu_cfg_node)<debug>: Remove. (mu_cfg_vperror,mu_cfg_perror) (mu_cfg_parse_error,mu_cfg_format_error): Remove prototypes. (mu_cfg_callback_t): Change signature. All uses updated. (mu_cfg_get_debug): Remove prototype. (mu_cfg_assert_value_type, mu_cfg_string_value_cb): Change signature. (mu_cfg_tree_set_debug): Remove prototype. (mu_cfg_tree_create_node): Change signature. * include/mailutils/diag.h (MU_DIAG_): Redefine via MU_LOG_ constants. (mu_diag_get_debug,mu_diag_set_debug): Remove. (mu_diag_cont_vprintf, mu_diag_cont_printf) (mu_diag_at_locus): New functions. * include/mailutils/folder.h (mu_folder_has_debug) (mu_folder_get_debug, mu_folder_set_debug): Remove prototypes. * include/mailutils/gocs.h (mu_gocs_logging): Remove structure. (mu_gocs_debug)<errpfx>: Remove. * include/mailutils/guile.h (mu_scm_make_debug_port): Change prototype. * include/mailutils/mailbox.h (mu_mailbox_has_debug) (mu_mailbox_get_debug,mu_mailbox_set_debug): Remove. * include/mailutils/mailer.h (mu_mailer_get_debug) (mu_mailer_set_debug): Remove. * include/mailutils/message.h (mu_message_save_to_mailbox): Change signature. * include/mailutils/mu_auth.h (mu_auth_set_debug): Remove proto. * include/mailutils/nntp.h (mu_nntp_set_debug): Remove. * include/mailutils/progmailer.h (mu_progmailer_set_debug): Remove proto. * include/mailutils/server.h (mu_ip_server_set_debug) (mu_ip_server_get_debug): Remove proto. * include/mailutils/sieve.h (mu_sieve_locus_t): Remove. Use struct mu_locus instead. (mu_sieve_printf_t, mu_sieve_parse_error_t): Remove. (mu_sieve_action_log_t): Change signature. (mu_sieve_machine_init): Change signature. (mu_sieve_machine_init_ex): New function. (mu_sieve_get_diag_stream) (mu_sieve_set_diag_stream): New functions. (mu_sieve_set_data): New function. (mu_sieve_get_locus): Change signature. (mu_sieve_set_error,mu_sieve_set_parse_error) (mu_sieve_set_debug,mu_sieve_set_debug_object): Remove protos. * include/mailutils/stdstream.h (mu_stdstream_strerr_setup): New proto. * include/mailutils/stream.h (MU_LOGSTREAM_ADVANCE_LOCUS_LINE) (MU_LOGSTREAM_ADVANCE_LOCUS_COL): New ioctls. (mu_dbgstream_create): Change signature. * include/mailutils/sys/folder.h (_mu_folder) <debug>: Remove. * include/mailutils/sys/mailbox.h (_mu_mailbox) <debug>: Remove. * include/mailutils/sys/mailer.h (_mu_mailer) <debug>: Remove. * include/mailutils/sys/nntp.h (_mu_nntp) <debug>: Remove. * include/mailutils/syslog.h (mu_log_syslog) (mu_log_print_severity): New externs. * include/mailutils/types.hin (_mu_debug, mu_debug_t): Remove. * lib/tcpwrap.h: Remove unused prototypes. * imap4d/imap4d.h: Include mailutils/stdstream.h * mail/mail.h: Likewise. * pop3d/pop3d.h: Likewise. * mh/comp.c (main): Bugfix. * po/POTFILES.in: Update. * TODO: Update.
Diffstat (limited to 'libmailutils/server/ipsrv.c')
-rw-r--r--libmailutils/server/ipsrv.c87
1 files changed, 28 insertions, 59 deletions
diff --git a/libmailutils/server/ipsrv.c b/libmailutils/server/ipsrv.c
index e3efc62d1..498cac4e6 100644
--- a/libmailutils/server/ipsrv.c
+++ b/libmailutils/server/ipsrv.c
@@ -43,7 +43,6 @@ struct _mu_ip_server
int addrlen;
int fd;
int type;
- mu_debug_t debug;
mu_acl_t acl;
mu_ip_server_conn_fp f_conn;
mu_ip_server_intr_fp f_intr;
@@ -71,7 +70,6 @@ mu_ip_server_create (mu_ip_server_t *psrv, struct sockaddr *addr,
int addrlen, int type)
{
struct _mu_ip_server *srv;
- mu_log_level_t level;
switch (type)
{
@@ -95,12 +93,6 @@ mu_ip_server_create (mu_ip_server_t *psrv, struct sockaddr *addr,
memcpy (srv->addr, addr, addrlen);
srv->addrlen = addrlen;
srv->type = type;
- level = mu_global_debug_level ("ip_server");
- if (level)
- {
- mu_debug_create (&srv->debug, NULL);
- mu_debug_set_level (srv->debug, level);
- }
srv->fd = -1;
switch (type)
{
@@ -138,25 +130,6 @@ mu_ip_server_destroy (mu_ip_server_t *psrv)
}
int
-mu_ip_server_set_debug (mu_ip_server_t srv, mu_debug_t debug)
-{
- if (!srv)
- return EINVAL;
- mu_debug_destroy (&srv->debug, NULL);
- srv->debug = debug;
- return 0;
-}
-
-int
-mu_ip_server_get_debug (mu_ip_server_t srv, mu_debug_t *pdebug)
-{
- if (!srv)
- return EINVAL;
- *pdebug = srv->debug;
- return 0;
-}
-
-int
mu_ip_server_get_type (mu_ip_server_t srv, int *ptype)
{
if (!srv)
@@ -274,12 +247,10 @@ mu_ip_server_open (mu_ip_server_t srv)
if (!srv || srv->fd != -1)
return EINVAL;
- if (mu_debug_check_level (srv->debug, MU_DEBUG_TRACE0))
+ if (mu_debug_level_p (MU_DEBCAT_SERVER, MU_DEBUG_TRACE0))
{
char *p = mu_sockaddr_to_astr (srv->addr, srv->addrlen);
- __MU_DEBUG2 (srv->debug, MU_DEBUG_TRACE0,
- "opening server \"%s\" %s\n", IDENTSTR (srv),
- p);
+ mu_debug_log ("opening server \"%s\" %s", IDENTSTR (srv), p);
free (p);
}
@@ -287,8 +258,8 @@ mu_ip_server_open (mu_ip_server_t srv)
((srv->type == MU_IP_UDP) ? SOCK_DGRAM : SOCK_STREAM), 0);
if (fd == -1)
{
- MU_DEBUG2 (srv->debug, MU_DEBUG_ERROR,
- "%s: socket: %s\n", IDENTSTR (srv), mu_strerror (errno));
+ mu_debug (MU_DEBCAT_SERVER, MU_DEBUG_ERROR,
+ ("%s: socket: %s", IDENTSTR (srv), mu_strerror (errno)));
return errno;
}
@@ -303,26 +274,26 @@ mu_ip_server_open (mu_ip_server_t srv)
{
if (errno != ENOENT)
{
- MU_DEBUG3 (srv->debug, MU_DEBUG_ERROR,
- _("%s: file %s exists but cannot be stat'd: %s"),
+ mu_debug (MU_DEBCAT_SERVER, MU_DEBUG_ERROR,
+ ("%s: file %s exists but cannot be stat'd: %s",
IDENTSTR (srv),
s_un->sun_path,
- mu_strerror (errno));
+ mu_strerror (errno)));
return EAGAIN;
}
}
else if (!S_ISSOCK (st.st_mode))
{
- MU_DEBUG2 (srv->debug, MU_DEBUG_ERROR,
- _("%s: file %s is not a socket"),
- IDENTSTR (srv), s_un->sun_path);
+ mu_debug (MU_DEBCAT_SERVER, MU_DEBUG_ERROR,
+ ("%s: file %s is not a socket",
+ IDENTSTR (srv), s_un->sun_path));
return EAGAIN;
}
else if (unlink (s_un->sun_path))
{
- MU_DEBUG3 (srv->debug, MU_DEBUG_ERROR,
- _("%s: cannot unlink file %s: %s"),
- IDENTSTR (srv), s_un->sun_path, mu_strerror (errno));
+ mu_debug (MU_DEBCAT_SERVER, MU_DEBUG_ERROR,
+ ("%s: cannot unlink file %s: %s",
+ IDENTSTR (srv), s_un->sun_path, mu_strerror (errno)));
return EAGAIN;
}
}
@@ -339,8 +310,8 @@ mu_ip_server_open (mu_ip_server_t srv)
if (bind (fd, srv->addr, srv->addrlen) == -1)
{
- MU_DEBUG2 (srv->debug, MU_DEBUG_ERROR,
- "%s: bind: %s\n", IDENTSTR (srv), mu_strerror (errno));
+ mu_debug (MU_DEBCAT_SERVER, MU_DEBUG_ERROR,
+ ("%s: bind: %s", IDENTSTR (srv), mu_strerror (errno)));
close (fd);
return errno;
}
@@ -349,8 +320,8 @@ mu_ip_server_open (mu_ip_server_t srv)
{
if (listen (fd, srv->v.tcp_data.backlog) == -1)
{
- MU_DEBUG2 (srv->debug, MU_DEBUG_ERROR,
- "%s: listen: %s\n", IDENTSTR (srv), mu_strerror (errno));
+ mu_debug (MU_DEBCAT_SERVER, MU_DEBUG_ERROR,
+ ("%s: listen: %s", IDENTSTR (srv), mu_strerror (errno)));
close (fd);
return errno;
}
@@ -365,12 +336,10 @@ mu_ip_server_shutdown (mu_ip_server_t srv)
{
if (!srv || srv->fd != -1)
return EINVAL;
- if (mu_debug_check_level (srv->debug, MU_DEBUG_TRACE0))
+ if (mu_debug_level_p (MU_DEBCAT_SERVER, MU_DEBUG_TRACE0))
{
char *p = mu_sockaddr_to_astr (srv->addr, srv->addrlen);
- __MU_DEBUG2 (srv->debug, MU_DEBUG_TRACE0,
- "closing server \"%s\" %s\n", IDENTSTR (srv),
- p);
+ mu_debug_log ("closing server \"%s\" %s", IDENTSTR (srv), p);
free (p);
}
close (srv->fd);
@@ -411,9 +380,9 @@ mu_ip_tcp_accept (mu_ip_server_t srv, void *call_data)
mu_acl_result_t res;
int rc = mu_acl_check_sockaddr (srv->acl, &client.sa, size, &res);
if (rc)
- MU_DEBUG2 (srv->debug, MU_DEBUG_ERROR,
- "%s: mu_acl_check_sockaddr: %s\n",
- IDENTSTR (srv), strerror (rc));
+ mu_debug (MU_DEBCAT_SERVER, MU_DEBUG_ERROR,
+ ("%s: mu_acl_check_sockaddr: %s",
+ IDENTSTR (srv), strerror (rc)));
if (res == mu_acl_result_deny)
{
char *p = mu_sockaddr_to_astr (&client.sa, size);
@@ -477,9 +446,9 @@ mu_ip_udp_accept (mu_ip_server_t srv, void *call_data)
0, &client.sa, &salen);
if (size < 0)
{
- MU_DEBUG2 (srv->debug, MU_DEBUG_ERROR,
- "%s: recvfrom: %s",
- IDENTSTR (srv), strerror (errno));
+ mu_debug (MU_DEBCAT_SERVER, MU_DEBUG_ERROR,
+ ("%s: recvfrom: %s",
+ IDENTSTR (srv), strerror (errno)));
return MU_ERR_FAILURE;
}
srv->v.udp_data.rdsize = size;
@@ -489,9 +458,9 @@ mu_ip_udp_accept (mu_ip_server_t srv, void *call_data)
mu_acl_result_t res;
int rc = mu_acl_check_sockaddr (srv->acl, &client.sa, size, &res);
if (rc)
- MU_DEBUG2 (srv->debug, MU_DEBUG_ERROR,
- "%s: mu_acl_check_sockaddr: %s\n",
- IDENTSTR (srv), strerror (rc));
+ mu_debug (MU_DEBCAT_SERVER, MU_DEBUG_ERROR,
+ ("%s: mu_acl_check_sockaddr: %s\n",
+ IDENTSTR (srv), strerror (rc)));
if (res == mu_acl_result_deny)
{
char *p = mu_sockaddr_to_astr (srv->addr, srv->addrlen);

Return to:

Send suggestions and report system problems to the System administrator.