*/
uschar *
-event_raise(uschar * action, const uschar * event, uschar * ev_data, int * errnop)
+event_raise(const uschar * action, const uschar * event, const uschar * ev_data,
+ int * errnop)
{
-uschar * s;
+const uschar * s;
if (action)
{
DEBUG(D_deliver)
event_name = event;
event_data = ev_data;
- if (!(s = expand_string(action)) && *expand_string_message)
+ if (!(s = expand_cstring(action)) && *expand_string_message)
log_write(0, LOG_MAIN|LOG_PANIC,
"failed to expand event_action %s in %s: %s\n",
event, transport_name ? transport_name : US"main", expand_string_message);
event_name = event_data = NULL;
/* If the expansion returns anything but an empty string, flag for
- the caller to modify his normal processing
+ the caller to modify his normal processing. Copy the string to
+ de-const it.
*/
if (s && *s)
{
debug_printf("Event(%s): event_action returned \"%s\"\n", event, s);
if (errnop)
*errnop = ERRNO_EVENT;
- return s;
+ return string_copy(s);
}
}
return NULL;
extern void enq_end(uschar *);
extern BOOL enq_start(uschar *, unsigned);
#ifndef DISABLE_EVENT
-extern uschar *event_raise(uschar *, const uschar *, uschar *, int *);
+extern uschar *event_raise(const uschar *, const uschar *, const uschar *, int *);
extern void msg_event_raise(const uschar *, const address_item *);
#endif
uschar *errors_reply_to = NULL;
int errors_sender_rc = EXIT_FAILURE;
#ifndef DISABLE_EVENT
-uschar *event_action = NULL; /* expansion for delivery events */
-uschar *event_data = NULL; /* auxiliary data variable for event */
-int event_defer_errno = 0;
-const uschar *event_name = NULL; /* event name variable */
+uschar *event_action = NULL; /* expansion for delivery events */
+const uschar *event_data = NULL; /* auxiliary data variable for event */
+int event_defer_errno = 0;
+const uschar *event_name = NULL; /* event name variable */
#endif
#ifndef DISABLE_EVENT
extern uschar *event_action; /* expansion for delivery events */
-extern uschar *event_data; /* event data */
+extern const uschar *event_data; /* event data */
extern int event_defer_errno; /* error number set when a remote delivery is deferred with a host error */
extern const uschar *event_name; /* event classification */
#endif