ports/176178: Implement upstream fix where multiple iaxmodem instances are spawned
John Bayly
freebsd.ports at tipstrade.net
Fri Feb 15 18:10:01 UTC 2013
>Number: 176178
>Category: ports
>Synopsis: Implement upstream fix where multiple iaxmodem instances are spawned
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Fri Feb 15 18:10:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator: John Bayly
>Release: 7.3-RELEASE
>Organization:
TipsTrade Ltd.
>Environment:
FreeBSD rack 7.3-RELEASE-p2 FreeBSD 7.3-RELEASE-p2 #7: Fri Feb 4 15:47:31 GMT 2011 baylyj at rack:/usr/obj/usr/src/sys/S5500BC amd64
>Description:
Multiple instances of iaxmodem are being spawned due to a badly placed closedir call. The fix has been submitted (and accepted) upstream, however there has been no new release since the fix was submitted. I've been running *my* patched version since November 2011 without a hickhup.
http://sourceforge.net/tracker/?func=detail&aid=3438845&group_id=148814&atid=772727
>How-To-Repeat:
Running an iaxmodem device will cause multiple instances of iaxmodem to spawn.
>Fix:
Patch iaxmodem.c using the following patch
Patch attached with submission follows:
--- iaxmodem.c.orig 2009-02-21 18:57:05.000000000 +0000
+++ iaxmodem.c 2011-11-16 16:18:48.000000000 +0000
@@ -21,17 +21,18 @@
#include <string.h>
#include <strings.h>
-#ifndef __OpenBSD__
+#if !defined(__OpenBSD__) && !defined(__FreeBSD__)
# ifndef USE_UNIX98_PTY
# include <pty.h>
# endif /* !USE_UNIX98_PTY */
#else
+#include <termios.h>
+#if !defined(__FreeBSD__)
# include <util.h>
#endif
+#endif
-#include <termios.h>
-
#include <stdlib.h>
#include <unistd.h>
#include <dirent.h>
@@ -53,6 +54,26 @@
#include <math.h>
#include <stdint.h>
+
+#ifdef __FreeBSD__
+#include <libutil.h>
+char* strndup(const char* string, size_t n)
+{
+ char* copy_string = 0;
+
+ if(0 == string || 0 == n)
+ return 0;
+
+ copy_string = (char*) malloc(n + 1);
+ if(0 == copy_string)
+ return 0;
+
+ memcpy(copy_string, string, n);
+ *(copy_string + n) = '\0';
+
+ return copy_string;
+}
+#endif
#include <tiffio.h>
#ifndef O_LARGEFILE
@@ -1645,8 +1666,6 @@
}
}
- closedir(cfdir);
-
if (pid == 0) {
/* Start the modem */
iaxmodem(config, 0);
@@ -1654,6 +1673,8 @@
return 1;
}
+ closedir(cfdir);
+
return 0;
}
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list