]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
mlmmj-maintd: do not execute mlmmj-unsub
authorBaptiste Daroussin <bapt@FreeBSD.org>
Thu, 9 Dec 2021 08:14:51 +0000 (09:14 +0100)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Thu, 9 Dec 2021 08:14:51 +0000 (09:14 +0100)
src/Makefile.am
src/mlmmj-maintd.c

index 5c5bdaf1250c578a50ff29be5ea494de26fed37f..3d4c474a3902ca2f4c81902bcf11937268eecb92 100644 (file)
@@ -58,7 +58,7 @@ mlmmj_maintd_SOURCES = mlmmj.c mlmmj-maintd.c print-version.c log_error.c mygetl
                       mylocking.c log_oper.c readn.c \
                       prepstdreply.c gethdrline.c unistr.c controls.c \
                       send_mails.c checkwait_smtpreply.c \
-                       mail-functions.c init_sockfd.c
+                       mail-functions.c init_sockfd.c subscriberfuncs.c
 
 mlmmj_list_SOURCES = mlmmj-list.c strgen.c  print-version.c memory.c \
                     log_error.c random-int.c readn.c subscriberfuncs.c
index 596f6bf4067e097b8420cc057098b05f4680eeeb..a2e1109f25325f40c461e77e5a16762384d43036 100644 (file)
@@ -47,6 +47,7 @@
 #include "log_oper.h"
 #include "utils.h"
 #include "send_mails.h"
+#include "subscriberfuncs.h"
 
 static void print_help(const char *prg)
 {
@@ -602,8 +603,7 @@ int unsub_bouncers(struct mlmmj_list *list, const char *mlmmjunsub)
        char *probefile, *address, *a, *firstbounce, *bouncedata;
        struct dirent *dp;
        struct stat st;
-       pid_t pid, childpid;
-       int status, fd;
+       int fd;
        time_t bouncetime, t, bouncelife = 0;
        const char *errstr;
        
@@ -700,37 +700,16 @@ int unsub_bouncers(struct mlmmj_list *list, const char *mlmmjunsub)
                }
                *a = '@';
 
-               childpid = fork();
-               
-               if(childpid < 0) {
-                       log_error(LOG_ARGS, "Could not fork");
-                       myfree(address);
-                       myfree(bouncedata);
-                       continue;
-               }
-
-               if(childpid > 0) {
-                       log_oper(list->dir, OPLOGFNAME, "mlmmj-maintd: %s"
-                                       " unsubscribed due to bouncing since"
-                                       " %s", address, bouncedata);
-                       myfree(address);
-                       myfree(bouncedata);
-                       do /* Parent waits for the child */
-                               pid = waitpid(childpid, &status, 0);
-                       while(pid == -1 && errno == EINTR);
-                       unlink(dp->d_name);
-                       a = concatstr(2, dp->d_name, ".lastmsg");
-                       unlink(a);
-                       myfree(a);
-               } else {
-                       execlp(mlmmjunsub, mlmmjunsub,
-                                       "-L", list->dir,
-                                       "-b", "-a", address, (char *)NULL);
-                       log_error(LOG_ARGS, "Could not execlp %s",
-                                               mlmmjunsub);
-                       /* This is the child. Exit on failure. */
-                       exit(EXIT_FAILURE);
-               }
+               unsubscribe(list, address, SUB_ALL, SUB_BOUNCING);
+               log_oper(list->dir, OPLOGFNAME, "mlmmj-maintd: %s"
+                       " unsubscribed due to bouncing since"
+                       " %s", address, bouncedata);
+               myfree(address);
+               myfree(bouncedata);
+               unlink(dp->d_name);
+               a = concatstr(2, dp->d_name, ".lastmsg");
+               unlink(a);
+               myfree(a);
        }
        closedir(bouncedir);