Mon, 28 Mar 2011 19:41:02 +0200
Completely rework package including...
Simpify 64-bit -fPIC logic, instruct make to build in parallel,
force error condition on failed profile dependency, build the
standard 'bootstrap' target as suggested, correct grammar, wording,
and punctuation in general, upgrade to latest upstream vendor version,
rearrange package dependencies mpc, mpfr, and gmp, correct buildconf
thanks to new lto-plugin forced, avoid failed platform specific stage
comparison, adjust patch code to reflect new version update, and most
importantly adjust optimization flags to platform. Please note that
block 'correct hardcoded paths' is likely no yet complete.
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;
1007 }
1008 + fflush(f); /* issues.asterisk.org bug 0016610 */
1009 return 0;
1010 }
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;
1019 }
1020 + fflush(f); /* issues.asterisk.org bug 0016610 */
1021 return 0;
1022 }
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;
1031 }
1032 + fflush(f); /* issues.asterisk.org bug 0016610 */
1033 return 0;
1034 }
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>
1045 +
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);
1069 }
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"));
1080 }
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));
1127 }
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
1149 +
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
1169 -
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;
1232 -
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;
1296 +
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;
1304 +
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;
1315 +
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 @@
1320 }
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))