opensips/opensips.patch

Wed, 21 Sep 2011 14:04:16 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 21 Sep 2011 14:04:16 +0200
changeset 377
67e813202d53
parent 376
8f552d1cd671
child 382
b972dc20871f
permissions
-rw-r--r--

Introduce severe but necessary corrections and update to new vendor version.

     1 Index: main.c
     2 diff -Nau main.c.orig main.c
     3 --- main.c.orig	2009-12-10 14:11:03.590141302 +0100
     4 +++ main.c	2009-12-10 14:11:07.246237908 +0100
     5 @@ -1038,6 +1038,10 @@
     6  	ret=-1;
     7  	my_argc=argc; my_argv=argv;
     9 +	/* if (!log_stderr), that's not usable yet! '/
    10 +	/* ...so unconditionally log to syslog for now */
    11 +	openlog(argv[0], LOG_PID|LOG_CONS, log_facility);
    12 +
    13  	/*init pkg mallocs (before parsing cfg or cmd line !)*/
    14  	if (init_pkg_mallocs()==-1)
    15  		goto error00;
    16 @@ -1370,6 +1374,11 @@
    18  	/* init_daemon? */
    19  	if (!dont_fork){
    20 +		/* shortly after main() we called openlog(3) to log */
    21 +		/* the initialization, but since daemonize() has its */
    22 +		/* own syslog(3) handling, we need to close the log first */
    23 +		closelog(); /* close the initialization logging logic */
    24 +
    25  		if ( daemonize((log_name==0)?argv[0]:log_name, &own_pgid) <0 )
    26  			goto error;
    27  	}
    28 Index: Makefile.defs
    29 diff -Nau Makefile.defs.orig Makefile.defs
    30 --- Makefile.defs.orig	2007-12-13 14:39:06.000000000 +0100
    31 +++ Makefile.defs	2008-01-14 16:48:02.811615000 +0100
    32 @@ -220,7 +220,7 @@
    33  else
    34  	doc-dir = doc/$(MAIN_NAME)/
    35  	man-dir = man/
    36 -	data-dir = $(MAIN_NAME)/
    37 +	data-dir = share/$(MAIN_NAME)/
    38  	LOCALBASE ?= $(SYSBASE)/local
    39  endif
    40  endif
    41 @@ -1432,6 +1432,10 @@
    42  LIBS+= -lsctp
    43  endif
    45 +#conditionally add libfsl
    46 +LDFLAGS += -L$(prefix)/lib
    47 +LIBS    += -lfsl
    48 +
    49  ifneq ($(found_lock_method), yes)
    50  $(warning	No locking method found so far, trying SYS V sems)
    51  		DEFS+= -DUSE_SYSV_SEM  # try sys v sems
    52 Index: scripts/opensipsctl.8
    53 diff -Nau scripts/opensipsctl.8.orig scripts/opensipsctl.8
    54 --- scripts/opensipsctl.8.orig	2009-03-25 00:22:16.771365571 +0100
    55 +++ scripts/opensipsctl.8	2009-03-25 00:22:34.295365555 +0100
    56 @@ -20,8 +20,6 @@
    58  .SH FILES
    59  .PD 0
    60 -.I /etc/opensips/.opensipsctlrc
    61 -.br
    62  .I /usr/local/etc/opensips/.opensipsctlrc
    63  .br
    64  .I ~/.opensipsctlrc
    65 Index: scripts/osipsconsole
    66 diff -Nau scripts/osipsconsole.orig scripts/osipsconsole
    67 --- scripts/osipsconsole.orig	2009-12-08 03:31:32.633224883 +0100
    68 +++ scripts/osipsconsole	2009-12-08 03:31:51.119960848 +0100
    69 @@ -30,7 +30,6 @@
    70  use Term::ReadLine;
    71  use DBI;
    72  use POSIX;
    73 -use Frontier::RPC2;
    74  use IO::Socket;
    75  use Socket;
    76  #use Net::IP;
    77 @@ -378,6 +377,12 @@
    78  			}		
    79  		}
    81 +		if ( $MD5 eq "" ) {
    82 +			if ( $arr[0] =~ /^\s*MD5/ ) {
    83 +			 	$MD5 = $arr[1]; 
    84 +			}		
    85 +		}
    86 +
    87  		if ( $AWK eq "" ) {
    88  			if ( $arr[0] =~ /^\s*AWK/ ) {
    89  			 	$AWK = $arr[1]; 
    90 Index: modules/permissions/parse_config.c
    91 diff -Nau modules/permissions/parse_config.c.orig modules/permissions/parse_config.c
    92 --- modules/permissions/parse_config.c.orig	2008-08-03 15:54:01 +0200
    93 +++ modules/permissions/parse_config.c	2008-08-09 11:58:55 +0200
    94 @@ -114,8 +114,11 @@
    95  	except = strstr(str, " EXCEPT ");
    96  	if (except) {
    97  		/* exception found */
    98 -		strncpy(str2, str, except-str);
    99 -		str2[except-str] = '\0';
   100 +		int l = except - str;
   101 +		if (l > sizeof(str2) - 1)
   102 +			l = sizeof(str2) - 1;
   103 +		strncpy(str2, str, l);
   104 +		str2[l] = '\0';
   105  		/* except+8 points to the exception */
   106  		if (parse_expression_list(except+8, e_exceptions)) {
   107  			/* error */
   108 @@ -124,7 +127,8 @@
   109  		}
   110  	} else {
   111  		/* no exception */
   112 -		strcpy(str2, str);
   113 +		strncpy(str2, str, sizeof(str2)-1);
   114 +		str2[sizeof(str2)-1] = '\0';
   115  		*e_exceptions = NULL;
   116  	}
   118 Index: modules/nathelper/nathelper.c
   119 diff -Nau modules/nathelper/nathelper.c.orig modules/nathelper/nathelper.c
   120 --- modules/nathelper/nathelper.c.orig	2010-12-20 14:33:50.000000000 +0100
   121 +++ modules/nathelper/nathelper.c	2011-01-26 17:48:40.685941382 +0100
   122 @@ -288,6 +288,9 @@
   123  	return 0;
   124  }
   126 +/* MSvB macros */
   127 +#define OPENSIPS_NOOP ((void)0)
   128 +
   132 @@ -805,6 +808,7 @@
   133  #define	FIX_MEDIP	0x02
   134  #define	ADD_ANORTPPROXY	0x04
   135  #define	FIX_ORGIP	0x08
   136 +#define	FIX_RTCPIP	0x10
   138  #define	ADIRECTION	"a=direction:active"
   139  #define	ADIRECTION_LEN	(sizeof(ADIRECTION) - 1)
   140 @@ -821,7 +825,9 @@
   141  {
   142  	char *buf;
   143  	int offset;
   144 +	int binlump;
   145  	struct lump* anchor;
   146 +	struct lump* templump;
   147  	str omip, nip, oip;
   149  	/* check that updating mediaip is really necessary */
   150 @@ -852,7 +858,19 @@
   151  		memcpy(buf, CRLF, CRLF_LEN);
   152  		memcpy(buf + CRLF_LEN, omip.s, omip.len);
   153  		memcpy(buf + CRLF_LEN + omip.len, oldip->s, oldip->len);
   154 -		if (insert_new_lump_after(anchor, buf,
   155 +
   156 +		/* if the oldmediaip string is already */
   157 +		/* in the body then don't add it again */
   158 +		binlump = 0;
   159 +		for (templump = msg->body_lumps; templump; templump = templump->next)
   160 +			if (templump->op == LUMP_ADD && strstr(templump->u.value, buf))
   161 +				binlump = 1;
   162 +		for (templump = msg->add_rm; templump; templump = templump->next)
   163 +			if (templump->op == LUMP_ADD && strstr(templump->u.value, buf))
   164 +				binlump = 1;
   165 +		if (strstr(body->s, buf) || binlump)
   166 +			pkg_free(buf);
   167 +		else if (insert_new_lump_after(anchor, buf,
   168  		    omip.len + oldip->len + CRLF_LEN, 0) == NULL) {
   169  			LM_ERR("insert_new_lump_after failed\n");
   170  			pkg_free(buf);
   171 @@ -1038,6 +1056,12 @@
   172  		p= p->next;
   173  	}
   175 +	if (level & FIX_RTCPIP) {
   176 +		/* Iterate all a=rtcp: and replace ips in them. */
   177 +		if (replace_sdp_ip(msg, &body, "a=rtcp:", str2?&ip:0)==-1)
   178 +			return -1;
   179 +	}
   180 +
   181  	return 1;
   182  }
   184 Index: parser/sdp/sdp_helpr_funcs.c
   185 diff -Nau parser/sdp/sdp_helpr_funcs.c.orig parser/sdp/sdp_helpr_funcs.c
   186 --- parser/sdp/sdp_helpr_funcs.c.orig	2010-12-08 15:14:06.000000000 +0100
   187 +++ parser/sdp/sdp_helpr_funcs.c	2011-01-27 00:39:50.128212053 +0100
   188 @@ -392,7 +392,7 @@
   190  	cp1 = NULL;
   191  	for (cp = body->s; (len = body->s + body->len - cp) > 0;) {
   192 -		cp1 = (char*)ser_memmem(cp, line, len, 2);
   193 +		cp1 = (char*)ser_memmem(cp, line, len, strlen(line));
   194  		if (cp1 == NULL || cp1[-1] == '\n' || cp1[-1] == '\r')
   195  			break;
   196  		cp = cp1 + 2;

mercurial