asterisk/asterisk.patch

Sun, 29 May 2011 16:29:06 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sun, 29 May 2011 16:29:06 +0200
changeset 344
e33c1efbd60f
parent 315
75d162df42e8
child 347
10bd406e1c51
permissions
-rw-r--r--

Update, correct, improve build configuration and packaging logic.
Update to new version of vendor software, bump copyright date, remove implicit
gcc dependency, add comments for Trolltech bug tracking, correct enforced
dynamic library linkage, and install mysterious process stub binary.

     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