aboutsummaryrefslogtreecommitdiff
path: root/pmult
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2008-11-17 20:23:14 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2008-11-17 20:23:14 +0000
commit14cb4d917abdc9912bd16a199b0023330500c951 (patch)
tree3ba0c2326d4c9cf89066d5ab1509c6269527d811 /pmult
parent206d038a3aa08f59cbbe29344e96ecb88e3e32a3 (diff)
downloadmailfromd-14cb4d917abdc9912bd16a199b0023330500c951.tar.gz
mailfromd-14cb4d917abdc9912bd16a199b0023330500c951.tar.bz2
Document and improve pmult.
* pmult/pmult.c (debug_level): Remove. (struct pmult_priv_data): Remove debug. Use pmult_debug instead. (macro_trans): Define Sendmail compatibility macros cn_issuer and cn_subject. (builtin_macros): Fix typo in "multiplexer". (define_macros): Rewrite. The "define-macros" statement takes exactly two arguments, each of which can be either a string or a list of strings. * doc/values.texi, doc/mailfromd.texi, doc/pmult.texi: Update. * doc/Makefile.am (check-fixmes): Scan all texinfo documents. git-svn-id: file:///svnroot/mailfromd/trunk@1756 7a8a7f39-df28-0410-adc6-e0d955640f24
Diffstat (limited to 'pmult')
-rw-r--r--pmult/pmult.c242
1 files changed, 120 insertions, 122 deletions
diff --git a/pmult/pmult.c b/pmult/pmult.c
index f5c4efea..8963fca5 100644
--- a/pmult/pmult.c
+++ b/pmult/pmult.c
@@ -47,7 +47,6 @@ const char *package_bugreport = "<" PACKAGE_BUGREPORT ">";
char *portspec; /* Communication socket */
int log_to_stderr; /* Use stderr for logging */
char *log_tag; /* override mu_log_tag */
-mu_log_level_t debug_level; /* Debug verbosity level */
mu_debug_t pmult_debug; /* Debugging object */
unsigned pmilter_debug_level;
static pthread_mutex_t pmult_debug_mutex = PTHREAD_MUTEX_INITIALIZER;
@@ -82,7 +81,6 @@ enum pmult_msg_state
struct pmult_priv_data
{
- mu_debug_t debug;
mu_list_t /* of gacopyz_srv_t */ srvlist;
pthread_mutex_t mutex;
char *seid;
@@ -133,6 +131,9 @@ struct mu_kwd macro_trans[] = {
{ "tls_cn_subject", PMM_TLS_CN_SUBJECT },
{ "tls_cn_issuer", PMM_TLS_CN_ISSUER },
+ { "cn_issuer", PMM_TLS_CN_ISSUER },
+ { "cn_subject", PMM_TLS_CN_SUBJECT },
+
{ "auth_type", PMM_AUTH_TYPE },
{ "auth_authen", PMM_AUTH_AUTHEN },
{ "auth_author", PMM_AUTH_AUTHOR },
@@ -184,7 +185,7 @@ macro_defined(uint32_t *tab, uint count, uint32_t macro)
}
static char *builtin_macros[] = {
- "multiplexor", "pmult",
+ "multiplexer", "pmult",
"mult_version", PACKAGE_VERSION,
NULL
};
@@ -477,7 +478,8 @@ static int
_cb_debug (mu_debug_t debug, void *data, mu_config_value_t *arg)
{
int rc;
-
+ int debug_level;
+
if (mu_cfg_assert_value_type (arg, MU_CFG_STRING, debug))
return 1;
rc = mu_debug_level_from_string (arg->v.string, &debug_level, debug);
@@ -489,98 +491,101 @@ _cb_debug (mu_debug_t debug, void *data, mu_config_value_t *arg)
return 0;
}
-static int
-define_macros (mu_debug_t debug,
- const char *stage_name, size_t argc, mu_config_value_t *argv)
+
+struct macro_slot
{
- int stage;
- uint i, j;
+ uint stage;
+ uint num;
+};
+
+int
+define_single_macro (mu_debug_t debug, const char *string, void *data)
+{
+ struct macro_slot *slot = data;
+ int macro;
- if (mu_kwd_xlat_name (meta_stage_trans, stage_name, &stage))
+ if (mu_kwd_xlat_name (macro_trans, string, &macro))
{
- mu_cfg_format_error (debug, MU_DEBUG_ERROR, _("Unknown SMTP stage"));
+ mu_cfg_format_error (debug, MU_DEBUG_ERROR,
+ _("Unknown MeTA1 macro %s"),
+ string);
return 1;
}
- for (i = 0; i < PM_MAX_MACROS && macrotab[stage][i] != PMM_END; i++)
- ;
-
- for (j = 0; j < argc; j++)
+ switch (macro)
{
- int macro;
-
- if (mu_cfg_assert_value_type (&argv[j], MU_CFG_STRING, debug))
- return 1;
-
- if (i == PM_MAX_MACROS)
+ case PMM_MAIL_TAID:
+ if (slot->stage < PM_SMST_MAIL)
{
mu_cfg_format_error (debug, MU_DEBUG_ERROR,
- _("Too many macros defined (at %s, max. %d)"),
- argv[j].v.string, PM_MAX_MACROS);
- break;
- }
-
- if (mu_kwd_xlat_name (macro_trans, argv[j].v.string, &macro))
- {
- mu_cfg_format_error (debug, MU_DEBUG_ERROR,
- _("Unknown MeTA1 macro %s"),
- argv[j].v.string);
- continue;
+ _("Macro \"taid\" cannot be requested "
+ "at this stage"));
+ return 1;
}
+ break;
- switch (macro)
- {
- case PMM_MAIL_TAID:
- if (stage < PM_SMST_MAIL)
- {
- mu_cfg_format_error (debug, MU_DEBUG_ERROR,
- _("Macro \"taid\" cannot be requested "
- "at this stage"));
- continue;
- }
- break;
-
- case PMM_DOT_MSGID:
- if (stage != PM_SMST_DOT)
- {
- mu_cfg_format_error (debug, MU_DEBUG_ERROR,
- _("Macro \"msgid\" cannot be requested "
- "at this stage"));
- continue;
- }
- }
-
- if (macro_defined (macrotab[stage], i, macro))
- {
- mu_debug_printf (debug, MU_DIAG_WARNING,
- _("Macro %s already defined\n"),
- argv[j].v.string);
- continue;
- }
- macrotab[stage][i] = macro;
- if (mu_kwd_xlat_tok (macro_trans, macro,
- (const char**) &macronames[stage][i]))
+ case PMM_DOT_MSGID:
+ if (slot->stage != PM_SMST_DOT)
{
mu_cfg_format_error (debug, MU_DEBUG_ERROR,
- _("INTERNAL ERROR at %s:%d"),
- __FILE__, __LINE__);
- exit (EX_SOFTWARE);
+ _("Macro \"msgid\" cannot be requested "
+ "at this stage"));
+ return 1;
}
- i++;
}
- macrotab[stage][i] = PMM_END;
- macronames[stage][i] = NULL;
+
+ if (macro_defined (macrotab[slot->stage], slot->num, macro))
+ {
+ mu_debug_printf (debug, MU_DIAG_WARNING,
+ _("Macro %s already defined\n"),
+ string);
+ return 1;
+ }
+ macrotab[slot->stage][slot->num] = macro;
+ if (mu_kwd_xlat_tok (macro_trans, macro,
+ (const char**) &macronames[slot->stage][slot->num]))
+ {
+ mu_cfg_format_error (debug, MU_DEBUG_ERROR,
+ _("INTERNAL ERROR at %s:%d"),
+ __FILE__, __LINE__);
+ exit (EX_SOFTWARE);
+ }
+ slot->num++;
return 0;
}
+static int
+define_macros (mu_debug_t debug, const char *stage_name,
+ mu_config_value_t *arg)
+{
+ int rc;
+ uint i;
+ struct macro_slot slot;
+
+ if (mu_kwd_xlat_name (meta_stage_trans, stage_name, &slot.stage))
+ {
+ mu_cfg_format_error (debug, MU_DEBUG_ERROR, _("Unknown SMTP stage"));
+ return 1;
+ }
+
+ for (i = 0; i < PM_MAX_MACROS && macrotab[slot.stage][i] != PMM_END; i++)
+ ;
+ slot.num = i;
+ rc = mu_cfg_string_value_cb (debug, arg, define_single_macro, &slot);
+ macrotab[slot.stage][slot.num] = PMM_END;
+ macronames[slot.stage][slot.num] = NULL;
+ return rc;
+}
+
struct define_closure
{
int retcode;
mu_debug_t debug;
- size_t argc;
- mu_config_value_t *argv;
+ mu_config_value_t *arg;
};
+
+
static int
define_macros_iter (void *item, void *data)
{
@@ -590,8 +595,7 @@ define_macros_iter (void *item, void *data)
if (mu_cfg_assert_value_type (arg, MU_CFG_STRING, clos->debug))
clos->retcode = 1;
else
- clos->retcode |= define_macros (clos->debug, arg->v.string,
- clos->argc, clos->argv);
+ clos->retcode |= define_macros (clos->debug, arg->v.string, clos->arg);
return 0;
}
@@ -606,23 +610,28 @@ _cb_define (mu_debug_t debug, void *data, mu_config_value_t *arg)
if (arg->v.arg.c < 2)
{
mu_cfg_format_error (debug, MU_DEBUG_ERROR,
- _("Not enough arguments to define-macro"));
+ _("Not enough arguments to define-macros"));
return 1;
}
-
+ else if (arg->v.arg.c > 2)
+ {
+ mu_cfg_format_error (debug, MU_DEBUG_ERROR,
+ _("Too many arguments to define-macros"));
+ return 1;
+ }
+
switch (arg->v.arg.v[0].type)
{
case MU_CFG_STRING:
rc = define_macros (debug,
arg->v.arg.v[0].v.string,
- arg->v.arg.c - 1, arg->v.arg.v + 1);
+ &arg->v.arg.v[1]);
break;
case MU_CFG_LIST:
dc.retcode = 0;
dc.debug = debug;
- dc.argc = arg->v.arg.c - 1;
- dc.argv = arg->v.arg.v + 1;
+ dc.arg = &arg->v.arg.v[1];
mu_list_do (arg->v.arg.v[0].v.list, define_macros_iter, &dc);
rc = dc.retcode;
break;
@@ -677,7 +686,7 @@ struct mu_cfg_param pmult_cfg_param[] = {
N_("Write PID to this file.") },
{ "auth-macros", mu_cfg_bool, &want_auth_macros, 0, NULL,
N_("Pass auth macros to MAIL handler.") },
- { "define-macro", mu_cfg_callback, NULL, 0, _cb_define,
+ { "define-macros", mu_cfg_callback, NULL, 0, _cb_define,
N_("Define macros for the given SMTP stage."),
N_("stage: string> <macros: strings") },
{ NULL }
@@ -947,7 +956,7 @@ cb_reply (gacopyz_srv_t gsrv, int cmd, int rcmd, void *data)
break;
}
cp++;
- PMU_DEBUG4 (p->debug, MU_DEBUG_TRACE2,
+ PMU_DEBUG4 (pmult_debug, MU_DEBUG_TRACE2,
"%s=%u '%s','%s'\n",
hdrcommname (rcmd), idx, buf, cp);
@@ -972,7 +981,7 @@ cb_reply (gacopyz_srv_t gsrv, int cmd, int rcmd, void *data)
type = (*cp == 0) ? SM_HDRMOD_T_REMOVE : SM_HDRMOD_T_REPLACE;
if (get_mod_index (p, buf, idx, &index))
{
- PMU_DEBUG1 (p->debug, MU_DEBUG_TRACE1,
+ PMU_DEBUG1 (pmult_debug, MU_DEBUG_TRACE1,
"no such header: %s\n", buf);
return 0;
}
@@ -1038,7 +1047,7 @@ pmult_std_reply (struct pmult_priv_data *p, pmse_ctx_P pmse_ctx,
case SMFIR_REPLYCODE:
gacopyz_srv_reply (gsrv, &buf, &size);
- PMU_DEBUG3 (p->debug, MU_DEBUG_TRACE2,
+ PMU_DEBUG3 (pmult_debug, MU_DEBUG_TRACE2,
"%s=%s, reply=%s\n",
ident, arg, buf);
tmp = trailcrlf (&buf);
@@ -1048,33 +1057,33 @@ pmult_std_reply (struct pmult_priv_data *p, pmse_ctx_P pmse_ctx,
return status;
case SMFIR_ACCEPT:
- PMU_DEBUG2 (p->debug, MU_DEBUG_TRACE2,
+ PMU_DEBUG2 (pmult_debug, MU_DEBUG_TRACE2,
"%s=%s, accept\n",
ident, arg);
return SMTP_R_ACCEPT;
case SMFIR_REJECT:
- PMU_DEBUG3 (p->debug, MU_DEBUG_TRACE2,
+ PMU_DEBUG3 (pmult_debug, MU_DEBUG_TRACE2,
"%s=%s, reply=%s\n",
ident, arg, MSG_REJECT);
SM_VERBOSE (sm_pmfi_setreply (pmse_ctx, MSG_REJECT));
return SMTP_R_PERM;
case SMFIR_DISCARD:
- PMU_DEBUG2 (p->debug, MU_DEBUG_TRACE2,
+ PMU_DEBUG2 (pmult_debug, MU_DEBUG_TRACE2,
"%s=%s, discard\n",
ident, arg);
return SMTP_R_DISCARD;
case SMFIR_TEMPFAIL:
- PMU_DEBUG3 (p->debug, MU_DEBUG_TRACE2,
+ PMU_DEBUG3 (pmult_debug, MU_DEBUG_TRACE2,
"%s=%s, reply=%s\n",
ident, arg, MSG_TEMPFAIL);
SM_VERBOSE (sm_pmfi_setreply (pmse_ctx, MSG_TEMPFAIL));
return SMTP_R_TEMP;
case SMFIR_SHUTDOWN:
- PMU_DEBUG3 (p->debug, MU_DEBUG_TRACE2,
+ PMU_DEBUG3 (pmult_debug, MU_DEBUG_TRACE2,
"%s=%s, reply=%s\n",
ident, arg, MSG_SHUTDOWN);
SM_VERBOSE (sm_pmfi_setreply (pmse_ctx, MSG_SHUTDOWN));
@@ -1082,7 +1091,7 @@ pmult_std_reply (struct pmult_priv_data *p, pmse_ctx_P pmse_ctx,
case SMFIR_ADDRCPT:
gacopyz_srv_reply (gsrv, &buf, &size);
- PMU_DEBUG3 (p->debug, MU_DEBUG_TRACE2,
+ PMU_DEBUG3 (pmult_debug, MU_DEBUG_TRACE2,
"%s=%s, addrcpt=%s\n",
ident, arg, buf);
SM_VERBOSE (sm_pmfi_rcpt_add (pmse_ctx, buf, NULL));
@@ -1090,7 +1099,7 @@ pmult_std_reply (struct pmult_priv_data *p, pmse_ctx_P pmse_ctx,
case SMFIR_DELRCPT:
gacopyz_srv_reply (gsrv, &buf, &size);
- PMU_DEBUG3 (p->debug, MU_DEBUG_TRACE2,
+ PMU_DEBUG3 (pmult_debug, MU_DEBUG_TRACE2,
"%s=%s, delrcpt=%s\n",
ident, arg, buf);
/* FIXME: Index is always 0. Should it be 1? */
@@ -1175,7 +1184,6 @@ pmult_free (struct pmult_priv_data *p)
mu_stream_destroy (&p->hdrstream, NULL);
mu_header_destroy (&p->hdr, mu_header_get_owner (p->hdr));
- mu_debug_destroy (&p->debug, NULL);
pthread_mutex_destroy (&p->mutex);
free (p);
}
@@ -1257,7 +1265,6 @@ pmult_connect (pmse_ctx_P pmse_ctx, const char *hostname,
{
mu_iterator_t itr;
struct pmult_priv_data *p;
- mu_debug_t dbg = NULL;
int status = SMTP_R_CONT;
int rc;
char *tmp = NULL;
@@ -1265,16 +1272,10 @@ pmult_connect (pmse_ctx_P pmse_ctx, const char *hostname,
char **kv;
char buf[INT_BUFSIZE_BOUND (uintmax_t)];
- if (debug_level)
- {
- mu_debug_create (&dbg, NULL);
- mu_debug_set_level (dbg, debug_level);
- }
-
- if (mu_debug_check_level (dbg, MU_DEBUG_TRACE1))
+ if (mu_debug_check_level (pmult_debug, MU_DEBUG_TRACE1))
{
char *p = mu_sockaddr_to_astr (&hostaddr->sa, sizeof *hostaddr);
- __PMU_DEBUG2 (dbg, MU_DEBUG_TRACE1,
+ __PMU_DEBUG2 (pmult_debug, MU_DEBUG_TRACE1,
"Connect from: %s, address %s\n", hostname, p);
free (p);
}
@@ -1283,10 +1284,8 @@ pmult_connect (pmse_ctx_P pmse_ctx, const char *hostname,
if (!p)
{
mu_error ("%s: accept", mu_strerror (ENOMEM));
- mu_debug_destroy (&dbg, NULL);
return SMTP_R_ACCEPT;
}
- p->debug = dbg;
pthread_mutex_init (&p->mutex, NULL);
kv = translate_macros0 (pmse_ctx, p, PM_SMST_CONNECT, 0);
@@ -1297,7 +1296,6 @@ pmult_connect (pmse_ctx_P pmse_ctx, const char *hostname,
if (rc)
{
mu_error ("%smu_list_create: %s", PRIV_SEID_C (p), mu_strerror (rc));
- mu_debug_destroy (&dbg, NULL);
free (p);
return SMTP_R_ACCEPT;
}
@@ -1367,7 +1365,7 @@ pmult_close (pmse_ctx_P pmse_ctx)
struct pmult_priv_data *p = sm_pmfi_get_ctx_se (pmse_ctx);
if (p)
{
- PMU_DEBUG1 (p->debug, MU_DEBUG_TRACE1, "%sClosing connection\n",
+ PMU_DEBUG1 (pmult_debug, MU_DEBUG_TRACE1, "%sClosing connection\n",
PRIV_SEID_C (p));
pmult_shutdown (pmse_ctx, p);
}
@@ -1389,7 +1387,7 @@ pmult_helo (pmse_ctx_P pmse_ctx, const char *helohost, bool ehlo)
struct pmult_priv_data *p = sm_pmfi_get_ctx_se (pmse_ctx);
char **kv = translate_macros (pmse_ctx, PM_SMST_EHLO, 1);
- PMU_DEBUG2 (p->debug, MU_DEBUG_TRACE1, "%sHELO %s\n",
+ PMU_DEBUG2 (pmult_debug, MU_DEBUG_TRACE1, "%sHELO %s\n",
PRIV_SEID_C (p), helohost);
kv[0] = "s";
kv[1] = (char*) helohost;
@@ -1426,17 +1424,17 @@ pmult_mail (pmse_ctx_P pmse_ctx, const char *mail, char **argv)
struct env_arg x;
sfsistat_T status;
- if (mu_debug_check_level (p->debug, MU_DEBUG_TRACE1))
+ if (mu_debug_check_level (pmult_debug, MU_DEBUG_TRACE1))
{
int i;
- __PMU_DEBUG2 (p->debug, MU_DEBUG_TRACE1, "%sMAIL FROM: %s",
+ __PMU_DEBUG2 (pmult_debug, MU_DEBUG_TRACE1, "%sMAIL FROM: %s",
PRIV_SEID_C (p), mail);
if (argv)
{
for (i = 0; argv[i]; i++)
- __PMU_DEBUG1 (p->debug, MU_DEBUG_TRACE1, " %s", argv[i]);
+ __PMU_DEBUG1 (pmult_debug, MU_DEBUG_TRACE1, " %s", argv[i]);
}
- PMU_DEBUG (p->debug, MU_DEBUG_TRACE1, "\n");
+ PMU_DEBUG (pmult_debug, MU_DEBUG_TRACE1, "\n");
}
/* Fill in the macro array */
@@ -1450,7 +1448,7 @@ pmult_mail (pmse_ctx_P pmse_ctx, const char *mail, char **argv)
mu_address_destroy (&addr);
}
kv[2] = "ntries";
- kv[3] = "0";
+ kv[3] = "1";
kv[4] = "nrcpts";
kv[5] = "0";
kv[6] = "nbadrcpts";
@@ -1547,23 +1545,23 @@ pmult_rcpt (pmse_ctx_P pmse_ctx, const char *rcpt, char **argv)
char buf1[INT_BUFSIZE_BOUND (uintmax_t)];
char buf2[INT_BUFSIZE_BOUND (uintmax_t)];
- if (mu_debug_check_level (p->debug, MU_DEBUG_TRACE1))
+ if (mu_debug_check_level (pmult_debug, MU_DEBUG_TRACE1))
{
int i;
- __PMU_DEBUG2 (p->debug, MU_DEBUG_TRACE1, "%sRCPT TO: %s",
+ __PMU_DEBUG2 (pmult_debug, MU_DEBUG_TRACE1, "%sRCPT TO: %s",
PRIV_SEID_C (p), rcpt);
if (argv)
{
for (i = 0; argv[i]; i++)
- __PMU_DEBUG1 (p->debug, MU_DEBUG_TRACE1, " %s", argv[i]);
+ __PMU_DEBUG1 (pmult_debug, MU_DEBUG_TRACE1, " %s", argv[i]);
}
- PMU_DEBUG (p->debug, MU_DEBUG_TRACE1, "\n");
+ PMU_DEBUG (pmult_debug, MU_DEBUG_TRACE1, "\n");
}
p->nrcpt++;
if (parse_email_addr (rcpt, &sender, &addr, &host))
{
- PMU_DEBUG2 (p->debug, MU_DEBUG_ERROR, "%sbad recipient address %s",
+ PMU_DEBUG2 (pmult_debug, MU_DEBUG_ERROR, "%sbad recipient address %s",
PRIV_SEID_C (p), rcpt);
p->nbadrcpts++;
return SMTP_R_CONT; /* eh? */
@@ -1628,7 +1626,7 @@ pmult_data (pmse_ctx_P pmse_ctx)
{
struct pmult_priv_data *p = sm_pmfi_get_ctx_se (pmse_ctx);
char **kv = translate_macros (pmse_ctx, PM_SMST_DATA, 4);
- PMU_DEBUG1 (p->debug, MU_DEBUG_TRACE1, "%sDATA\n", PRIV_SEID_C (p));
+ PMU_DEBUG1 (pmult_debug, MU_DEBUG_TRACE1, "%sDATA\n", PRIV_SEID_C (p));
return pmult_runlist (p, rf_data, pmse_ctx, NULL, kv);
}
@@ -1637,7 +1635,7 @@ static sfsistat_T
pmult_unknown (pmse_ctx_P pmse_ctx, const char *cmd)
{
struct pmult_priv_data *p = sm_pmfi_get_ctx_se (pmse_ctx);
- PMU_DEBUG2 (p->debug, MU_DEBUG_TRACE1, "%sUnknown command %s\n",
+ PMU_DEBUG2 (pmult_debug, MU_DEBUG_TRACE1, "%sUnknown command %s\n",
PRIV_SEID_C (p), cmd);
return SMTP_R_CONT;
}
@@ -1656,7 +1654,7 @@ pmult_abort (pmse_ctx_P pmse_ctx)
struct pmult_priv_data *p = sm_pmfi_get_ctx_se (pmse_ctx);
if (p)
{
- PMU_DEBUG1 (p->debug, MU_DEBUG_TRACE1, "%sABORT\n", PRIV_SEID_C (p));
+ PMU_DEBUG1 (pmult_debug, MU_DEBUG_TRACE1, "%sABORT\n", PRIV_SEID_C (p));
pmult_runlist (p, rf_abort, pmse_ctx, NULL, NULL);
pmult_clear (p);
}
@@ -1865,11 +1863,11 @@ pmult_msg_handler (pmse_ctx_P pmse_ctx, unsigned char *buf, size_t len)
if (p)
{
- if (mu_debug_check_level (p->debug, MU_DEBUG_TRACE7))
- __PMU_DEBUG4 (p->debug, MU_DEBUG_TRACE1, "%sBODY %lu %.*s\n",
+ if (mu_debug_check_level (pmult_debug, MU_DEBUG_TRACE7))
+ __PMU_DEBUG4 (pmult_debug, MU_DEBUG_TRACE1, "%sBODY %lu %.*s\n",
PRIV_SEID_C (p), (unsigned long) len, (int) len, buf);
else
- PMU_DEBUG2 (p->debug, MU_DEBUG_TRACE1, "%sBODY %lu\n",
+ PMU_DEBUG2 (pmult_debug, MU_DEBUG_TRACE1, "%sBODY %lu\n",
PRIV_SEID_C (p), (unsigned long) len);
}
else
@@ -1925,7 +1923,7 @@ pmult_eom (pmse_ctx_P pmse_ctx)
struct body_chunk bc;
sfsistat_T rc;
- PMU_DEBUG1 (p->debug, MU_DEBUG_TRACE1, "%sEOM\n", PRIV_SEID_C (p));
+ PMU_DEBUG1 (pmult_debug, MU_DEBUG_TRACE1, "%sEOM\n", PRIV_SEID_C (p));
bc.ident = "eom";
bc.srvfun = gacopyz_srv_eom;
bc.size = 0;

Return to:

Send suggestions and report system problems to the System administrator.