opensips/opensips.patch.rtpproxy

Wed, 08 Feb 2012 20:07:00 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 08 Feb 2012 20:07:00 +0200
changeset 588
300d43423c2e
parent 377
67e813202d53
permissions
-rw-r--r--

Update version, adapt patch, correct PID writing, correct build on newer
FreeBSD releases, and most importantly introduce new patch to try to
avoid segfault caused by multiple network interfaces with the same (or
no) address. This is common when configuring bridges and tunnels.

     1 Index: main.c
     2 diff -Nau main.c.orig main.c
     3 --- main.c.orig	2008-06-17 05:19:48 +0200
     4 +++ main.c	2008-08-09 11:58:55 +0200
     5 @@ -86,7 +86,11 @@
     6  	bindhost = NULL;
     8      if ((n = resolve(ia, pf, bindhost, servname, AI_PASSIVE)) != 0)
     9 +#if defined(__sun__)
    10 +	errx(1, "setbindhost");
    11 +#else
    12  	errx(1, "setbindhost: %s", gai_strerror(n));
    13 +#endif
    14  }
    16  static void
    17 Index: rtpp_command.c
    18 diff -Nau rtpp_command.c.orig rtpp_command.c
    19 --- rtpp_command.c.orig	2009-03-25 02:53:17.397562078 +0100
    20 +++ rtpp_command.c	2009-03-25 02:52:59.126654989 +0100
    21 @@ -72,6 +72,36 @@
    22  static void handle_query(struct cfg *, int, struct sockaddr_storage *,
    23    socklen_t, char *, struct rtpp_session *, int);
    25 +#if defined(__sun) && defined(__SVR4) && !defined(GE_SOL11)
    26 +static char
    27 +*strsep(char **stringp, const char *delim)
    28 +{
    29 +	char *s;
    30 +	const char *spanp;
    31 +	int c, sc;
    32 +	char *tok;
    33 +
    34 +	if ((s = *stringp) == NULL)
    35 +		return NULL;
    36 +	for (tok = s;;) {
    37 +		c = *s++;
    38 +		spanp = delim;
    39 +		do {
    40 +			if ((sc = *spanp++) == c) {
    41 +				if (c == 0)
    42 +					s = NULL;
    43 +				else
    44 +					s[-1] = 0;
    45 +				*stringp = s;
    46 +				return tok;
    47 +			}
    48 +		} while (sc != 0);
    49 +	}
    50 +	/* NOTREACHED */
    51 +    return NULL;
    52 +}
    53 +
    54 +#endif
    55  static int
    56  create_twinlistener(struct cfg *cf, struct sockaddr *ia, int port, int *fds)
    57  {

mercurial