Commit Diff


commit - 585e2e89a9d00df6ffe9a704f3de0f003b2b8b66
commit + c6714f66eaf3c9de88af2ecbc1203dd40e179694
blob - 6b067f72aa3eba6453a448f0270bbad62994122e
blob + 43ba16459fc95b747f77424a8a39393de727e99a
--- smtp_proc.c
+++ smtp_proc.c
@@ -36,6 +36,8 @@
 struct smtp_callback;
 struct smtp_request;
 
+extern struct event_base *current_base;
+
 static int smtp_register(char *, char *, char *, void *);
 static ssize_t smtp_getline(char ** restrict, size_t * restrict);
 static void smtp_newline(int, short, void *);
@@ -116,7 +118,6 @@ smtp_run(int debug)
 	ready = 1;
 
 	log_init(debug, LOG_MAIL);
-	event_init();
 	event_set(&stdinev, STDIN_FILENO, EV_READ | EV_PERSIST, smtp_newline,
 	    &stdinev);
 	event_add(&stdinev, NULL);
@@ -444,10 +445,14 @@ static int
 smtp_register(char *type, char *phase, char *direction, void *cb)
 {
 	int i;
+	static int evinit = 0;
 
 	if (ready)
 		fatalx("Can't register when proc is running");
 
+	if (!evinit)
+		event_init();
+
 	for (i = 0; i < NITEMS(smtp_callbacks); i++) {
 		if (strcmp(type, smtp_callbacks[i].type) == 0 &&
 		    strcmp(phase, smtp_callbacks[i].phase) == 0 &&