changeset 151:1a324eeb3b36

--- src/mlmmj-send.c 2 Jun 2004 19:10:11 -0000 1.31 +++ src/mlmmj-send.c 2 Jun 2004 19:19:48 -0000 @@ -35,8 +35,6 @@ #include "log_error.h" #include "mygetline.h" -static int conncount = 0; /* Connection count */ - char *bounce_from_adr(const char *recipient, const char *listadr, const char *mailfilename) { @@ -345,15 +343,6 @@ return 0; } -void sig_child(int sig) -{ - pid_t pid; - int stat; - - while((pid = waitpid(-1, &stat, WNOHANG) > 0)) - conncount--; -} - static void print_help(const char *prg) { printf("Usage: %s [-L /path/to/list || -l listctrl] -m /path/to/mail " @@ -380,7 +369,7 @@ { size_t len = 0; int sockfd = 0, opt, mindex; - int deletewhensent = 1, *newsockfd, sendres, archive = 1; + int deletewhensent = 1, sendres, archive = 1; char *listaddr, *mailfilename = NULL, *subfilename = NULL; char *replyto = NULL, *bounceaddr = NULL, *to_addr = NULL; char *relayhost = NULL, *archivefilename = NULL, *tmpstr; @@ -389,8 +378,6 @@ DIR *subddir; FILE *subfile = NULL, *mailfile = NULL, *tmpfile; struct dirent *dp; - pid_t childpid; - struct sigaction sigact; log_set_name(argv[0]); @@ -564,11 +551,6 @@ } free(subddirname); - sigact.sa_handler = sig_child; - sigemptyset(&sigact.sa_mask); - sigact.sa_flags = SA_NOCLDSTOP; - sigaction(SIGCHLD, &sigact, 0); - while((dp = readdir(subddir)) != NULL) { if(!strcmp(dp->d_name, ".")) continue; @@ -585,41 +567,19 @@ fprintf(stderr, "found subfile '%s'\n", subfilename); free(subfilename); - while((conncount >= MAX_CONNECTIONS)) - usleep(WAITSLEEP); - - childpid = fork(); - if(childpid < 0) - log_error(LOG_ARGS, "Could not fork."); - /* TODO: we have to keep track of unsent - * files */ - - conncount++; - - if(childpid == 0) { - newsockfd = malloc(sizeof(int)); - initsmtp(newsockfd, relayhost); - send_mail_many(*newsockfd, NULL, NULL, - mailfile, subfile, listaddr, - archivefilename, listdir, - mlmmjbounce); - endsmtp(newsockfd); - free(newsockfd); - fclose(subfile); - exit(EXIT_SUCCESS); - } else - fclose(subfile); + initsmtp(&sockfd, relayhost); + send_mail_many(sockfd, NULL, NULL, mailfile, subfile, + listaddr, archivefilename, listdir, + mlmmjbounce); + endsmtp(&sockfd); + fclose(subfile); } closedir(subddir); break; } - while(conncount > 0) - usleep(WAITSLEEP); - if(archive) { rename(mailfilename, archivefilename); - free(archivefilename); } else if(deletewhensent) unlink(mailfilename);
author mmj
date Thu, 03 Jun 2004 05:27:20 +1000
parents 74cc0873e5e6
children 2fb415c3738f
files src/mlmmj-send.c
diffstat 1 files changed, 7 insertions(+), 47 deletions(-) [+]
line wrap: on
line diff
--- a/src/mlmmj-send.c	Thu Jun 03 05:26:35 2004 +1000
+++ b/src/mlmmj-send.c	Thu Jun 03 05:27:20 2004 +1000
@@ -35,8 +35,6 @@
 #include "log_error.h"
 #include "mygetline.h"
 
-static int conncount = 0;  /* Connection count */
-
 char *bounce_from_adr(const char *recipient, const char *listadr,
 		      const char *mailfilename)
 {
@@ -345,15 +343,6 @@
 	return 0;
 }	
 
-void sig_child(int sig)
-{
-	pid_t pid;
-	int stat;
-
-	while((pid = waitpid(-1, &stat, WNOHANG) > 0))
-		conncount--;
-}
-
 static void print_help(const char *prg)
 {
         printf("Usage: %s [-L /path/to/list || -l listctrl] -m /path/to/mail "
@@ -380,7 +369,7 @@
 {
 	size_t len = 0;
 	int sockfd = 0, opt, mindex;
-	int deletewhensent = 1, *newsockfd, sendres, archive = 1;
+	int deletewhensent = 1, sendres, archive = 1;
 	char *listaddr, *mailfilename = NULL, *subfilename = NULL;
 	char *replyto = NULL, *bounceaddr = NULL, *to_addr = NULL;
 	char *relayhost = NULL, *archivefilename = NULL, *tmpstr;
@@ -389,8 +378,6 @@
 	DIR *subddir;
 	FILE *subfile = NULL, *mailfile = NULL, *tmpfile;
 	struct dirent *dp;
-	pid_t childpid;
-	struct sigaction sigact;
 	
 	log_set_name(argv[0]);
 
@@ -564,11 +551,6 @@
 		}
 		free(subddirname);
 
-		sigact.sa_handler = sig_child;
-		sigemptyset(&sigact.sa_mask);
-		sigact.sa_flags = SA_NOCLDSTOP;
-		sigaction(SIGCHLD, &sigact, 0);
-
 		while((dp = readdir(subddir)) != NULL) {
 			if(!strcmp(dp->d_name, "."))
 				continue;
@@ -585,41 +567,19 @@
 			fprintf(stderr, "found subfile '%s'\n", subfilename);
 			free(subfilename);
 
-			while((conncount >= MAX_CONNECTIONS))
-				usleep(WAITSLEEP);
-
-			childpid = fork();
-			if(childpid < 0)
-				log_error(LOG_ARGS, "Could not fork.");
-				/* TODO: we have to keep track of unsent
-				 * files */
-
-			conncount++;
-
-			if(childpid == 0) {
-				newsockfd = malloc(sizeof(int));
-				initsmtp(newsockfd, relayhost);
-				send_mail_many(*newsockfd, NULL, NULL,
-					       mailfile, subfile, listaddr,
-					       archivefilename, listdir,
+			initsmtp(&sockfd, relayhost);
+			send_mail_many(sockfd, NULL, NULL, mailfile, subfile,
+					listaddr, archivefilename, listdir,
 					       mlmmjbounce);
-				endsmtp(newsockfd);
-				free(newsockfd);
-				fclose(subfile);
-				exit(EXIT_SUCCESS);
-			} else
+			endsmtp(&sockfd);
 				fclose(subfile);
 		}
 		closedir(subddir);
 		break;
 	}
 	
-	while(conncount > 0)
-		usleep(WAITSLEEP);
-
 	if(archive) {
 		rename(mailfilename, archivefilename);
-
 		free(archivefilename);
 	} else if(deletewhensent)
 		unlink(mailfilename);