asterisk/asterisk.patch

Tue, 22 Mar 2011 21:30:06 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 22 Mar 2011 21:30:06 +0100
changeset 316
153998c81c45
parent 315
75d162df42e8
child 347
10bd406e1c51
permissions
-rw-r--r--

Use less desirable PATH_MAX due to portability concerns of NAME_MAX.

     1 Index: addons/chan_ooh323.c
     2 diff -Nau addons/chan_ooh323.c.orig addons/chan_ooh323.c
     3 --- addons/chan_ooh323.c.orig	2010-10-09 16:02:26.000000000 +0200
     4 +++ addons/chan_ooh323.c	2011-03-13 14:03:42.000000000 +0100
     5 @@ -23,6 +23,12 @@
     7  #include "chan_ooh323.h"
     8  #include <math.h>
     9 +#if defined __SVR4 && defined __sun
    10 +#include <sys/sockio.h>
    11 +#ifndef IPTOS_MINCOST
    12 +#define IPTOS_MINCOST 0x02
    13 +#endif
    14 +#endif
    16  #define FORMAT_STRING_SIZE	512
    18 Index: addons/ooh323c/src/ooCmdChannel.c
    19 diff -Nau addons/ooh323c/src/ooCmdChannel.c.orig addons/ooh323c/src/ooCmdChannel.c
    20 --- addons/ooh323c/src/ooCmdChannel.c.orig	2010-03-26 00:38:58.000000000 +0100
    21 +++ addons/ooh323c/src/ooCmdChannel.c	2011-03-13 14:03:42.000000000 +0100
    22 @@ -25,6 +25,10 @@
    23  #include "ooCalls.h"
    24  #include "ooCmdChannel.h"
    26 +#ifndef AF_LOCAL
    27 +#define AF_LOCAL AF_UNIX
    28 +#define PF_LOCAL PF_UNIX
    29 +#endif
    31  /** Global endpoint structure */
    32  extern OOH323EndPoint gH323ep;
    33 Index: addons/ooh323c/src/ooSocket.c
    34 diff -Nau addons/ooh323c/src/ooSocket.c.orig addons/ooh323c/src/ooSocket.c
    35 --- addons/ooh323c/src/ooSocket.c.orig	2010-03-25 22:39:04.000000000 +0100
    36 +++ addons/ooh323c/src/ooSocket.c	2011-03-13 14:03:42.000000000 +0100
    37 @@ -24,6 +24,9 @@
    39  #include "ooSocket.h"
    40  #include "ootrace.h"
    41 +#if defined __SVR4 && defined __sun
    42 +#include <sys/sockio.h>
    43 +#endif
    44  #if defined(_WIN32_WCE)
    45  static int inited = 0;
    46  #define SEND_FLAGS     0
    47 Index: addons/ooh323cDriver.c
    48 diff -Nau addons/ooh323cDriver.c.orig addons/ooh323cDriver.c
    49 --- addons/ooh323cDriver.c.orig	2010-03-26 00:38:58.000000000 +0100
    50 +++ addons/ooh323cDriver.c	2011-03-13 14:03:42.000000000 +0100
    51 @@ -27,6 +27,11 @@
    53  #define SEC_TO_HOLD_THREAD 24
    55 +#ifndef AF_LOCAL
    56 +#define AF_LOCAL AF_UNIX
    57 +#define PF_LOCAL PF_UNIX
    58 +#endif
    59 +
    60  extern struct ast_module *myself;
    61  extern OOBOOL gH323Debug;
    62  extern OOH323EndPoint gH323ep;
    63 Index: apps/app_backticks.c
    64 diff -Nau apps/app_backticks.c.orig apps/app_backticks.c
    65 --- apps/app_backticks.c.orig	1970-01-01 01:00:00.000000000 +0100
    66 +++ apps/app_backticks.c	2011-03-13 14:03:42.000000000 +0100
    67 @@ -0,0 +1,129 @@
    68 +
    69 +#include "asterisk.h"
    70 +
    71 +ASTERISK_FILE_VERSION(__FILE__, "$Revision: 1.52 $")
    72 +
    73 +#include <stdio.h> 
    74 +#include <asterisk/file.h>
    75 +#include <asterisk/logger.h>
    76 +#include <asterisk/channel.h>
    77 +#include <asterisk/pbx.h>
    78 +#include <asterisk/module.h>
    79 +#include <asterisk/lock.h>
    80 +#include <asterisk/app.h>
    81 +#include <stdlib.h>
    82 +#include <unistd.h>
    83 +#include <string.h>
    84 +
    85 +static char *app      = "BackTicks";
    86 +static char *synopsis = "Execute a shell command and save the result as a variable.";
    87 +static char *desc     = "  Backticks(<VARNAME>|<command>)\n\n"
    88 +                        "Be sure to include a full path to the command!\n";
    89 +
    90 +static char *do_backticks(char *command, char *buf, size_t len) 
    91 +{
    92 +    int fds[2], pid = 0;
    93 +    char *ret = NULL;
    94 +
    95 +    memset(buf, 0, len);
    96 +    if (pipe(fds)) {    
    97 +        ast_log(LOG_WARNING, "Pipe/Exec failed\n");
    98 +    } else {
    99 +        pid = fork();
   100 +        if (pid < 0) {
   101 +            ast_log(LOG_WARNING, "Fork failed\n");
   102 +            close(fds[0]);
   103 +            close(fds[1]);
   104 +        } else if (pid) {
   105 +            /* parent */
   106 +            close(fds[1]);
   107 +            read(fds[0], buf, len);
   108 +            close(fds[0]);
   109 +            ret = buf;
   110 +        } else {
   111 +            /* child */
   112 +            char *argv[255] = {0};
   113 +            int argc = 0;
   114 +            char *p;
   115 +            char *mycmd = ast_strdupa(command);
   116 +            close(fds[0]);
   117 +            dup2(fds[1], STDOUT_FILENO);
   118 +            argv[argc++] = mycmd;
   119 +            do {
   120 +                if ((p = strchr(mycmd, ' '))) {
   121 +                    *p = '\0';
   122 +                    mycmd = ++p;
   123 +                    argv[argc++] = mycmd;
   124 +                }
   125 +            } while (p != NULL);
   126 +            close(fds[1]);          
   127 +            execv(argv[0], argv); 
   128 +            ast_log(LOG_ERROR, "exec of %s failed\n", argv[0]);
   129 +            exit(0);
   130 +        }
   131 +    }
   132 +    return ret;
   133 +}
   134 +
   135 +static int backticks_exec(struct ast_channel *chan, void *data)
   136 +{
   137 +    int res = 0;
   138 +    const char *usage = "Usage: Backticks(<VARNAME>|<command>)";
   139 +    char buf[1024], *argv[2], *mydata;
   140 +    int argc = 0;
   141 +    
   142 +    if (!data) {
   143 +        ast_log(LOG_WARNING, "%s\n", usage);
   144 +        return -1;
   145 +    }
   146 +    ast_autoservice_start(chan);
   147 +    if (!(mydata = ast_strdupa(data))) {
   148 +        ast_log(LOG_ERROR, "Memory Error!\n");
   149 +        res = -1;
   150 +    } else {
   151 +        if((argc = ast_app_separate_args(mydata, '|', argv, sizeof(argv) / sizeof(argv[0]))) < 2) {
   152 +            ast_log(LOG_WARNING, "%s\n", usage);
   153 +            res = -1;
   154 +        }
   155 +        if (do_backticks(argv[1], buf, sizeof(buf)))
   156 +            pbx_builtin_setvar_helper(chan, argv[0], buf);
   157 +        else {
   158 +            ast_log(LOG_WARNING, "No Data!\n");
   159 +            res = -1;
   160 +        }
   161 +    }
   162 +    ast_autoservice_stop(chan);
   163 +    return res;
   164 +}
   165 +
   166 +static int function_backticks(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
   167 +{
   168 +    if (!do_backticks(data, buf, len)) {
   169 +        ast_log(LOG_WARNING, "No Data!\n");
   170 +        return -1;
   171 +    }
   172 +    return 0;
   173 +}
   174 +
   175 +static struct ast_custom_function backticks_function = {
   176 +    .name     = "BACKTICKS", 
   177 +    .desc     = "Executes a shell command and evaluates to the result.", 
   178 +    .syntax   = "BACKTICKS(<command>)", 
   179 +    .synopsis = "Executes a shell command.", 
   180 +    .read     = function_backticks
   181 +};
   182 +
   183 +static int unload_module(void)
   184 +{
   185 +    ast_custom_function_unregister(&backticks_function);
   186 +    return ast_unregister_application(app);
   187 +}
   188 +
   189 +static int load_module(void)
   190 +{
   191 +    ast_custom_function_register(&backticks_function);
   192 +    return ast_register_application(app, backticks_exec, synopsis, desc);
   193 +}
   194 +
   195 +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "BACKTICKS() dialplan function");
   196 +
   197 Index: apps/app_meetme.c
   198 diff -Nau apps/app_meetme.c.orig apps/app_meetme.c
   199 --- apps/app_meetme.c.orig	2011-01-07 21:53:02.000000000 +0100
   200 +++ apps/app_meetme.c	2011-03-13 14:03:42.000000000 +0100
   201 @@ -604,6 +604,7 @@
   202  	CONFFLAG_DURATION_LIMIT = (1 << 30),
   203  	/*! Do not write any audio to this channel until the state is up. */
   204  	CONFFLAG_NO_AUDIO_UNTIL_UP = (1 << 31),
   205 +	CONFFLAG_USERNAME = (1 << 32),
   206  };
   208  /* !If set play an intro announcement at start of conference */
   209 @@ -617,6 +618,7 @@
   210  	OPT_ARG_MOH_CLASS = 4,
   211  	OPT_ARG_INTROMSG = 5,
   212  	OPT_ARG_ARRAY_SIZE = 6,
   213 +	OPT_ARG_USERNAME = 7,
   214  };
   216  AST_APP_OPTIONS(meetme_opts, BEGIN_OPTIONS
   217 @@ -650,6 +652,7 @@
   218  	AST_APP_OPTION('1', CONFFLAG_NOONLYPERSON ),
   219   	AST_APP_OPTION_ARG('S', CONFFLAG_DURATION_STOP, OPT_ARG_DURATION_STOP),
   220  	AST_APP_OPTION_ARG('L', CONFFLAG_DURATION_LIMIT, OPT_ARG_DURATION_LIMIT),
   221 +	AST_APP_OPTION_ARG('n', CONFFLAG_USERNAME, OPT_ARG_USERNAME),
   222  END_OPTIONS );
   224  static const char * const app = "MeetMe";
   225 @@ -2429,6 +2432,12 @@
   226  		ast_test_flag64(confflags, CONFFLAG_INTROUSERNOREVIEW))) {
   227  		char destdir[PATH_MAX];
   229 + 	    if (!ast_test_flag64(confflags, CONFFLAG_USERNAME)
   230 + 		&& !ast_strlen_zero(optargs[OPT_ARG_USERNAME]) 
   231 + 		&& ast_fileexists(optargs[OPT_ARG_USERNAME], NULL, NULL))
   232 + 		snprintf(destdir, sizeof(destdir), "%s", optargs[OPT_ARG_USERNAME]);
   233 + 	    else {
   234 +
   235  		snprintf(destdir, sizeof(destdir), "%s/meetme", ast_config_AST_SPOOL_DIR);
   237  		if (ast_mkdir(destdir, 0777) != 0) {
   238 @@ -2445,6 +2454,7 @@
   239  			res = ast_record_review(chan, "vm-rec-name", user->namerecloc, 10, "sln", &duration, NULL);
   240  		if (res == -1)
   241  			goto outrun;
   242 +	    }
   243  	}
   245  	ast_mutex_lock(&conf->playlock);
   246 Index: apps/app_voicemail.c
   247 diff -Nau apps/app_voicemail.c.orig apps/app_voicemail.c
   248 --- apps/app_voicemail.c.orig	2011-01-07 20:58:30.000000000 +0100
   249 +++ apps/app_voicemail.c	2011-03-13 14:03:42.000000000 +0100
   250 @@ -366,6 +366,7 @@
   251  static char imapport[8];
   252  static char imapflags[128];
   253  static char imapfolder[64];
   254 +static int  imapsubfold = 0;
   255  static char imapparentfolder[64] = "\0";
   256  static char greetingfolder[64];
   257  static char authuser[32];
   258 @@ -2464,7 +2465,7 @@
   259  	}
   261  	/* Build up server information */
   262 -	ast_build_string(&t, &left, "{%s:%s/imap", imapserver, imapport);
   263 +	ast_build_string(&t, &left, "{%s:%s", imapserver, imapport);
   265  	/* Add authentication user if present */
   266  	if (!ast_strlen_zero(authuser))
   267 @@ -6035,6 +6036,7 @@
   268  	/* simple. huh? */
   269  	char sequence[10];
   270  	char mailbox[256];
   271 +	char folder[256];
   272  	int res;
   274  	/* get the real IMAP message number for this message */
   275 @@ -6050,10 +6052,24 @@
   276  		mail_setflag(vms->mailstream, sequence, "\\Unseen");
   277  		mail_clearflag(vms->mailstream, sequence, "\\Seen");
   278  	}
   279 -	if (!strcasecmp(mbox(vmu, NEW_FOLDER), vms->curbox) && (box == NEW_FOLDER || box == OLD_FOLDER)) {
   280 -		ast_mutex_unlock(&vms->lock);
   281 +
   282 +	if ((!strcasecmp(mbox(vmu, NEW_FOLDER), vms->curbox) || \
   283 +		!strcasecmp(mbox(vmu, OLD_FOLDER), vms->curbox)) && \
   284 +		(box == NEW_FOLDER || box == OLD_FOLDER)) {  /* Don't copy data, */
   285 +		ast_mutex_unlock(&vms->lock);                /* just change Seen flag */
   286  		return 0;
   287 +	} else if (box != NEW_FOLDER && box != OLD_FOLDER) { /* Do copy data */
   288 +		if (imapsubfold == 1)                /* using INBOX or subfolder */
   289 +			snprintf(folder, sizeof(folder), "%s%c%s", imapfolder, delimiter, mbox(vmu, box));
   290 +		else
   291 +			strncpy(folder, mbox(vmu, box), sizeof(folder));
   292 +		int res = !mail_copy(vms->mailstream,sequence,folder);
   293 +		ast_mutex_unlock(&vms->lock);
   294 +		return res;
   295 +	} else {  /* Copy data to INBOX delegating new/old status to Seen flag */
   296 +		int res = !mail_copy(vms->mailstream,sequence,imapfolder);
   297  	}
   298 +
   299  	/* Create the folder if it don't exist */
   300  	imap_mailbox_name(mailbox, sizeof(mailbox), vms, box, 1); /* Get the full mailbox name */
   301  	ast_debug(5, "Checking if folder exists: %s\n", mailbox);
   302 @@ -10221,6 +10237,10 @@
   303  #ifndef IMAP_STORAGE
   304  				} else if (!cmd) {
   305  					vms.deleted[vms.curmsg] = 1;
   306 +#else
   307 +				} else if (!cmd && (folder_int(vms.curbox) > 1  || box > 1)) {
   308 +					vms.deleted[vms.curmsg] = 1;  /* Enforce deletion after */
   309 +					deleted = 1;                  /* successful copy op */
   310  #endif
   311  				} else {
   312  					vms.deleted[vms.curmsg] = 0;
   313 @@ -11688,6 +11708,15 @@
   314  		} else {
   315  			ast_copy_string(imapfolder, "INBOX", sizeof(imapfolder));
   316  		}
   317 +		/* IMAP saved (sub)folder location policy */
   318 +		if ((val = ast_variable_retrieve(cfg, "general", "imapsubfold"))) {
   319 +			if (ast_false(val))
   320 +				imapsubfold = 0;
   321 +			else
   322 +				imapsubfold = 1;
   323 +		} else {
   324 +			imapsubfold = 0;
   325 +		}
   326  		if ((val = ast_variable_retrieve(cfg, "general", "imapparentfolder"))) {
   327  			ast_copy_string(imapparentfolder, val, sizeof(imapparentfolder));
   328  		}
   329 Index: apps/.moduleinfo
   330 diff -Nau apps/.moduleinfo.orig apps/.moduleinfo
   331 --- apps/.moduleinfo.orig	2011-02-22 23:50:32.000000000 +0100
   332 +++ apps/.moduleinfo	2011-03-13 14:03:42.000000000 +0100
   333 @@ -72,7 +72,7 @@
   334  <member name="app_image" displayname="Image Transmission Application" remove_on_change="apps/app_image.o apps/app_image.so">
   335  </member>
   336  <member name="app_ivrdemo" displayname="IVR Demo Application" remove_on_change="apps/app_ivrdemo.o apps/app_ivrdemo.so">
   337 -	<defaultenabled>no</defaultenabled>
   338 +	<defaultenabled>yes</defaultenabled>
   339  </member>
   340  <member name="app_jack" displayname="JACK Interface" remove_on_change="apps/app_jack.o apps/app_jack.so">
   341  	<depend>jack</depend>
   342 @@ -127,10 +127,10 @@
   343  <member name="app_rpt" displayname="Radio Repeater/Remote Base Application" remove_on_change="apps/app_rpt.o apps/app_rpt.so">
   344  	<depend>dahdi</depend>
   345  	<depend>tonezone</depend>
   346 -	<defaultenabled>no</defaultenabled>
   347 +	<defaultenabled>yes</defaultenabled>
   348  </member>
   349  <member name="app_saycounted" displayname="Decline words according to channel language" remove_on_change="apps/app_saycounted.o apps/app_saycounted.so">
   350 -	<defaultenabled>no</defaultenabled>
   351 +	<defaultenabled>yes</defaultenabled>
   352  </member>
   353  <member name="app_sayunixtime" displayname="Say time" remove_on_change="apps/app_sayunixtime.o apps/app_sayunixtime.so">
   354  </member>
   355 Index: build_tools/cflags.xml
   356 diff -Nau build_tools/cflags.xml.orig build_tools/cflags.xml
   357 --- build_tools/cflags.xml.orig	2010-02-16 16:36:53.000000000 +0100
   358 +++ build_tools/cflags.xml	2011-03-13 14:03:42.000000000 +0100
   359 @@ -26,10 +26,11 @@
   360  		<member name="RADIO_RELAX" displayname="Relax DTMF for Radio Applications">
   361  		</member>
   362  		<member name="G711_NEW_ALGORITHM" displayname="Use the NEW ulaw/alaw codecs (slower, but cleaner)">
   363 -			<defaultenabled>no</defaultenabled>
   364 +			<defaultenabled>yes</defaultenabled>
   365  		</member>
   366  		<member name="G711_REDUCED_BRANCHING" displayname="New ulaw/alaw codec, reduced branching (might help it run faster in some architectures)">
   367  			<depend>G711_NEW_ALGORITHM</depend>
   368 +			<defaultenabled>yes</defaultenabled>
   369  		</member>
   370  		<member name="TEST_CODING_TABLES" displayname="New ulaw/alaw codec, turn on table tests on init">
   371  			<depend>G711_NEW_ALGORITHM</depend>
   372 Index: chan_capi-1.1.5.919/chan_capi20.h
   373 diff -Nau chan_capi-1.1.5.919/chan_capi20.h.orig chan_capi-1.1.5.919/chan_capi20.h
   374 --- chan_capi-1.1.5.919/chan_capi20.h.orig	2011-01-07 02:29:32.000000000 +0100
   375 +++ chan_capi-1.1.5.919/chan_capi20.h	2011-03-13 14:03:42.000000000 +0100
   376 @@ -4,10 +4,13 @@
   377   * first. Else the checks below will fail.
   378   */
   380 +#include <stddef.h>
   381  #include <capi20.h>
   383  #undef CAPI_OS_HINT
   385 +#ifndef USE_OWN_LIBCAPI
   386 +
   387  #if (defined(__FreeBSD__) || defined(__OpenBSD__) || \
   388       defined(__NetBSD__)  || defined(__APPLE__))
   390 @@ -29,6 +32,8 @@
   391  #include <capiutils.h>
   392  #endif /* BSD */
   394 +#endif
   395 +
   396  #ifndef HEADER_CID
   397  #define HEADER_CID(x) ((x)->adr.adrNCCI)
   398  #endif
   399 Index: chan_capi-1.1.5.919/chan_capi_utils.c
   400 diff -Nau chan_capi-1.1.5.919/chan_capi_utils.c.orig chan_capi-1.1.5.919/chan_capi_utils.c
   401 --- chan_capi-1.1.5.919/chan_capi_utils.c.orig	2011-01-07 02:29:32.000000000 +0100
   402 +++ chan_capi-1.1.5.919/chan_capi_utils.c	2011-03-13 14:03:42.000000000 +0100
   403 @@ -1155,6 +1155,9 @@
   404  {
   405  	MESSAGE_EXCHANGE_ERROR error;
   406  	int waitcount = 50;
   407 +#ifndef CAPI_MANUFACTURER_LEN
   408 +#define CAPI_MANUFACTURER_LEN 64
   409 +#endif
   410  	unsigned char manbuf[CAPI_MANUFACTURER_LEN];
   411  	_cmsg CMSG;
   413 Index: chan_capi-1.1.5.919/libcapi20/capi20.c
   414 diff -Nau chan_capi-1.1.5.919/libcapi20/capi20.c.orig chan_capi-1.1.5.919/libcapi20/capi20.c
   415 --- chan_capi-1.1.5.919/libcapi20/capi20.c.orig	2011-01-07 02:29:31.000000000 +0100
   416 +++ chan_capi-1.1.5.919/libcapi20/capi20.c	2011-03-13 14:03:42.000000000 +0100
   417 @@ -19,8 +19,10 @@
   418  #include <stdio.h>
   419  #include <ctype.h>
   420  #include <assert.h>
   421 +#ifdef __linux__
   422  #define _LINUX_LIST_H
   423  #include <linux/capi.h>
   424 +#endif
   426  #include <sys/socket.h>
   427  #include <netinet/in.h>
   428 @@ -48,17 +50,23 @@
   430  #define SEND_BUFSIZ		(128+2048)
   432 +#if 0
   433  static char capidevname[] = "/dev/capi20";
   434  static char capidevnamenew[] = "/dev/isdn/capi20";
   435 +#endif
   437  static int                  capi_fd = -1;
   438 +#if 0
   439  static capi_ioctl_struct    ioctl_data;
   440 +#endif
   442  static int remote_capi;
   443 +#if 0
   444  static char *globalconfigfilename = "/etc/capi20.conf";
   445  static char *userconfigfilename = ".capi20rc";
   446  static unsigned short int port;
   447  static char hostname[1024];
   448 +#endif
   449  static int tracelevel;
   450  static char *tracefile;
   452 @@ -77,17 +85,21 @@
   453  #define RCAPI_AUTH_USER_REQ                     CAPICMD(0xff, 0x00)
   454  #define RCAPI_AUTH_USER_CONF                    CAPICMD(0xff, 0x01)
   456 +#if 0
   457  static char *skip_whitespace(char *s)
   458  {
   459  	while (*s && isspace(*s)) s++;
   460  		return s;
   461  }
   462 +#endif
   464 +#if 0
   465  static char *skip_nonwhitespace(char *s)
   466  {
   467  	while (*s && !isspace(*s)) s++;
   468  		return s;
   469  } 
   470 +#endif
   472  static unsigned char get_byte(unsigned char **p)
   473  {
   474 @@ -95,10 +107,12 @@
   475  	return((unsigned char)*(*p - 1));
   476  }
   478 +#if 0
   479  static unsigned short get_word(unsigned char **p)
   480  {
   481  	return(get_byte(p) | (get_byte(p) << 8));
   482  }
   483 +#endif
   485  static unsigned short get_netword(unsigned char **p)
   486  {
   487 @@ -144,6 +158,7 @@
   488   * read config file
   489   */
   491 +#if 0
   492  static int read_config(void)
   493  {
   494  	FILE *fp = NULL;
   495 @@ -197,11 +212,13 @@
   496  	fclose(fp);
   497  	return(1);
   498  }
   499 +#endif
   501  /*
   502   *	socket function
   503   */
   505 +#if 0
   506  static int open_socket(void)
   507  {
   508  	int fd;
   509 @@ -225,6 +242,7 @@
   510  	close(fd);
   511  	return(-1);
   512  }
   513 +#endif
   515  static int socket_read(int fd, unsigned char *buf, int l)
   516  {
   517 @@ -328,6 +346,8 @@
   518  	if (likely(capi_fd >= 0))
   519  		return CapiNoError;
   521 +#if 0
   522 +
   523  	/*----- open managment link -----*/
   524  	if (read_config() && (remote_capi)) {
   525  		capi_fd = open_socket();
   526 @@ -347,6 +367,8 @@
   527  	if (ioctl(capi_fd, CAPI_INSTALLED, 0) == 0)
   528  		return CapiNoError;
   530 +#endif
   531 +
   532  	return CapiRegNotInstalled;
   533  }
   535 @@ -421,6 +443,7 @@
   536  	unsigned char *bufferstart;
   537  };
   539 +#if 0
   540  static struct applinfo *alloc_buffers(
   541  	unsigned MaxB3Connection,
   542  	unsigned MaxB3Blks,
   543 @@ -459,6 +482,7 @@
   544  	ap->lastfree->next = 0;
   545  	return ap;
   546  }
   547 +#endif
   549  static void free_buffers(struct applinfo *ap)
   550  {
   551 @@ -576,14 +600,17 @@
   552  	unsigned MaxSizeB3,
   553  	unsigned *ApplID)
   554  {
   555 +#if 0
   556  	int applid = 0;
   557  	char buf[PATH_MAX];
   558  	int i, fd = -1;
   560      *ApplID = 0;
   561 +#endif
   563      if (capi20_isinstalled() != CapiNoError)
   564         return CapiRegNotInstalled;
   565 +#if 0
   566  	if ((!remote_capi) || ((remote_capi) && ((fd = open_socket()) < 0))) {
   567  	    if ((fd = open(capidevname, O_RDWR|O_NONBLOCK, 0666)) < 0 && 
   568  		     (errno == ENOENT)) {
   569 @@ -621,6 +648,8 @@
   570  			close(fd);
   571  			return(errcode);
   572  		}
   573 +    }
   574 +#if 0
   575  	} else if ((applid = ioctl(fd, CAPI_REGISTER, &ioctl_data)) < 0) {
   576  		if (errno == EIO) {
   577  			if (ioctl(fd, CAPI_GET_ERRCODE, &ioctl_data) < 0) {
   578 @@ -666,6 +695,7 @@
   579  		    applid = alloc_applid(fd);
   580  		} // end old driver compatibility
   581  	}
   582 +#endif
   583  	if (remember_applid(applid, fd) < 0) {
   584  		close(fd);
   585  		return CapiRegOSResourceErr;
   586 @@ -676,6 +706,7 @@
   587  		return CapiRegOSResourceErr;
   588  	}
   589  	*ApplID = applid;
   590 +#endif
   591  	return CapiNoError;
   592  }
   594 @@ -784,11 +815,15 @@
   595  	                ret = CapiIllAppNr;
   596  	                break;
   597  	            case EIO:
   598 +#if 0
   599  	                if (ioctl(fd, CAPI_GET_ERRCODE, &ioctl_data) < 0) {
   600 +#endif
   601  	                    ret = CapiMsgOSResourceErr;
   602 +#if 0
   603  	                } else {
   604  						ret = (unsigned)ioctl_data.errcode;
   605  					}
   606 +#endif
   607  	                break;
   608  	          default:
   609  	                ret = CapiMsgOSResourceErr;
   610 @@ -842,7 +877,7 @@
   611  				rcvbuf[15] = (data >> 24) & 0xff;
   612  			} else {
   613  				u_int64_t data;
   614 -				ulong radr = (ulong)rcvbuf;
   615 +				unsigned long radr = (unsigned long)rcvbuf;
   616  				if (CAPIMSG_LEN(rcvbuf) < 30) {
   617  					/*
   618  					 * grr, 64bit arch, but no data64 included,
   619 @@ -899,6 +934,9 @@
   620  {
   621  	if (capi20_isinstalled() != CapiNoError)
   622  		return 0;
   623 +#ifndef CAPI_MANUFACTURER_LEN
   624 +#define CAPI_MANUFACTURER_LEN 64
   625 +#endif
   627  	if (remote_capi) {
   628  		unsigned char buf[100];
   629 @@ -911,15 +949,19 @@
   630  		return Buf;
   631  	}
   633 +#if 0
   634      ioctl_data.contr = Ctrl;
   636  	if (ioctl(capi_fd, CAPI_GET_MANUFACTURER, &ioctl_data) < 0)
   637 +#endif
   638  		return 0;
   640 +#if 0
   641  	memcpy(Buf, ioctl_data.manufacturer, CAPI_MANUFACTURER_LEN);
   642  	Buf[CAPI_MANUFACTURER_LEN-1] = 0;
   644  	return Buf;
   645 +#endif
   646  }
   648  unsigned char *
   649 @@ -934,16 +976,20 @@
   650  		set_rcapicmd_header(&p, 14, RCAPI_GET_VERSION_REQ, Ctrl);
   651  		if(!(remote_command(capi_fd, buf, 14, RCAPI_GET_VERSION_CONF)))
   652  			return 0;
   653 -		memcpy(Buf, buf + 1, sizeof(capi_version));
   654 +		memcpy(Buf, buf + 1, 128 /* sizeof(capi_version) */);
   655  		return Buf;
   656  	}
   658 +#if 0
   659  	ioctl_data.contr = Ctrl;
   660  	if (ioctl(capi_fd, CAPI_GET_VERSION, &ioctl_data) < 0) {
   661 +#endif
   662  		return 0;
   663 +#if 0
   664  	}
   665  	memcpy(Buf, &ioctl_data.version, sizeof(capi_version));
   666  	return Buf;
   667 +#endif
   668  }
   670  unsigned char * 
   671 @@ -952,6 +998,10 @@
   672  	if (capi20_isinstalled() != CapiNoError)
   673  		return 0;
   675 +#ifndef CAPI_SERIAL_LEN
   676 +#define CAPI_SERIAL_LEN 8
   677 +#endif
   678 +
   679  	if (remote_capi) {
   680  		unsigned char buf[100];
   681  		unsigned char *p = buf;
   682 @@ -963,15 +1013,19 @@
   683  		return Buf;
   684  	}
   686 +#if 0
   687  	ioctl_data.contr = Ctrl;
   689  	if (ioctl(capi_fd, CAPI_GET_SERIAL, &ioctl_data) < 0)
   690 +#endif
   691  		return 0;
   693 +#if 0
   694  	memcpy(Buf, &ioctl_data.serial, CAPI_SERIAL_LEN);
   695  	Buf[CAPI_SERIAL_LEN-1] = 0;
   697  	return Buf;
   698 +#endif
   699  }
   701  unsigned
   702 @@ -1018,6 +1072,7 @@
   703  			sizeof(ioctl_data.profile.ncontroller));
   704  	}
   705  	return CapiNoError;
   706 +#endif
   707  }
   708  /*
   709   * functions added to the CAPI2.0 spec
   710 Index: chan_capi-1.1.5.919/libcapi20/convert.c
   711 diff -Nau chan_capi-1.1.5.919/libcapi20/convert.c.orig chan_capi-1.1.5.919/libcapi20/convert.c
   712 --- chan_capi-1.1.5.919/libcapi20/convert.c.orig	2011-01-07 02:29:31.000000000 +0100
   713 +++ chan_capi-1.1.5.919/libcapi20/convert.c	2011-03-13 14:03:42.000000000 +0100
   714 @@ -11,7 +11,14 @@
   715  #include <stddef.h>
   716  #include <time.h>
   717  #include <ctype.h>
   718 +#ifdef __FreeBSD__
   719 +#include <sys/endian.h>
   720 +#define bswap_16 bswap16
   721 +#define bswap_32 bswap32
   722 +#define bswap_64 bswap64
   723 +#else
   724  #include <byteswap.h>
   725 +#endif
   727  #include "capi20.h"
   729 Index: chan_capi-1.1.5.919/Makefile
   730 diff -Nau chan_capi-1.1.5.919/Makefile.orig chan_capi-1.1.5.919/Makefile
   731 --- chan_capi-1.1.5.919/Makefile.orig	2011-01-07 02:29:32.000000000 +0100
   732 +++ chan_capi-1.1.5.919/Makefile	2011-03-13 14:03:42.000000000 +0100
   733 @@ -111,6 +111,9 @@
   734  CFLAGS+=-O2
   735  CFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
   736  CFLAGS+=$(shell if uname -m | grep -q "ppc\|arm\|s390"; then echo "-fsigned-char"; fi)
   737 +ifeq (${USE_OWN_LIBCAPI},yes)
   738 +CFLAGS+=-DUSE_OWN_LIBCAPI
   739 +endif
   740  ifeq (${DIVA_STREAMING},1)
   741  CFLAGS += -DDIVA_STREAMING=1
   742  endif
   743 Index: channels/chan_sip.c
   744 diff -Nau channels/chan_sip.c.orig channels/chan_sip.c
   745 --- channels/chan_sip.c.orig	2011-01-14 18:32:52.000000000 +0100
   746 +++ channels/chan_sip.c	2011-03-13 14:03:42.000000000 +0100
   747 @@ -11210,7 +11210,16 @@
   748   	} else {
   749   		if (sipmethod == SIP_NOTIFY && !ast_strlen_zero(p->theirtag)) {
   750   			/* If this is a NOTIFY, use the From: tag in the subscribe (RFC 3265) */
   751 -			snprintf(to, sizeof(to), "<%s%s>;tag=%s", (strncasecmp(p->uri, "sip:", 4) ? "sip:" : ""), p->uri, p->theirtag);
   752 +			if (strncasecmp(p->uri, "sip:", strlen("sip:")))
   753 +				if (strncasecmp(p->uri, "sips:", strlen("sips:")))
   754 +					if (p->socket.type == SIP_TRANSPORT_TLS)
   755 +						snprintf(to, sizeof(to), "<%s%s>;tag=%s", "sips:", p->uri, p->theirtag);
   756 +					else
   757 +						snprintf(to, sizeof(to), "<%s%s>;tag=%s", "sips:", p->uri, p->theirtag);
   758 +				else /* if (strncasecmp(p->uri, "sips:"... */
   759 +					snprintf(to, sizeof(to), "<%s%s>;tag=%s", "", p->uri, p->theirtag);
   760 +			else /* if (strncasecmp(p->uri, "sip:"... */
   761 +				snprintf(to, sizeof(to), "<%s%s>;tag=%s", "", p->uri, p->theirtag);
   762   		} else if (p->options && p->options->vxml_url) {
   763   			/* If there is a VXML URL append it to the SIP URL */
   764   			snprintf(to, sizeof(to), "<%s>;%s", p->uri, p->options->vxml_url);
   765 Index: channels/console_video.h
   766 diff -Nau channels/console_video.h.orig channels/console_video.h
   767 --- channels/console_video.h.orig	2008-06-30 17:45:15.000000000 +0200
   768 +++ channels/console_video.h	2011-03-13 14:03:42.000000000 +0100
   769 @@ -28,10 +28,7 @@
   770  		"console {device}"
   771  #else
   773 -#include <ffmpeg/avcodec.h>
   774 -#ifndef OLD_FFMPEG
   775 -#include <ffmpeg/swscale.h>     /* requires a recent ffmpeg */
   776 -#endif
   777 +#include <libavcoded/avcodec.h>
   779  #define CONSOLE_VIDEO_CMDS			\
   780  	"console {videodevice|videocodec"	\
   781 Index: configure
   782 diff -Nau configure.orig configure
   783 --- configure.orig	2011-01-09 22:40:34.000000000 +0100
   784 +++ configure	2011-03-13 14:14:50.000000000 +0100
   785 @@ -4700,11 +4700,6 @@
   786  esac
   788  case "${host_os}" in
   789 -     freebsd*)
   790 -
   791 -     CPPFLAGS=-I/usr/local/include
   792 -     LDFLAGS=-L/usr/local/lib
   793 -     ;;
   794       openbsd*)
   796       if test ${prefix} = '/usr/local' || test ${prefix} = 'NONE'; then
   797 @@ -18227,8 +18222,8 @@
   798  		if test -f "${IMAP_TK_DIR}/c-client/LDFLAGS"; then
   799        		imap_ldflags=`cat ${IMAP_TK_DIR}/c-client/LDFLAGS`
   800  		fi
   801 -		imap_libs="${IMAP_TK_DIR}/c-client/c-client.a"
   802 -	  	imap_include="-I${IMAP_TK_DIR}/c-client"
   803 +		imap_libs="-limap -lssl -lcrypto -lcrypt"
   804 +	  	imap_include="-DUSE_SYSTEM_IMAP -I${IMAP_TK_DIR}/include/imap"
   805        	CPPFLAGS="${CPPFLAGS} ${imap_include}"
   806  	  	LIBS="${LIBS} ${imap_libs} "`echo ${imap_ldflags}`
   807  	  	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
   808 @@ -25461,14 +25456,14 @@
   809     else
   810        ast_ext_lib_check_save_CFLAGS="${CFLAGS}"
   811        CFLAGS="${CFLAGS} "
   812 -      as_ac_Lib=`$as_echo "ac_cv_lib_lua5.1_${pbxfuncname}" | $as_tr_sh`
   813 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${pbxfuncname} in -llua5.1" >&5
   814 -$as_echo_n "checking for ${pbxfuncname} in -llua5.1... " >&6; }
   815 +      as_ac_Lib=`$as_echo "ac_cv_lib_lua_${pbxfuncname}" | $as_tr_sh`
   816 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${pbxfuncname} in -llua" >&5
   817 +$as_echo_n "checking for ${pbxfuncname} in -llua... " >&6; }
   818  if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
   819    $as_echo_n "(cached) " >&6
   820  else
   821    ac_check_lib_save_LIBS=$LIBS
   822 -LIBS="-llua5.1 ${pbxlibdir} -lm $LIBS"
   823 +LIBS="-llua ${pbxlibdir} -lm $LIBS"
   824  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
   825  /* end confdefs.h.  */
   827 @@ -25511,19 +25506,19 @@
   829     # now check for the header.
   830     if test "${AST_LUA_FOUND}" = "yes"; then
   831 -      LUA_LIB="${pbxlibdir} -llua5.1 -lm"
   832 +      LUA_LIB="${pbxlibdir} -llua -lm"
   833        # if --with-LUA=DIR has been specified, use it.
   834        if test "x${LUA_DIR}" != "x"; then
   835           LUA_INCLUDE="-I${LUA_DIR}/include"
   836        fi
   837        LUA_INCLUDE="${LUA_INCLUDE} "
   838 -      if test "xlua5.1/lua.h" = "x" ; then	# no header, assume found
   839 +      if test "xlua/lua.h" = "x" ; then	# no header, assume found
   840           LUA_HEADER_FOUND="1"
   841        else				# check for the header
   842           ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}"
   843           CPPFLAGS="${CPPFLAGS} ${LUA_INCLUDE}"
   844 -         ac_fn_c_check_header_mongrel "$LINENO" "lua5.1/lua.h" "ac_cv_header_lua5_1_lua_h" "$ac_includes_default"
   845 -if test "x$ac_cv_header_lua5_1_lua_h" = x""yes; then :
   846 +         ac_fn_c_check_header_mongrel "$LINENO" "lua/lua.h" "ac_cv_header_lua_lua_h" "$ac_includes_default"
   847 +if test "x$ac_cv_header_lua_lua_h" = x""yes; then :
   848    LUA_HEADER_FOUND=1
   849  else
   850    LUA_HEADER_FOUND=0
   851 @@ -25551,9 +25546,9 @@
   853  if test "x${PBX_LUA}" = "x1" ; then
   854  	if test x"${LUA_DIR}" = x; then
   855 -		LUA_INCLUDE="${LUA_INCLUDE} -I/usr/include/lua5.1"
   856 +		LUA_INCLUDE="${LUA_INCLUDE} -I/usr/include/lua"
   857  	else
   858 -		LUA_INCLUDE="${LUA_INCLUDE} -I${LUA_DIR}/lua5.1"
   859 +		LUA_INCLUDE="${LUA_INCLUDE} -I${LUA_DIR}/lua"
   860  	fi
   861  fi
   863 @@ -26238,7 +26233,7 @@
   864        	 pbxlibdir="-L${SQLITE_DIR}"
   865        fi
   866     fi
   867 -   pbxfuncname="sqlite_exec"
   868 +   pbxfuncname="sqlite3_exec"
   869     if test "x${pbxfuncname}" = "x" ; then   # empty lib, assume only headers
   870        AST_SQLITE_FOUND=yes
   871     else
   872 @@ -26953,16 +26948,16 @@
   873      if test "x${PBX_GMIME}" != "x1" -a "${USE_GMIME}" != "no"; then
   874  	PBX_GMIME=0
   875  	if test -n "$ac_tool_prefix"; then
   876 -  # Extract the first word of "${ac_tool_prefix}gmime-config", so it can be a program name with args.
   877 -set dummy ${ac_tool_prefix}gmime-config; ac_word=$2
   878 +   # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
   879 + set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
   880  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
   881  $as_echo_n "checking for $ac_word... " >&6; }
   882 -if test "${ac_cv_path_CONFIG_GMIME+set}" = set; then :
   883 +if test "${ac_cv_prog_PKGCONFIG+set}" = set; then
   884    $as_echo_n "(cached) " >&6
   885  else
   886 -  case $CONFIG_GMIME in
   887 +  case $PKGCONFIG in
   888    [\\/]* | ?:[\\/]*)
   889 -  ac_cv_path_CONFIG_GMIME="$CONFIG_GMIME" # Let the user override the test with a path.
   890 +  ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
   891    ;;
   892    *)
   893    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
   894 @@ -26973,7 +26968,7 @@
   895    test -z "$as_dir" && as_dir=.
   896      for ac_exec_ext in '' $ac_executable_extensions; do
   897    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
   898 -    ac_cv_path_CONFIG_GMIME="$as_dir/$ac_word$ac_exec_ext"
   899 +    ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
   900      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
   901      break 2
   902    fi
   903 @@ -26984,10 +26979,10 @@
   904    ;;
   905  esac
   906  fi
   907 -CONFIG_GMIME=$ac_cv_path_CONFIG_GMIME
   908 -if test -n "$CONFIG_GMIME"; then
   909 -  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CONFIG_GMIME" >&5
   910 -$as_echo "$CONFIG_GMIME" >&6; }
   911 +PKGCONFIG=$ac_cv_path_PKGCONFIG
   912 +if test -n "$PKGCONFIG"; then
   913 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
   914 +$as_echo "$PKGCONFIG" >&6; }
   915  else
   916    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
   917  $as_echo "no" >&6; }
   918 @@ -26995,18 +26990,18 @@
   921  fi
   922 -if test -z "$ac_cv_path_CONFIG_GMIME"; then
   923 -  ac_pt_CONFIG_GMIME=$CONFIG_GMIME
   924 -  # Extract the first word of "gmime-config", so it can be a program name with args.
   925 -set dummy gmime-config; ac_word=$2
   926 +if test -z "$ac_cv_path_PKGCONFIG"; then
   927 +  ac_pt_PKGCONFIG=$PKGCONFIG
   928 +  # Extract the first word of "pkg-config", so it can be a program name with args.
   929 +set dummy pkg-config; ac_word=$2
   930  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
   931  $as_echo_n "checking for $ac_word... " >&6; }
   932 -if test "${ac_cv_path_ac_pt_CONFIG_GMIME+set}" = set; then :
   933 +if test "${ac_cv_path_ac_pt_PKGCONFIG+set}" = set; then :
   934    $as_echo_n "(cached) " >&6
   935  else
   936 -  case $ac_pt_CONFIG_GMIME in
   937 +  case $ac_pt_PKGCONFIG in
   938    [\\/]* | ?:[\\/]*)
   939 -  ac_cv_path_ac_pt_CONFIG_GMIME="$ac_pt_CONFIG_GMIME" # Let the user override the test with a path.
   940 +  ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
   941    ;;
   942    *)
   943    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
   944 @@ -27017,7 +27012,7 @@
   945    test -z "$as_dir" && as_dir=.
   946      for ac_exec_ext in '' $ac_executable_extensions; do
   947    if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
   948 -    ac_cv_path_ac_pt_CONFIG_GMIME="$as_dir/$ac_word$ac_exec_ext"
   949 +    ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
   950      $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
   951      break 2
   952    fi
   953 @@ -27028,17 +27023,17 @@
   954    ;;
   955  esac
   956  fi
   957 -ac_pt_CONFIG_GMIME=$ac_cv_path_ac_pt_CONFIG_GMIME
   958 -if test -n "$ac_pt_CONFIG_GMIME"; then
   959 -  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CONFIG_GMIME" >&5
   960 -$as_echo "$ac_pt_CONFIG_GMIME" >&6; }
   961 +ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
   962 +if test -n "$ac_pt_PKGCONFIG"; then
   963 +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
   964 +$as_echo "${ECHO_T}$ac_pt_PKGCONFIG" >&6; }
   965  else
   966    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
   967  $as_echo "no" >&6; }
   968  fi
   970 -  if test "x$ac_pt_CONFIG_GMIME" = x; then
   971 -    CONFIG_GMIME="No"
   972 +  if test "x$ac_pt_PKGCONFIG" = x; then
   973 +    PKGCONFIG="No"
   974    else
   975      case $cross_compiling:$ac_tool_warned in
   976  yes:)
   977 @@ -27046,17 +27041,15 @@
   978  $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
   979  ac_tool_warned=yes ;;
   980  esac
   981 -    CONFIG_GMIME=$ac_pt_CONFIG_GMIME
   982 +    PKGCONFIG=$ac_pt_PKGCONFIG
   983    fi
   984  else
   985 -  CONFIG_GMIME="$ac_cv_path_CONFIG_GMIME"
   986 +  PKGCONFIG="$ac_cv_path_PKGCONFIG"
   987  fi
   989 -	if test ! "x${CONFIG_GMIME}" = xNo; then
   990 -	    if test x"" = x ; then A=--cflags ; else A="" ; fi
   991 -	    GMIME_INCLUDE=$(${CONFIG_GMIME} $A)
   992 -	    if test x"" = x ; then A=--libs ; else A="" ; fi
   993 -	    GMIME_LIB=$(${CONFIG_GMIME} $A)
   994 +	if test ! "x${PKGCONFIG}" = xNo; then
   995 +	    GMIME_INCLUDE=$(${PKGCONFIG} gmime-2.4 --cflags 2>/dev/null)
   996 +	    GMIME_LIB=$(${PKGCONFIG} gmime-2.4 --libs)
   997  	    if test x"#include <gmime/gmime.h>" != x ; then
   998  		saved_cppflags="${CPPFLAGS}"
   999  		if test "x${GMIME_DIR}" != "x"; then
  1000 Index: formats/format_pcm.c
  1001 diff -Nau formats/format_pcm.c.orig formats/format_pcm.c
  1002 --- formats/format_pcm.c.orig	2010-07-26 05:27:06.000000000 +0200
  1003 +++ formats/format_pcm.c	2011-03-13 14:03:42.000000000 +0100
  1004 @@ -350,6 +350,7 @@
  1005  		ast_log(LOG_WARNING, "Unable to write header\n");
  1006  		return -1;
  1008 +    fflush(f);  /* issues.asterisk.org bug 0016610 */
  1009  	return 0;
  1012 Index: formats/format_wav.c
  1013 diff -Nau formats/format_wav.c.orig formats/format_wav.c
  1014 --- formats/format_wav.c.orig	2010-09-02 18:43:09.000000000 +0200
  1015 +++ formats/format_wav.c	2011-03-13 14:03:42.000000000 +0100
  1016 @@ -310,6 +310,7 @@
  1017  		ast_log(LOG_WARNING, "Unable to write header\n");
  1018  		return -1;
  1020 +    fflush(f);  /* issues.asterisk.org bug 0016610 */
  1021  	return 0;
  1024 Index: formats/format_wav_gsm.c
  1025 diff -Nau formats/format_wav_gsm.c.orig formats/format_wav_gsm.c
  1026 --- formats/format_wav_gsm.c.orig	2010-07-26 05:27:06.000000000 +0200
  1027 +++ formats/format_wav_gsm.c	2011-03-13 14:03:42.000000000 +0100
  1028 @@ -362,6 +362,7 @@
  1029  		ast_log(LOG_WARNING, "Unable to write header\n");
  1030  		return -1;
  1032 +    fflush(f);  /* issues.asterisk.org bug 0016610 */
  1033  	return 0;
  1036 Index: main/db1-ast/hash/hash.h
  1037 diff -Nau main/db1-ast/hash/hash.h.orig main/db1-ast/hash/hash.h
  1038 --- main/db1-ast/hash/hash.h.orig	2006-08-21 04:11:39.000000000 +0200
  1039 +++ main/db1-ast/hash/hash.h	2011-03-13 14:03:42.000000000 +0100
  1040 @@ -36,6 +36,8 @@
  1041   *	@(#)hash.h	8.3 (Berkeley) 5/31/94
  1042   */
  1044 +#include <stdint.h>
  1046  /* Operations */
  1047  typedef enum {
  1048  	HASH_GET, HASH_PUT, HASH_PUTNEW, HASH_DELETE, HASH_FIRST, HASH_NEXT
  1049 Index: main/db1-ast/hash/ndbm.c
  1050 diff -Nau main/db1-ast/hash/ndbm.c.orig main/db1-ast/hash/ndbm.c
  1051 --- main/db1-ast/hash/ndbm.c.orig	2006-08-21 04:11:39.000000000 +0200
  1052 +++ main/db1-ast/hash/ndbm.c	2011-03-13 14:03:42.000000000 +0100
  1053 @@ -49,7 +49,8 @@
  1054  #include <string.h>
  1055  #include <stdlib.h>
  1057 -#include <ndbm.h>
  1058 +#include "../include/ndbm.h"
  1059 +#include "../include/db.h"
  1060  #include "hash.h"
  1062  /*
  1063 Index: main/features.c
  1064 diff -Nau main/features.c.orig main/features.c
  1065 --- main/features.c.orig	2011-01-20 21:24:36.000000000 +0100
  1066 +++ main/features.c	2011-03-13 14:03:42.000000000 +0100
  1067 @@ -1658,6 +1658,10 @@
  1068  			snprintf(args, len, "%s,%s,m", S_OR(touch_format, "wav"), touch_filename);
  1071 +		for(x = 0; x < strlen(touch_filename); x++) {
  1072 +			if (args[x] == '/')
  1073 +				args[x] = '-';
  1074 +		}
  1075  		for(x = 0; x < strlen(args); x++) {
  1076  			if (args[x] == '/')
  1077  				args[x] = '-';
  1078 @@ -1774,6 +1778,10 @@
  1079  			snprintf(args, len, "%s.%s,b", touch_filename, S_OR(touch_format, "wav"));
  1082 +		for( x = 0; x < strlen(touch_filename); x++) {
  1083 +			if (args[x] == '/')
  1084 +				args[x] = '-';
  1085 +		}
  1086  		for( x = 0; x < strlen(args); x++) {
  1087  			if (args[x] == '/')
  1088  				args[x] = '-';
  1089 Index: main/file.c
  1090 diff -Nau main/file.c.orig main/file.c
  1091 --- main/file.c.orig	2011-01-12 17:05:12.000000000 +0100
  1092 +++ main/file.c	2011-03-13 14:03:42.000000000 +0100
  1093 @@ -255,7 +255,7 @@
  1094  	char *fn = NULL;
  1096  	if (!strcmp(ext, "wav49"))
  1097 -		ext = "WAV";
  1098 +		ext = "wav";
  1100  	if (filename[0] == '/') {
  1101  		if (asprintf(&fn, "%s.%s", filename, ext) < 0) {
  1102 Index: main/Makefile
  1103 diff -Nau main/Makefile.orig main/Makefile
  1104 --- main/Makefile.orig	2010-12-18 00:52:04.000000000 +0100
  1105 +++ main/Makefile	2011-03-13 14:03:42.000000000 +0100
  1106 @@ -69,10 +69,7 @@
  1107  endif
  1109  ifeq ($(OSARCH),FreeBSD)
  1110 -  # -V is understood by BSD Make, not by GNU make.
  1111 -  BSDVERSION=$(shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
  1112 -  AST_LIBS+=$(shell if test $(BSDVERSION) -lt 502102 ; then echo "-lc_r"; else echo "-pthread"; fi)
  1113 -  AST_LIBS+=-lcrypto
  1114 +  AST_LIBS+=-lpthread -lcrypto
  1115  endif
  1117  ifneq ($(findstring $(OSARCH), mingw32 cygwin ),)
  1118 Index: main/tcptls.c
  1119 diff -Nau main/tcptls.c.orig main/tcptls.c
  1120 --- main/tcptls.c.orig	2010-07-09 00:08:07.000000000 +0200
  1121 +++ main/tcptls.c	2011-03-13 14:03:42.000000000 +0100
  1122 @@ -354,6 +354,7 @@
  1123  	if (!ast_strlen_zero(cfg->cafile) || !ast_strlen_zero(cfg->capath)) {
  1124  		if (SSL_CTX_load_verify_locations(cfg->ssl_ctx, S_OR(cfg->cafile, NULL), S_OR(cfg->capath,NULL)) == 0)
  1125  			ast_verb(0, "SSL CA file(%s)/path(%s) error\n", cfg->cafile, cfg->capath);
  1126 +        SSL_CTX_set_client_CA_list(cfg->ssl_ctx, S_OR(cfg->cafile, NULL));
  1129  	ast_verb(0, "SSL certificate ok\n");
  1130 Index: main/udptl.c
  1131 diff -Nau main/udptl.c.orig main/udptl.c
  1132 --- main/udptl.c.orig	2011-02-22 23:52:11.000000000 +0100
  1133 +++ main/udptl.c	2011-03-13 14:03:42.000000000 +0100
  1134 @@ -98,6 +98,18 @@
  1136  #define UDPTL_BUF_MASK              15
  1138 +/*! Copied from chan_oss.c, corrects link errors:
  1139 +udptl.o: In function `calculate_local_max_datagram':
  1140 +main/udptl.c:740: undefined reference to `MIN'
  1141 +udptl.o: In function `calculate_far_max_ifp':
  1142 +main/udptl.c:770: undefined reference to `MAX' */
  1143 +#ifndef MIN
  1144 +#define MIN(a,b) ((a) < (b) ? (a) : (b))
  1145 +#endif
  1146 +#ifndef MAX
  1147 +#define MAX(a,b) ((a) > (b) ? (a) : (b))
  1148 +#endif
  1150  typedef struct {
  1151  	int buf_len;
  1152  	uint8_t buf[LOCAL_FAX_MAX_DATAGRAM];
  1153 Index: Makefile
  1154 diff -Nau Makefile.orig Makefile
  1155 --- Makefile.orig	2011-01-12 16:57:43.000000000 +0100
  1156 +++ Makefile	2011-03-13 14:03:42.000000000 +0100
  1157 @@ -230,15 +230,6 @@
  1158    _ASTCFLAGS+=-fsigned-char
  1159  endif
  1161 -ifeq ($(OSARCH),FreeBSD)
  1162 -  ifeq ($(PROC),i386)
  1163 -    _ASTCFLAGS+=-march=i686
  1164 -  endif
  1165 -  # -V is understood by BSD Make, not by GNU make.
  1166 -  BSDVERSION=$(shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
  1167 -  _ASTCFLAGS+=$(shell if test $(BSDVERSION) -lt 500016 ; then echo "-D_THREAD_SAFE"; fi)
  1168 -endif
  1170  ifeq ($(OSARCH),NetBSD)
  1171    _ASTCFLAGS+=-pthread -I/usr/pkg/include
  1172  endif
  1173 Index: menuselect-tree
  1174 diff -Nau menuselect-tree.orig menuselect-tree
  1175 --- menuselect-tree.orig	2011-02-22 23:50:45.000000000 +0100
  1176 +++ menuselect-tree	2011-03-13 14:03:42.000000000 +0100
  1177 @@ -38,6 +38,8 @@
  1178  </member>
  1179  <member name="app_authenticate" displayname="Authentication Application" remove_on_change="apps/app_authenticate.o apps/app_authenticate.so">
  1180  </member>
  1181 +<member name="app_backticks" displayname="BACKTICKS() dialplan function" remove_on_change="apps/app_backticks.o apps/app_backticks.so">
  1182 +</member>
  1183  <member name="app_cdr" displayname="Tell Asterisk to not maintain a CDR for the current call" remove_on_change="apps/app_cdr.o apps/app_cdr.so">
  1184  </member>
  1185  <member name="app_celgenuserevent" displayname="Generate an User-Defined CEL event" remove_on_change="apps/app_celgenuserevent.o apps/app_celgenuserevent.so">
  1186 @@ -937,11 +939,11 @@
  1187  		<member name="CORE-SOUNDS-EN-ALAW" displayname="English, a-Law format">
  1188  		</member>
  1189  		<member name="CORE-SOUNDS-EN-GSM" displayname="English, GSM format" >
  1190 -			<defaultenabled>yes</defaultenabled>
  1191  		</member>
  1192  		<member name="CORE-SOUNDS-EN-G729" displayname="English, G.729 format">
  1193  		</member>
  1194  		<member name="CORE-SOUNDS-EN-G722" displayname="English, G.722 format">
  1195 +			<defaultenabled>yes</defaultenabled>
  1196  		</member>
  1197  		<member name="CORE-SOUNDS-EN-SLN16" displayname="English, Signed-linear 16kHz format">
  1198  		</member>
  1199 @@ -1006,7 +1008,6 @@
  1200  	</category>
  1201  	<category name="MENUSELECT_MOH" displayname="Music On Hold File Packages" positive_output="yes">
  1202  		<member name="MOH-OPSOUND-WAV" displayname="opsound.org Music On Hold Files, WAV format" >
  1203 -			<defaultenabled>yes</defaultenabled>
  1204  		</member>
  1205  		<member name="MOH-OPSOUND-ULAW" displayname="opsound.org Music On Hold Files, mu-Law format" >
  1206  		</member>
  1207 @@ -1017,6 +1018,7 @@
  1208  		<member name="MOH-OPSOUND-G729" displayname="opsound.org Music On Hold Files, G.729 format" >
  1209  		</member>
  1210  		<member name="MOH-OPSOUND-G722" displayname="opsound.org Music On Hold Files, G.722 format" >
  1211 +			<defaultenabled>yes</defaultenabled>
  1212  		</member>
  1213  		<member name="MOH-OPSOUND-SLN16" displayname="opsound.org Music On Hold Files, Signed-linear 16kHz format" >
  1214  		</member>
  1215 @@ -1037,6 +1039,7 @@
  1216  		<member name="EXTRA-SOUNDS-EN-G729" displayname="English, G.729 format">
  1217  		</member>
  1218  		<member name="EXTRA-SOUNDS-EN-G722" displayname="English, G.722 format">
  1219 +			<defaultenabled>yes</defaultenabled>
  1220  		</member>
  1221  		<member name="EXTRA-SOUNDS-EN-SLN16" displayname="English, Signed-linear 16kHz format">
  1222  		</member>
  1223 Index: res/res_http_post.c
  1224 diff -Nau res/res_http_post.c.orig res/res_http_post.c
  1225 --- res/res_http_post.c.orig	2009-10-27 17:48:54.000000000 +0100
  1226 +++ res/res_http_post.c	2011-03-13 14:03:42.000000000 +0100
  1227 @@ -122,14 +122,8 @@
  1228  		ast_log(LOG_WARNING, "Got unexpected GMIME_IS_MESSAGE_PARTIAL\n");
  1229  		return;
  1230  	} else if (GMIME_IS_MULTIPART(part)) {
  1231 -		GList *l;
  1233 -		ast_log(LOG_WARNING, "Got unexpected GMIME_IS_MULTIPART, trying to process subparts\n");
  1234 -		l = GMIME_MULTIPART(part)->subparts;
  1235 -		while (l) {
  1236 -			process_message_callback(l->data, cbinfo);
  1237 -			l = l->next;
  1238 -		}
  1239 +  		ast_log(LOG_WARNING, "Got unexpected GMIME_IS_MULTIPART, trying to process subparts\n");
  1240 +		g_mime_multipart_foreach(GMIME_MULTIPART(part), process_message_callback, cbinfo);
  1241  	} else if (GMIME_IS_PART(part)) {
  1242  		const char *filename;
  1244 Index: sounds/sounds.xml
  1245 diff -Nau sounds/sounds.xml.orig sounds/sounds.xml
  1246 --- sounds/sounds.xml.orig	2010-10-18 23:51:23.000000000 +0200
  1247 +++ sounds/sounds.xml	2011-03-13 14:03:42.000000000 +0100
  1248 @@ -6,11 +6,11 @@
  1249  		<member name="CORE-SOUNDS-EN-ALAW" displayname="English, a-Law format">
  1250  		</member>
  1251  		<member name="CORE-SOUNDS-EN-GSM" displayname="English, GSM format" >
  1252 -			<defaultenabled>yes</defaultenabled>
  1253  		</member>
  1254  		<member name="CORE-SOUNDS-EN-G729" displayname="English, G.729 format">
  1255  		</member>
  1256  		<member name="CORE-SOUNDS-EN-G722" displayname="English, G.722 format">
  1257 +			<defaultenabled>yes</defaultenabled>
  1258  		</member>
  1259  		<member name="CORE-SOUNDS-EN-SLN16" displayname="English, Signed-linear 16kHz format">
  1260  		</member>
  1261 @@ -75,7 +75,6 @@
  1262  	</category>
  1263  	<category name="MENUSELECT_MOH" displayname="Music On Hold File Packages" positive_output="yes">
  1264  		<member name="MOH-OPSOUND-WAV" displayname="opsound.org Music On Hold Files, WAV format" >
  1265 -			<defaultenabled>yes</defaultenabled>
  1266  		</member>
  1267  		<member name="MOH-OPSOUND-ULAW" displayname="opsound.org Music On Hold Files, mu-Law format" >
  1268  		</member>
  1269 @@ -86,6 +85,7 @@
  1270  		<member name="MOH-OPSOUND-G729" displayname="opsound.org Music On Hold Files, G.729 format" >
  1271  		</member>
  1272  		<member name="MOH-OPSOUND-G722" displayname="opsound.org Music On Hold Files, G.722 format" >
  1273 +			<defaultenabled>yes</defaultenabled>
  1274  		</member>
  1275  		<member name="MOH-OPSOUND-SLN16" displayname="opsound.org Music On Hold Files, Signed-linear 16kHz format" >
  1276  		</member>
  1277 @@ -106,6 +106,7 @@
  1278  		<member name="EXTRA-SOUNDS-EN-G729" displayname="English, G.729 format">
  1279  		</member>
  1280  		<member name="EXTRA-SOUNDS-EN-G722" displayname="English, G.722 format">
  1281 +			<defaultenabled>yes</defaultenabled>
  1282  		</member>
  1283  		<member name="EXTRA-SOUNDS-EN-SLN16" displayname="English, Signed-linear 16kHz format">
  1284  		</member>
  1285 Index: cdr/cdr_radius.c
  1286 diff -Nau cdr/cdr_radius.c.orig cdr/cdr_radius.c
  1287 --- cdr/cdr_radius.c.orig	2010-07-20 21:35:02.000000000 +0200
  1288 +++ cdr/cdr_radius.c	2011-03-22 16:12:11.000000000 +0100
  1289 @@ -105,10 +105,18 @@
  1290  	if (!rc_avpair_add(rh, tosend, PW_AST_SRC, &cdr->src, strlen(cdr->src), VENDOR_CODE))
  1291  		return -1;
  1293 + 	/* RADIUS standard identifier patch */
  1294 +	if (!rc_avpair_add(rh, tosend, PW_CALLING_STATION_ID, &cdr->src, strlen(cdr->src), 0))
  1295 +		return -1;
  1297   	/* Destination */
  1298  	if (!rc_avpair_add(rh, tosend, PW_AST_DST, &cdr->dst, strlen(cdr->dst), VENDOR_CODE))
  1299  		return -1;
  1301 + 	/* RADIUS standard identifier patch */
  1302 +	if (!rc_avpair_add(rh, tosend, PW_CALLED_STATION_ID, &cdr->dst, strlen(cdr->dst), 0))
  1303 +		return -1;
  1305   	/* Destination context */
  1306  	if (!rc_avpair_add(rh, tosend, PW_AST_DST_CTX, &cdr->dcontext, strlen(cdr->dcontext), VENDOR_CODE))
  1307  		return -1;
  1308 @@ -163,6 +171,10 @@
  1309  	if (!rc_avpair_add(rh, tosend, PW_AST_BILL_SEC, &cdr->billsec, 0, VENDOR_CODE))
  1310  		return -1;
  1312 + 	/* RADIUS standard identifier patch */
  1313 +	if (!rc_avpair_add(rh, tosend, PW_ACCT_SESSION_TIME, &cdr->billsec, 0, 0))
  1314 +		return -1;
  1316  	/* Disposition */
  1317  	tmp = ast_cdr_disp2str(cdr->disposition);
  1318  	if (!rc_avpair_add(rh, tosend, PW_AST_DISPOSITION, tmp, strlen(tmp), VENDOR_CODE))
  1319 @@ -186,10 +198,14 @@
  1322  	/* Setting Acct-Session-Id & User-Name attributes for proper generation
  1323 -	   of Acct-Unique-Session-Id on server side */
  1324 -	/* Channel */
  1325 -	if (!rc_avpair_add(rh, tosend, PW_USER_NAME, &cdr->channel, strlen(cdr->channel), 0))
  1326 -		return -1;
  1327 +	   of Acct-Unique-Session-Id on server side Channel */
  1328 +	{
  1329 +		char szChanuser[PATH_MAX] = {0};
  1330 +		strncpy(szChanuser, &cdr->channel, PATH_MAX-1);
  1331 +		*(strrchr(szChanuser, '-')) = 0;
  1332 +		if (!rc_avpair_add(rh, tosend, PW_USER_NAME, szChanuser, strlen(cdr->channel), 0))
  1333 +			return -1;
  1334 +	}
  1336  	/* Unique ID */
  1337  	if (!rc_avpair_add(rh, tosend, PW_ACCT_SESSION_ID, &cdr->uniqueid, strlen(cdr->uniqueid), 0))

mercurial