[Asterisk-cvs] asterisk/pbx pbx_spool.c,1.5.2.2,1.5.2.3

citats at lists.digium.com citats at lists.digium.com
Sun Apr 4 20:00:40 CDT 2004


Update of /usr/cvsroot/asterisk/pbx
In directory mongoose.digium.com:/home/citats/cvs/asterisk-stable/pbx

Modified Files:
      Tag: v1-0_stable
	pbx_spool.c 
Log Message:
Make pbx_spool update utime with every safe_append



Index: pbx_spool.c
===================================================================
RCS file: /usr/cvsroot/asterisk/pbx/pbx_spool.c,v
retrieving revision 1.5.2.2
retrieving revision 1.5.2.3
diff -u -d -r1.5.2.2 -r1.5.2.3
--- pbx_spool.c	20 Mar 2004 21:13:30 -0000	1.5.2.2
+++ pbx_spool.c	5 Apr 2004 00:00:34 -0000	1.5.2.3
@@ -167,6 +167,7 @@
 					} else if (!strcasecmp(buf, "endretry") || !strcasecmp(buf, "abortretry")) {
 						o->callingpid = 0;
 						o->retries++;
+					} else if (!strcasecmp(buf, "delayedretry")) {
 					} else if (!strcasecmp(buf, "setvar")) { /* JDG variable support */
 						strncat(o->variable, c, sizeof(o->variable) - strlen(o->variable) - 1);
 						strncat(o->variable, "|", sizeof(o->variable) - strlen(o->variable) - 1);
@@ -196,15 +197,21 @@
 {
 	int fd;
 	FILE *f;
+	struct utimbuf tbuf;
 	fd = open(o->fn, O_WRONLY|O_APPEND);
 	if (fd > -1) {
 		f = fdopen(fd, "a");
 		if (f) {
-			fprintf(f, "%s: %d (%ld) (%ld)\n", s, o->retries, (long)ast_mainpid, (long) now);
+			fprintf(f, "%s: %ld %d (%ld)\n", s, (long)ast_mainpid, o->retries, (long) now);
 			fclose(f);
 		} else
 			close(fd);
 	}
+	/* Update the file time */
+	tbuf.actime = now;
+	tbuf.modtime = now + o->retrytime;
+	if (utime(o->fn, &tbuf))
+		ast_log(LOG_WARNING, "Unable to set utime on %s: %s\n", o->fn, strerror(errno));
 }
 
 static void *attempt_thread(void *data)
@@ -263,10 +270,12 @@
 		if (f) {
 			if (!apply_outgoing(o, fn, f)) {
 #if 0
-				printf("Retries: %d, max: %d\n", o->retries, o->maxretries);
+				printf("Filename: %s, Retries: %d, max: %d\n", fn, o->retries, o->maxretries);
 #endif
+				fclose(f);
 				if (o->retries <= o->maxretries) {
 					if (o->callingpid && (o->callingpid == ast_mainpid)) {
+						safe_append(o, time(NULL), "DelayedRetry");
 						ast_log(LOG_DEBUG, "Delaying retry since we're currently running '%s'\n", o->fn);
 					} else {
 						/* Increment retries */
@@ -275,23 +284,14 @@
 						   so abort their retry and continue as we were... */
 						if (o->callingpid)
 							safe_append(o, time(NULL), "AbortRetry");
-							
-						/* Add a retry line at the end */
-						fseek(f, 0L, SEEK_END);
-						fprintf(f, "StartRetry: %d %d (%ld)\n", ast_mainpid, o->retries, (long) now);
-						fclose(f);
+
+						safe_append(o, now, "StartRetry");
 						launch_service(o);
 					}
-					/* Update the file time */
-					tbuf.actime = atime;
-					tbuf.modtime = now + o->retrytime;
-					if (utime(o->fn, &tbuf))
-						ast_log(LOG_WARNING, "Unable to set utime on %s: %s\n", fn, strerror(errno));
 					now += o->retrytime;
 					return now;
 				} else {
 					ast_log(LOG_EVENT, "Queued call to %s/%s expired without completion after %d attempt(s)\n", o->tech, o->dest, o->retries - 1);
-					fclose(f);
 					free(o);
 					unlink(fn);
 					return 0;




More information about the svn-commits mailing list