asterisk/asterisk.patch

Thu, 04 Oct 2012 20:30:05 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 04 Oct 2012 20:30:05 +0200
changeset 715
c10fb90893b9
parent 552
e568963742d6
child 755
192d78fefb97
permissions
-rw-r--r--

Correct out of date build configuration, porting to Solaris 11 network
link infrastructure and new libpcap logic. This additionally allows for
device drivers in subdirectories of /dev. Correct packaged nmap
personalities and signatures to work out of the box. Finally, hack
arpd logic to properly close sockets and quit on TERM by repeating
signaling in the run command script. Sadly, all this fails to correct
the run time behaviour of honeyd which fails to bind to the IP layer.

michael@311 1 Index: addons/chan_ooh323.c
michael@311 2 diff -Nau addons/chan_ooh323.c.orig addons/chan_ooh323.c
michael@405 3 --- addons/chan_ooh323.c.orig 2012-01-26 21:14:50.000000000 +0100
michael@405 4 +++ addons/chan_ooh323.c 2012-03-18 17:47:07.875949857 +0100
michael@362 5 @@ -24,6 +24,12 @@
michael@202 6
michael@311 7 #include "chan_ooh323.h"
michael@311 8 #include <math.h>
michael@311 9 +#if defined __SVR4 && defined __sun
michael@311 10 +#include <sys/sockio.h>
michael@311 11 +#ifndef IPTOS_MINCOST
michael@311 12 +#define IPTOS_MINCOST 0x02
michael@311 13 +#endif
michael@311 14 +#endif
michael@202 15
michael@311 16 #define FORMAT_STRING_SIZE 512
michael@202 17
michael@311 18 Index: addons/ooh323c/src/ooCmdChannel.c
michael@311 19 diff -Nau addons/ooh323c/src/ooCmdChannel.c.orig addons/ooh323c/src/ooCmdChannel.c
michael@362 20 --- addons/ooh323c/src/ooCmdChannel.c.orig 2011-08-04 21:37:16.000000000 +0200
michael@405 21 +++ addons/ooh323c/src/ooCmdChannel.c 2012-03-18 17:47:07.875949857 +0100
michael@311 22 @@ -25,6 +25,10 @@
michael@311 23 #include "ooCalls.h"
michael@311 24 #include "ooCmdChannel.h"
michael@311 25
michael@311 26 +#ifndef AF_LOCAL
michael@311 27 +#define AF_LOCAL AF_UNIX
michael@311 28 +#define PF_LOCAL PF_UNIX
michael@311 29 +#endif
michael@311 30
michael@311 31 /** Global endpoint structure */
michael@311 32 extern OOH323EndPoint gH323ep;
michael@311 33 Index: addons/ooh323c/src/ooSocket.c
michael@311 34 diff -Nau addons/ooh323c/src/ooSocket.c.orig addons/ooh323c/src/ooSocket.c
michael@362 35 --- addons/ooh323c/src/ooSocket.c.orig 2011-05-04 22:50:18.000000000 +0200
michael@405 36 +++ addons/ooh323c/src/ooSocket.c 2012-03-18 17:47:07.875949857 +0100
michael@311 37 @@ -24,6 +24,9 @@
michael@311 38
michael@311 39 #include "ooSocket.h"
michael@311 40 #include "ootrace.h"
michael@311 41 +#if defined __SVR4 && defined __sun
michael@311 42 +#include <sys/sockio.h>
michael@311 43 +#endif
michael@311 44 #if defined(_WIN32_WCE)
michael@311 45 static int inited = 0;
michael@311 46 #define SEND_FLAGS 0
michael@311 47 Index: addons/ooh323cDriver.c
michael@311 48 diff -Nau addons/ooh323cDriver.c.orig addons/ooh323cDriver.c
michael@347 49 --- addons/ooh323cDriver.c.orig 2011-02-18 01:07:20.000000000 +0100
michael@405 50 +++ addons/ooh323cDriver.c 2012-03-18 17:47:07.875949857 +0100
michael@311 51 @@ -27,6 +27,11 @@
michael@311 52
michael@311 53 #define SEC_TO_HOLD_THREAD 24
michael@311 54
michael@311 55 +#ifndef AF_LOCAL
michael@311 56 +#define AF_LOCAL AF_UNIX
michael@311 57 +#define PF_LOCAL PF_UNIX
michael@311 58 +#endif
michael@311 59 +
michael@311 60 extern struct ast_module *myself;
michael@311 61 extern OOBOOL gH323Debug;
michael@311 62 extern OOH323EndPoint gH323ep;
michael@310 63 Index: apps/app_backticks.c
michael@311 64 diff -Nau apps/app_backticks.c.orig apps/app_backticks.c
michael@311 65 --- apps/app_backticks.c.orig 1970-01-01 01:00:00.000000000 +0100
michael@405 66 +++ apps/app_backticks.c 2012-03-18 17:47:07.875949857 +0100
michael@310 67 @@ -0,0 +1,129 @@
michael@202 68 +
michael@202 69 +#include "asterisk.h"
michael@202 70 +
michael@311 71 +ASTERISK_FILE_VERSION(__FILE__, "$Revision: 1.52 $")
michael@202 72 +
michael@310 73 +#include <stdio.h>
michael@310 74 +#include <asterisk/file.h>
michael@310 75 +#include <asterisk/logger.h>
michael@310 76 +#include <asterisk/channel.h>
michael@310 77 +#include <asterisk/pbx.h>
michael@310 78 +#include <asterisk/module.h>
michael@310 79 +#include <asterisk/lock.h>
michael@310 80 +#include <asterisk/app.h>
michael@310 81 +#include <stdlib.h>
michael@310 82 +#include <unistd.h>
michael@310 83 +#include <string.h>
michael@202 84 +
michael@310 85 +static char *app = "BackTicks";
michael@310 86 +static char *synopsis = "Execute a shell command and save the result as a variable.";
michael@310 87 +static char *desc = " Backticks(<VARNAME>|<command>)\n\n"
michael@310 88 + "Be sure to include a full path to the command!\n";
michael@202 89 +
michael@310 90 +static char *do_backticks(char *command, char *buf, size_t len)
michael@310 91 +{
michael@310 92 + int fds[2], pid = 0;
michael@310 93 + char *ret = NULL;
michael@202 94 +
michael@310 95 + memset(buf, 0, len);
michael@310 96 + if (pipe(fds)) {
michael@310 97 + ast_log(LOG_WARNING, "Pipe/Exec failed\n");
michael@310 98 + } else {
michael@310 99 + pid = fork();
michael@310 100 + if (pid < 0) {
michael@310 101 + ast_log(LOG_WARNING, "Fork failed\n");
michael@310 102 + close(fds[0]);
michael@310 103 + close(fds[1]);
michael@310 104 + } else if (pid) {
michael@310 105 + /* parent */
michael@310 106 + close(fds[1]);
michael@310 107 + read(fds[0], buf, len);
michael@310 108 + close(fds[0]);
michael@310 109 + ret = buf;
michael@310 110 + } else {
michael@310 111 + /* child */
michael@310 112 + char *argv[255] = {0};
michael@310 113 + int argc = 0;
michael@310 114 + char *p;
michael@310 115 + char *mycmd = ast_strdupa(command);
michael@310 116 + close(fds[0]);
michael@310 117 + dup2(fds[1], STDOUT_FILENO);
michael@310 118 + argv[argc++] = mycmd;
michael@310 119 + do {
michael@310 120 + if ((p = strchr(mycmd, ' '))) {
michael@310 121 + *p = '\0';
michael@310 122 + mycmd = ++p;
michael@310 123 + argv[argc++] = mycmd;
michael@310 124 + }
michael@310 125 + } while (p != NULL);
michael@310 126 + close(fds[1]);
michael@310 127 + execv(argv[0], argv);
michael@310 128 + ast_log(LOG_ERROR, "exec of %s failed\n", argv[0]);
michael@310 129 + exit(0);
michael@310 130 + }
michael@310 131 + }
michael@310 132 + return ret;
michael@202 133 +}
michael@202 134 +
michael@310 135 +static int backticks_exec(struct ast_channel *chan, void *data)
michael@202 136 +{
michael@310 137 + int res = 0;
michael@310 138 + const char *usage = "Usage: Backticks(<VARNAME>|<command>)";
michael@310 139 + char buf[1024], *argv[2], *mydata;
michael@310 140 + int argc = 0;
michael@310 141 +
michael@310 142 + if (!data) {
michael@310 143 + ast_log(LOG_WARNING, "%s\n", usage);
michael@310 144 + return -1;
michael@310 145 + }
michael@310 146 + ast_autoservice_start(chan);
michael@310 147 + if (!(mydata = ast_strdupa(data))) {
michael@310 148 + ast_log(LOG_ERROR, "Memory Error!\n");
michael@310 149 + res = -1;
michael@310 150 + } else {
michael@310 151 + if((argc = ast_app_separate_args(mydata, '|', argv, sizeof(argv) / sizeof(argv[0]))) < 2) {
michael@310 152 + ast_log(LOG_WARNING, "%s\n", usage);
michael@310 153 + res = -1;
michael@310 154 + }
michael@310 155 + if (do_backticks(argv[1], buf, sizeof(buf)))
michael@310 156 + pbx_builtin_setvar_helper(chan, argv[0], buf);
michael@310 157 + else {
michael@310 158 + ast_log(LOG_WARNING, "No Data!\n");
michael@310 159 + res = -1;
michael@310 160 + }
michael@310 161 + }
michael@310 162 + ast_autoservice_stop(chan);
michael@310 163 + return res;
michael@202 164 +}
michael@202 165 +
michael@310 166 +static int function_backticks(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
michael@202 167 +{
michael@310 168 + if (!do_backticks(data, buf, len)) {
michael@310 169 + ast_log(LOG_WARNING, "No Data!\n");
michael@310 170 + return -1;
michael@310 171 + }
michael@310 172 + return 0;
michael@202 173 +}
michael@202 174 +
michael@310 175 +static struct ast_custom_function backticks_function = {
michael@310 176 + .name = "BACKTICKS",
michael@310 177 + .desc = "Executes a shell command and evaluates to the result.",
michael@310 178 + .syntax = "BACKTICKS(<command>)",
michael@310 179 + .synopsis = "Executes a shell command.",
michael@310 180 + .read = function_backticks
michael@202 181 +};
michael@202 182 +
michael@202 183 +static int unload_module(void)
michael@202 184 +{
michael@310 185 + ast_custom_function_unregister(&backticks_function);
michael@310 186 + return ast_unregister_application(app);
michael@202 187 +}
michael@202 188 +
michael@202 189 +static int load_module(void)
michael@202 190 +{
michael@310 191 + ast_custom_function_register(&backticks_function);
michael@310 192 + return ast_register_application(app, backticks_exec, synopsis, desc);
michael@202 193 +}
michael@202 194 +
michael@310 195 +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "BACKTICKS() dialplan function");
michael@202 196 +
michael@310 197 Index: apps/app_meetme.c
michael@311 198 diff -Nau apps/app_meetme.c.orig apps/app_meetme.c
michael@405 199 --- apps/app_meetme.c.orig 2012-01-09 16:37:12.000000000 +0100
michael@405 200 +++ apps/app_meetme.c 2012-03-18 17:47:07.875949857 +0100
michael@405 201 @@ -614,6 +614,7 @@
michael@310 202
michael@398 203 /*! Do not write any audio to this channel until the state is up. */
michael@398 204 #define CONFFLAG_NO_AUDIO_UNTIL_UP (1ULL << 31)
michael@398 205 +#define CONFFLAG_USERNAME (1 << 32)
michael@398 206 /*! If set play an intro announcement at start of conference */
michael@398 207 #define CONFFLAG_INTROMSG (1ULL << 32)
michael@398 208
michael@405 209 @@ -625,6 +626,7 @@
michael@310 210 OPT_ARG_MOH_CLASS = 4,
michael@311 211 OPT_ARG_INTROMSG = 5,
michael@311 212 OPT_ARG_ARRAY_SIZE = 6,
michael@311 213 + OPT_ARG_USERNAME = 7,
michael@310 214 };
michael@310 215
michael@310 216 AST_APP_OPTIONS(meetme_opts, BEGIN_OPTIONS
michael@405 217 @@ -658,6 +660,7 @@
michael@310 218 AST_APP_OPTION('1', CONFFLAG_NOONLYPERSON ),
michael@310 219 AST_APP_OPTION_ARG('S', CONFFLAG_DURATION_STOP, OPT_ARG_DURATION_STOP),
michael@310 220 AST_APP_OPTION_ARG('L', CONFFLAG_DURATION_LIMIT, OPT_ARG_DURATION_LIMIT),
michael@310 221 + AST_APP_OPTION_ARG('n', CONFFLAG_USERNAME, OPT_ARG_USERNAME),
michael@310 222 END_OPTIONS );
michael@310 223
michael@311 224 static const char * const app = "MeetMe";
michael@405 225 @@ -2453,6 +2456,12 @@
michael@311 226 ast_test_flag64(confflags, CONFFLAG_INTROUSERNOREVIEW))) {
michael@310 227 char destdir[PATH_MAX];
michael@310 228
michael@311 229 + if (!ast_test_flag64(confflags, CONFFLAG_USERNAME)
michael@310 230 + && !ast_strlen_zero(optargs[OPT_ARG_USERNAME])
michael@310 231 + && ast_fileexists(optargs[OPT_ARG_USERNAME], NULL, NULL))
michael@310 232 + snprintf(destdir, sizeof(destdir), "%s", optargs[OPT_ARG_USERNAME]);
michael@310 233 + else {
michael@202 234 +
michael@310 235 snprintf(destdir, sizeof(destdir), "%s/meetme", ast_config_AST_SPOOL_DIR);
michael@310 236
michael@310 237 if (ast_mkdir(destdir, 0777) != 0) {
michael@405 238 @@ -2469,6 +2478,7 @@
michael@310 239 res = ast_record_review(chan, "vm-rec-name", user->namerecloc, 10, "sln", &duration, NULL);
michael@310 240 if (res == -1)
michael@310 241 goto outrun;
michael@310 242 + }
michael@310 243 }
michael@310 244
michael@310 245 ast_mutex_lock(&conf->playlock);
michael@311 246 Index: apps/app_voicemail.c
michael@311 247 diff -Nau apps/app_voicemail.c.orig apps/app_voicemail.c
michael@405 248 --- apps/app_voicemail.c.orig 2012-01-25 23:21:30.000000000 +0100
michael@405 249 +++ apps/app_voicemail.c 2012-03-18 17:47:07.888451260 +0100
michael@405 250 @@ -376,6 +376,7 @@
michael@311 251 static char imapport[8];
michael@311 252 static char imapflags[128];
michael@311 253 static char imapfolder[64];
michael@311 254 +static int imapsubfold = 0;
michael@311 255 static char imapparentfolder[64] = "\0";
michael@311 256 static char greetingfolder[64];
michael@311 257 static char authuser[32];
michael@552 258 @@ -2527,7 +2528,7 @@
michael@310 259 }
michael@310 260
michael@311 261 /* Build up server information */
michael@311 262 - ast_build_string(&t, &left, "{%s:%s/imap", imapserver, imapport);
michael@311 263 + ast_build_string(&t, &left, "{%s:%s", imapserver, imapport);
michael@310 264
michael@311 265 /* Add authentication user if present */
michael@311 266 if (!ast_strlen_zero(authuser))
michael@552 267 @@ -6193,6 +6194,7 @@
michael@311 268 /* simple. huh? */
michael@311 269 char sequence[10];
michael@311 270 char mailbox[256];
michael@311 271 + char folder[256];
michael@311 272 int res;
michael@311 273
michael@311 274 /* get the real IMAP message number for this message */
michael@552 275 @@ -6208,10 +6210,24 @@
michael@311 276 mail_setflag(vms->mailstream, sequence, "\\Unseen");
michael@311 277 mail_clearflag(vms->mailstream, sequence, "\\Seen");
michael@311 278 }
michael@311 279 - if (!strcasecmp(mbox(vmu, NEW_FOLDER), vms->curbox) && (box == NEW_FOLDER || box == OLD_FOLDER)) {
michael@311 280 - ast_mutex_unlock(&vms->lock);
michael@311 281 +
michael@311 282 + if ((!strcasecmp(mbox(vmu, NEW_FOLDER), vms->curbox) || \
michael@311 283 + !strcasecmp(mbox(vmu, OLD_FOLDER), vms->curbox)) && \
michael@311 284 + (box == NEW_FOLDER || box == OLD_FOLDER)) { /* Don't copy data, */
michael@311 285 + ast_mutex_unlock(&vms->lock); /* just change Seen flag */
michael@311 286 return 0;
michael@311 287 + } else if (box != NEW_FOLDER && box != OLD_FOLDER) { /* Do copy data */
michael@311 288 + if (imapsubfold == 1) /* using INBOX or subfolder */
michael@311 289 + snprintf(folder, sizeof(folder), "%s%c%s", imapfolder, delimiter, mbox(vmu, box));
michael@311 290 + else
michael@311 291 + strncpy(folder, mbox(vmu, box), sizeof(folder));
michael@311 292 + int res = !mail_copy(vms->mailstream,sequence,folder);
michael@311 293 + ast_mutex_unlock(&vms->lock);
michael@311 294 + return res;
michael@311 295 + } else { /* Copy data to INBOX delegating new/old status to Seen flag */
michael@311 296 + int res = !mail_copy(vms->mailstream,sequence,imapfolder);
michael@311 297 }
michael@311 298 +
michael@311 299 /* Create the folder if it don't exist */
michael@311 300 imap_mailbox_name(mailbox, sizeof(mailbox), vms, box, 1); /* Get the full mailbox name */
michael@311 301 ast_debug(5, "Checking if folder exists: %s\n", mailbox);
michael@712 302 @@ -7290,7 +7306,11 @@
michael@712 303 int oldmsgs;
michael@712 304 int newmsgs;
michael@712 305 int capacity;
michael@712 306 - if (inboxcount(s, &newmsgs, &oldmsgs)) {
michael@712 307 + char *msgcnt = 0;
michael@712 308 + msgcnt = ast_strdupa(s); /* inboxcount needs username copy */
michael@712 309 + strcat(msgcnt, "@"); /* because internally it inspects */
michael@712 310 + strcat(msgcnt, context); /* the context which is not in 's' */
michael@712 311 + if (inboxcount(msgcnt, &newmsgs, &oldmsgs)) {
michael@712 312 ast_log(LOG_ERROR, "Problem in calculating number of voicemail messages available for extension %s\n", s);
michael@712 313 /* Shouldn't happen, but allow trying another extension if it does */
michael@712 314 res = ast_play_and_wait(chan, "pbx-invalid");
michael@712 315 @@ -10281,7 +10301,7 @@
michael@712 316
michael@712 317 case '5': /* Leave VoiceMail */
michael@712 318 if (ast_test_flag(vmu, VM_SVMAIL)) {
michael@712 319 - cmd = forward_message(chan, context, &vms, vmu, vmfmts, 1, record_gain, 0);
michael@712 320 + cmd = forward_message(chan, vmu->context, &vms, vmu, vmfmts, 1, record_gain, 0);
michael@712 321 if (cmd == ERROR_LOCK_PATH || cmd == OPERATOR_EXIT) {
michael@712 322 res = cmd;
michael@712 323 goto out;
michael@712 324 @@ -10464,7 +10484,7 @@
michael@712 325
michael@712 326 case '8': /* Forward the current message */
michael@712 327 if (vms.lastmsg > -1) {
michael@712 328 - cmd = forward_message(chan, context, &vms, vmu, vmfmts, 0, record_gain, in_urgent);
michael@712 329 + cmd = forward_message(chan, vmu->context, &vms, vmu, vmfmts, 0, record_gain, in_urgent);
michael@712 330 if (cmd == ERROR_LOCK_PATH) {
michael@712 331 res = cmd;
michael@712 332 goto out;
michael@712 333 @@ -10517,6 +10537,10 @@
michael@311 334 #ifndef IMAP_STORAGE
michael@311 335 } else if (!cmd) {
michael@311 336 vms.deleted[vms.curmsg] = 1;
michael@311 337 +#else
michael@311 338 + } else if (!cmd && (folder_int(vms.curbox) > 1 || box > 1)) {
michael@311 339 + vms.deleted[vms.curmsg] = 1; /* Enforce deletion after */
michael@311 340 + deleted = 1; /* successful copy op */
michael@311 341 #endif
michael@311 342 } else {
michael@311 343 vms.deleted[vms.curmsg] = 0;
michael@712 344 @@ -12046,6 +12070,15 @@
michael@311 345 } else {
michael@311 346 ast_copy_string(imapfolder, "INBOX", sizeof(imapfolder));
michael@311 347 }
michael@311 348 + /* IMAP saved (sub)folder location policy */
michael@311 349 + if ((val = ast_variable_retrieve(cfg, "general", "imapsubfold"))) {
michael@311 350 + if (ast_false(val))
michael@311 351 + imapsubfold = 0;
michael@311 352 + else
michael@311 353 + imapsubfold = 1;
michael@311 354 + } else {
michael@311 355 + imapsubfold = 0;
michael@311 356 + }
michael@311 357 if ((val = ast_variable_retrieve(cfg, "general", "imapparentfolder"))) {
michael@311 358 ast_copy_string(imapparentfolder, val, sizeof(imapparentfolder));
michael@311 359 }
michael@362 360 Index: cdr/cdr_radius.c
michael@362 361 diff -Nau cdr/cdr_radius.c.orig cdr/cdr_radius.c
michael@362 362 --- cdr/cdr_radius.c.orig 2011-07-14 22:13:06.000000000 +0200
michael@405 363 +++ cdr/cdr_radius.c 2012-03-18 17:47:07.888451260 +0100
michael@362 364 @@ -106,10 +106,18 @@
michael@362 365 if (!rc_avpair_add(rh, tosend, PW_AST_SRC, &cdr->src, strlen(cdr->src), VENDOR_CODE))
michael@362 366 return -1;
michael@362 367
michael@362 368 + /* RADIUS standard identifier patch */
michael@362 369 + if (!rc_avpair_add(rh, tosend, PW_CALLING_STATION_ID, &cdr->src, strlen(cdr->src), 0))
michael@362 370 + return -1;
michael@362 371 +
michael@362 372 /* Destination */
michael@362 373 if (!rc_avpair_add(rh, tosend, PW_AST_DST, &cdr->dst, strlen(cdr->dst), VENDOR_CODE))
michael@362 374 return -1;
michael@362 375
michael@362 376 + /* RADIUS standard identifier patch */
michael@362 377 + if (!rc_avpair_add(rh, tosend, PW_CALLED_STATION_ID, &cdr->dst, strlen(cdr->dst), 0))
michael@362 378 + return -1;
michael@362 379 +
michael@362 380 /* Destination context */
michael@362 381 if (!rc_avpair_add(rh, tosend, PW_AST_DST_CTX, &cdr->dcontext, strlen(cdr->dcontext), VENDOR_CODE))
michael@362 382 return -1;
michael@362 383 @@ -164,6 +172,10 @@
michael@362 384 if (!rc_avpair_add(rh, tosend, PW_AST_BILL_SEC, &cdr->billsec, 0, VENDOR_CODE))
michael@362 385 return -1;
michael@362 386
michael@362 387 + /* RADIUS standard identifier patch */
michael@362 388 + if (!rc_avpair_add(rh, tosend, PW_ACCT_SESSION_TIME, &cdr->billsec, 0, 0))
michael@362 389 + return -1;
michael@362 390 +
michael@362 391 /* Disposition */
michael@362 392 tmp = ast_cdr_disp2str(cdr->disposition);
michael@362 393 if (!rc_avpair_add(rh, tosend, PW_AST_DISPOSITION, tmp, strlen(tmp), VENDOR_CODE))
michael@362 394 @@ -187,10 +199,14 @@
michael@362 395 }
michael@362 396
michael@362 397 /* Setting Acct-Session-Id & User-Name attributes for proper generation
michael@362 398 - of Acct-Unique-Session-Id on server side */
michael@362 399 - /* Channel */
michael@362 400 - if (!rc_avpair_add(rh, tosend, PW_USER_NAME, &cdr->channel, strlen(cdr->channel), 0))
michael@362 401 - return -1;
michael@362 402 + of Acct-Unique-Session-Id on server side Channel */
michael@362 403 + {
michael@362 404 + char szChanuser[PATH_MAX] = {0};
michael@362 405 + strncpy(szChanuser, &cdr->channel, PATH_MAX-1);
michael@362 406 + *(strrchr(szChanuser, '-')) = 0;
michael@362 407 + if (!rc_avpair_add(rh, tosend, PW_USER_NAME, szChanuser, strlen(cdr->channel), 0))
michael@362 408 + return -1;
michael@362 409 + }
michael@362 410
michael@362 411 /* Unique ID */
michael@362 412 if (!rc_avpair_add(rh, tosend, PW_ACCT_SESSION_ID, &cdr->uniqueid, strlen(cdr->uniqueid), 0))
michael@552 413 Index: chan_capi-1.1.5.20120615/chan_capi20.h
michael@552 414 diff -Nau chan_capi-1.1.5.20120615/chan_capi20.h.orig chan_capi-1.1.5.20120615/chan_capi20.h
michael@552 415 --- chan_capi-1.1.5.20120615/chan_capi20.h.orig 2005-09-20 20:33:40.000000000 +0200
michael@552 416 +++ chan_capi-1.1.5.20120615/chan_capi20.h 2012-03-18 17:47:07.888451260 +0100
michael@311 417 @@ -4,10 +4,13 @@
michael@311 418 * first. Else the checks below will fail.
michael@311 419 */
michael@311 420
michael@311 421 +#include <stddef.h>
michael@311 422 #include <capi20.h>
michael@310 423
michael@310 424 #undef CAPI_OS_HINT
michael@310 425
michael@310 426 +#ifndef USE_OWN_LIBCAPI
michael@310 427 +
michael@310 428 #if (defined(__FreeBSD__) || defined(__OpenBSD__) || \
michael@310 429 defined(__NetBSD__) || defined(__APPLE__))
michael@310 430
michael@311 431 @@ -29,6 +32,8 @@
michael@310 432 #include <capiutils.h>
michael@310 433 #endif /* BSD */
michael@310 434
michael@202 435 +#endif
michael@202 436 +
michael@310 437 #ifndef HEADER_CID
michael@310 438 #define HEADER_CID(x) ((x)->adr.adrNCCI)
michael@310 439 #endif
michael@552 440 Index: chan_capi-1.1.5.20120615/chan_capi_utils.c
michael@552 441 diff -Nau chan_capi-1.1.5.20120615/chan_capi_utils.c.orig chan_capi-1.1.5.20120615/chan_capi_utils.c
michael@552 442 --- chan_capi-1.1.5.20120615/chan_capi_utils.c.orig 2011-08-07 16:31:05.000000000 +0200
michael@552 443 +++ chan_capi-1.1.5.20120615/chan_capi_utils.c 2012-03-18 17:47:07.888451260 +0100
michael@414 444 @@ -1160,6 +1160,9 @@
michael@310 445 {
michael@310 446 MESSAGE_EXCHANGE_ERROR error;
michael@310 447 int waitcount = 50;
michael@310 448 +#ifndef CAPI_MANUFACTURER_LEN
michael@310 449 +#define CAPI_MANUFACTURER_LEN 64
michael@310 450 +#endif
michael@310 451 unsigned char manbuf[CAPI_MANUFACTURER_LEN];
michael@310 452 _cmsg CMSG;
michael@310 453
michael@552 454 Index: chan_capi-1.1.5.20120615/libcapi20/capi20.c
michael@552 455 diff -Nau chan_capi-1.1.5.20120615/libcapi20/capi20.c.orig chan_capi-1.1.5.20120615/libcapi20/capi20.c
michael@552 456 --- chan_capi-1.1.5.20120615/libcapi20/capi20.c.orig 2010-02-17 20:10:53.000000000 +0100
michael@552 457 +++ chan_capi-1.1.5.20120615/libcapi20/capi20.c 2012-03-18 17:47:07.888451260 +0100
michael@310 458 @@ -19,8 +19,10 @@
michael@310 459 #include <stdio.h>
michael@310 460 #include <ctype.h>
michael@310 461 #include <assert.h>
michael@310 462 +#ifdef __linux__
michael@310 463 #define _LINUX_LIST_H
michael@310 464 #include <linux/capi.h>
michael@310 465 +#endif
michael@310 466
michael@310 467 #include <sys/socket.h>
michael@310 468 #include <netinet/in.h>
michael@310 469 @@ -48,17 +50,23 @@
michael@310 470
michael@310 471 #define SEND_BUFSIZ (128+2048)
michael@310 472
michael@202 473 +#if 0
michael@310 474 static char capidevname[] = "/dev/capi20";
michael@310 475 static char capidevnamenew[] = "/dev/isdn/capi20";
michael@310 476 +#endif
michael@310 477
michael@310 478 static int capi_fd = -1;
michael@310 479 +#if 0
michael@310 480 static capi_ioctl_struct ioctl_data;
michael@310 481 +#endif
michael@310 482
michael@310 483 static int remote_capi;
michael@310 484 +#if 0
michael@310 485 static char *globalconfigfilename = "/etc/capi20.conf";
michael@310 486 static char *userconfigfilename = ".capi20rc";
michael@310 487 static unsigned short int port;
michael@310 488 static char hostname[1024];
michael@310 489 +#endif
michael@310 490 static int tracelevel;
michael@310 491 static char *tracefile;
michael@310 492
michael@310 493 @@ -77,17 +85,21 @@
michael@310 494 #define RCAPI_AUTH_USER_REQ CAPICMD(0xff, 0x00)
michael@310 495 #define RCAPI_AUTH_USER_CONF CAPICMD(0xff, 0x01)
michael@310 496
michael@310 497 +#if 0
michael@310 498 static char *skip_whitespace(char *s)
michael@310 499 {
michael@310 500 while (*s && isspace(*s)) s++;
michael@310 501 return s;
michael@310 502 }
michael@310 503 +#endif
michael@310 504
michael@310 505 +#if 0
michael@310 506 static char *skip_nonwhitespace(char *s)
michael@310 507 {
michael@310 508 while (*s && !isspace(*s)) s++;
michael@310 509 return s;
michael@310 510 }
michael@310 511 +#endif
michael@310 512
michael@310 513 static unsigned char get_byte(unsigned char **p)
michael@310 514 {
michael@310 515 @@ -95,10 +107,12 @@
michael@310 516 return((unsigned char)*(*p - 1));
michael@310 517 }
michael@310 518
michael@310 519 +#if 0
michael@310 520 static unsigned short get_word(unsigned char **p)
michael@310 521 {
michael@310 522 return(get_byte(p) | (get_byte(p) << 8));
michael@310 523 }
michael@310 524 +#endif
michael@310 525
michael@310 526 static unsigned short get_netword(unsigned char **p)
michael@310 527 {
michael@310 528 @@ -144,6 +158,7 @@
michael@310 529 * read config file
michael@310 530 */
michael@310 531
michael@310 532 +#if 0
michael@310 533 static int read_config(void)
michael@310 534 {
michael@310 535 FILE *fp = NULL;
michael@310 536 @@ -197,11 +212,13 @@
michael@310 537 fclose(fp);
michael@310 538 return(1);
michael@310 539 }
michael@310 540 +#endif
michael@310 541
michael@310 542 /*
michael@310 543 * socket function
michael@310 544 */
michael@310 545
michael@310 546 +#if 0
michael@310 547 static int open_socket(void)
michael@310 548 {
michael@310 549 int fd;
michael@310 550 @@ -225,6 +242,7 @@
michael@310 551 close(fd);
michael@310 552 return(-1);
michael@310 553 }
michael@310 554 +#endif
michael@310 555
michael@310 556 static int socket_read(int fd, unsigned char *buf, int l)
michael@310 557 {
michael@310 558 @@ -328,6 +346,8 @@
michael@310 559 if (likely(capi_fd >= 0))
michael@310 560 return CapiNoError;
michael@310 561
michael@310 562 +#if 0
michael@310 563 +
michael@310 564 /*----- open managment link -----*/
michael@310 565 if (read_config() && (remote_capi)) {
michael@310 566 capi_fd = open_socket();
michael@310 567 @@ -347,6 +367,8 @@
michael@310 568 if (ioctl(capi_fd, CAPI_INSTALLED, 0) == 0)
michael@310 569 return CapiNoError;
michael@310 570
michael@202 571 +#endif
michael@202 572 +
michael@310 573 return CapiRegNotInstalled;
michael@310 574 }
michael@310 575
michael@310 576 @@ -421,6 +443,7 @@
michael@310 577 unsigned char *bufferstart;
michael@310 578 };
michael@310 579
michael@310 580 +#if 0
michael@310 581 static struct applinfo *alloc_buffers(
michael@310 582 unsigned MaxB3Connection,
michael@310 583 unsigned MaxB3Blks,
michael@310 584 @@ -459,6 +482,7 @@
michael@310 585 ap->lastfree->next = 0;
michael@310 586 return ap;
michael@310 587 }
michael@202 588 +#endif
michael@310 589
michael@310 590 static void free_buffers(struct applinfo *ap)
michael@310 591 {
michael@310 592 @@ -576,14 +600,17 @@
michael@310 593 unsigned MaxSizeB3,
michael@310 594 unsigned *ApplID)
michael@310 595 {
michael@310 596 +#if 0
michael@310 597 int applid = 0;
michael@310 598 char buf[PATH_MAX];
michael@310 599 int i, fd = -1;
michael@310 600
michael@310 601 *ApplID = 0;
michael@310 602 +#endif
michael@310 603
michael@310 604 if (capi20_isinstalled() != CapiNoError)
michael@310 605 return CapiRegNotInstalled;
michael@310 606 +#if 0
michael@310 607 if ((!remote_capi) || ((remote_capi) && ((fd = open_socket()) < 0))) {
michael@310 608 if ((fd = open(capidevname, O_RDWR|O_NONBLOCK, 0666)) < 0 &&
michael@310 609 (errno == ENOENT)) {
michael@310 610 @@ -621,6 +648,8 @@
michael@310 611 close(fd);
michael@310 612 return(errcode);
michael@310 613 }
michael@310 614 + }
michael@310 615 +#if 0
michael@310 616 } else if ((applid = ioctl(fd, CAPI_REGISTER, &ioctl_data)) < 0) {
michael@310 617 if (errno == EIO) {
michael@310 618 if (ioctl(fd, CAPI_GET_ERRCODE, &ioctl_data) < 0) {
michael@310 619 @@ -666,6 +695,7 @@
michael@310 620 applid = alloc_applid(fd);
michael@310 621 } // end old driver compatibility
michael@310 622 }
michael@310 623 +#endif
michael@310 624 if (remember_applid(applid, fd) < 0) {
michael@310 625 close(fd);
michael@310 626 return CapiRegOSResourceErr;
michael@310 627 @@ -676,6 +706,7 @@
michael@310 628 return CapiRegOSResourceErr;
michael@310 629 }
michael@310 630 *ApplID = applid;
michael@310 631 +#endif
michael@310 632 return CapiNoError;
michael@310 633 }
michael@310 634
michael@310 635 @@ -784,11 +815,15 @@
michael@310 636 ret = CapiIllAppNr;
michael@310 637 break;
michael@310 638 case EIO:
michael@310 639 +#if 0
michael@310 640 if (ioctl(fd, CAPI_GET_ERRCODE, &ioctl_data) < 0) {
michael@310 641 +#endif
michael@310 642 ret = CapiMsgOSResourceErr;
michael@310 643 +#if 0
michael@310 644 } else {
michael@310 645 ret = (unsigned)ioctl_data.errcode;
michael@310 646 }
michael@310 647 +#endif
michael@310 648 break;
michael@310 649 default:
michael@310 650 ret = CapiMsgOSResourceErr;
michael@310 651 @@ -842,7 +877,7 @@
michael@310 652 rcvbuf[15] = (data >> 24) & 0xff;
michael@310 653 } else {
michael@310 654 u_int64_t data;
michael@310 655 - ulong radr = (ulong)rcvbuf;
michael@310 656 + unsigned long radr = (unsigned long)rcvbuf;
michael@310 657 if (CAPIMSG_LEN(rcvbuf) < 30) {
michael@310 658 /*
michael@310 659 * grr, 64bit arch, but no data64 included,
michael@310 660 @@ -899,6 +934,9 @@
michael@310 661 {
michael@310 662 if (capi20_isinstalled() != CapiNoError)
michael@310 663 return 0;
michael@310 664 +#ifndef CAPI_MANUFACTURER_LEN
michael@310 665 +#define CAPI_MANUFACTURER_LEN 64
michael@310 666 +#endif
michael@310 667
michael@310 668 if (remote_capi) {
michael@310 669 unsigned char buf[100];
michael@310 670 @@ -911,15 +949,19 @@
michael@310 671 return Buf;
michael@310 672 }
michael@310 673
michael@310 674 +#if 0
michael@310 675 ioctl_data.contr = Ctrl;
michael@310 676
michael@310 677 if (ioctl(capi_fd, CAPI_GET_MANUFACTURER, &ioctl_data) < 0)
michael@310 678 +#endif
michael@310 679 return 0;
michael@310 680
michael@310 681 +#if 0
michael@310 682 memcpy(Buf, ioctl_data.manufacturer, CAPI_MANUFACTURER_LEN);
michael@310 683 Buf[CAPI_MANUFACTURER_LEN-1] = 0;
michael@310 684
michael@310 685 return Buf;
michael@310 686 +#endif
michael@310 687 }
michael@310 688
michael@310 689 unsigned char *
michael@310 690 @@ -934,16 +976,20 @@
michael@310 691 set_rcapicmd_header(&p, 14, RCAPI_GET_VERSION_REQ, Ctrl);
michael@310 692 if(!(remote_command(capi_fd, buf, 14, RCAPI_GET_VERSION_CONF)))
michael@310 693 return 0;
michael@310 694 - memcpy(Buf, buf + 1, sizeof(capi_version));
michael@310 695 + memcpy(Buf, buf + 1, 128 /* sizeof(capi_version) */);
michael@310 696 return Buf;
michael@310 697 }
michael@310 698
michael@310 699 +#if 0
michael@310 700 ioctl_data.contr = Ctrl;
michael@310 701 if (ioctl(capi_fd, CAPI_GET_VERSION, &ioctl_data) < 0) {
michael@310 702 +#endif
michael@310 703 return 0;
michael@310 704 +#if 0
michael@310 705 }
michael@310 706 memcpy(Buf, &ioctl_data.version, sizeof(capi_version));
michael@310 707 return Buf;
michael@310 708 +#endif
michael@310 709 }
michael@310 710
michael@310 711 unsigned char *
michael@310 712 @@ -952,6 +998,10 @@
michael@310 713 if (capi20_isinstalled() != CapiNoError)
michael@310 714 return 0;
michael@310 715
michael@310 716 +#ifndef CAPI_SERIAL_LEN
michael@310 717 +#define CAPI_SERIAL_LEN 8
michael@202 718 +#endif
michael@202 719 +
michael@310 720 if (remote_capi) {
michael@310 721 unsigned char buf[100];
michael@310 722 unsigned char *p = buf;
michael@310 723 @@ -963,15 +1013,19 @@
michael@310 724 return Buf;
michael@310 725 }
michael@310 726
michael@310 727 +#if 0
michael@310 728 ioctl_data.contr = Ctrl;
michael@310 729
michael@310 730 if (ioctl(capi_fd, CAPI_GET_SERIAL, &ioctl_data) < 0)
michael@202 731 +#endif
michael@310 732 return 0;
michael@310 733
michael@202 734 +#if 0
michael@310 735 memcpy(Buf, &ioctl_data.serial, CAPI_SERIAL_LEN);
michael@310 736 Buf[CAPI_SERIAL_LEN-1] = 0;
michael@310 737
michael@310 738 return Buf;
michael@202 739 +#endif
michael@202 740 }
michael@202 741
michael@310 742 unsigned
michael@311 743 @@ -1018,6 +1072,7 @@
michael@310 744 sizeof(ioctl_data.profile.ncontroller));
michael@202 745 }
michael@310 746 return CapiNoError;
michael@310 747 +#endif
michael@310 748 }
michael@310 749 /*
michael@310 750 * functions added to the CAPI2.0 spec
michael@552 751 Index: chan_capi-1.1.5.20120615/libcapi20/convert.c
michael@552 752 diff -Nau chan_capi-1.1.5.20120615/libcapi20/convert.c.orig chan_capi-1.1.5.20120615/libcapi20/convert.c
michael@552 753 --- chan_capi-1.1.5.20120615/libcapi20/convert.c.orig 2010-09-14 21:54:25.000000000 +0200
michael@552 754 +++ chan_capi-1.1.5.20120615/libcapi20/convert.c 2012-03-18 17:47:07.888451260 +0100
michael@310 755 @@ -11,7 +11,14 @@
michael@310 756 #include <stddef.h>
michael@310 757 #include <time.h>
michael@310 758 #include <ctype.h>
michael@310 759 +#ifdef __FreeBSD__
michael@310 760 +#include <sys/endian.h>
michael@310 761 +#define bswap_16 bswap16
michael@310 762 +#define bswap_32 bswap32
michael@310 763 +#define bswap_64 bswap64
michael@310 764 +#else
michael@310 765 #include <byteswap.h>
michael@310 766 +#endif
michael@310 767
michael@310 768 #include "capi20.h"
michael@310 769
michael@552 770 Index: chan_capi-1.1.5.20120615/Makefile
michael@552 771 diff -Nau chan_capi-1.1.5.20120615/Makefile.orig chan_capi-1.1.5.20120615/Makefile
michael@552 772 --- chan_capi-1.1.5.20120615/Makefile.orig 2011-02-04 18:41:46.000000000 +0100
michael@552 773 +++ chan_capi-1.1.5.20120615/Makefile 2012-03-18 17:47:07.888451260 +0100
michael@552 774 @@ -115,6 +115,9 @@
michael@311 775 CFLAGS+=-O2
michael@311 776 CFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
michael@311 777 CFLAGS+=$(shell if uname -m | grep -q "ppc\|arm\|s390"; then echo "-fsigned-char"; fi)
michael@311 778 +ifeq (${USE_OWN_LIBCAPI},yes)
michael@311 779 +CFLAGS+=-DUSE_OWN_LIBCAPI
michael@311 780 +endif
michael@311 781 ifeq (${DIVA_STREAMING},1)
michael@311 782 CFLAGS += -DDIVA_STREAMING=1
michael@311 783 endif
michael@311 784 Index: channels/chan_sip.c
michael@311 785 diff -Nau channels/chan_sip.c.orig channels/chan_sip.c
michael@405 786 --- channels/chan_sip.c.orig 2012-02-28 18:53:34.000000000 +0100
michael@405 787 +++ channels/chan_sip.c 2012-03-18 17:47:07.898462166 +0100
michael@712 788 @@ -12150,7 +12150,16 @@
michael@311 789 } else {
michael@311 790 if (sipmethod == SIP_NOTIFY && !ast_strlen_zero(p->theirtag)) {
michael@311 791 /* If this is a NOTIFY, use the From: tag in the subscribe (RFC 3265) */
michael@311 792 - snprintf(to, sizeof(to), "<%s%s>;tag=%s", (strncasecmp(p->uri, "sip:", 4) ? "sip:" : ""), p->uri, p->theirtag);
michael@311 793 + if (strncasecmp(p->uri, "sip:", strlen("sip:")))
michael@311 794 + if (strncasecmp(p->uri, "sips:", strlen("sips:")))
michael@311 795 + if (p->socket.type == SIP_TRANSPORT_TLS)
michael@311 796 + snprintf(to, sizeof(to), "<%s%s>;tag=%s", "sips:", p->uri, p->theirtag);
michael@311 797 + else
michael@311 798 + snprintf(to, sizeof(to), "<%s%s>;tag=%s", "sips:", p->uri, p->theirtag);
michael@311 799 + else /* if (strncasecmp(p->uri, "sips:"... */
michael@311 800 + snprintf(to, sizeof(to), "<%s%s>;tag=%s", "", p->uri, p->theirtag);
michael@311 801 + else /* if (strncasecmp(p->uri, "sip:"... */
michael@311 802 + snprintf(to, sizeof(to), "<%s%s>;tag=%s", "", p->uri, p->theirtag);
michael@311 803 } else if (p->options && p->options->vxml_url) {
michael@311 804 /* If there is a VXML URL append it to the SIP URL */
michael@311 805 snprintf(to, sizeof(to), "<%s>;%s", p->uri, p->options->vxml_url);
michael@310 806 Index: channels/console_video.h
michael@311 807 diff -Nau channels/console_video.h.orig channels/console_video.h
michael@310 808 --- channels/console_video.h.orig 2008-06-30 17:45:15.000000000 +0200
michael@405 809 +++ channels/console_video.h 2012-03-18 17:47:07.898462166 +0100
michael@310 810 @@ -28,10 +28,7 @@
michael@310 811 "console {device}"
michael@310 812 #else
michael@310 813
michael@310 814 -#include <ffmpeg/avcodec.h>
michael@310 815 -#ifndef OLD_FFMPEG
michael@310 816 -#include <ffmpeg/swscale.h> /* requires a recent ffmpeg */
michael@310 817 -#endif
michael@310 818 +#include <libavcoded/avcodec.h>
michael@310 819
michael@310 820 #define CONSOLE_VIDEO_CMDS \
michael@310 821 "console {videodevice|videocodec" \
michael@310 822 Index: configure
michael@311 823 diff -Nau configure.orig configure
michael@405 824 --- configure.orig 2012-01-14 17:40:17.000000000 +0100
michael@405 825 +++ configure 2012-03-18 17:47:32.518450837 +0100
michael@552 826 @@ -4711,11 +4711,6 @@
michael@311 827 esac
michael@310 828
michael@310 829 case "${host_os}" in
michael@310 830 - freebsd*)
michael@347 831 - ac_default_prefix=/usr/local
michael@310 832 - CPPFLAGS=-I/usr/local/include
michael@310 833 - LDFLAGS=-L/usr/local/lib
michael@310 834 - ;;
michael@310 835 openbsd*)
michael@347 836 ac_default_prefix=/usr/local
michael@310 837 if test ${prefix} = '/usr/local' || test ${prefix} = 'NONE'; then
michael@552 838 @@ -18994,8 +18989,8 @@
michael@311 839 if test -f "${IMAP_TK_DIR}/c-client/LDFLAGS"; then
michael@311 840 imap_ldflags=`cat ${IMAP_TK_DIR}/c-client/LDFLAGS`
michael@311 841 fi
michael@311 842 - imap_libs="${IMAP_TK_DIR}/c-client/c-client.a"
michael@311 843 - imap_include="-I${IMAP_TK_DIR}/c-client"
michael@311 844 + imap_libs="-limap -lssl -lcrypto -lcrypt"
michael@311 845 + imap_include="-DUSE_SYSTEM_IMAP -I${IMAP_TK_DIR}/include/imap"
michael@311 846 CPPFLAGS="${CPPFLAGS} ${imap_include}"
michael@311 847 LIBS="${LIBS} ${imap_libs} "`echo ${imap_ldflags}`
michael@405 848 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
michael@552 849 @@ -26771,7 +26766,7 @@
michael@311 850 pbxlibdir="-L${SQLITE_DIR}"
michael@311 851 fi
michael@311 852 fi
michael@311 853 - pbxfuncname="sqlite_exec"
michael@311 854 + pbxfuncname="sqlite3_exec"
michael@311 855 if test "x${pbxfuncname}" = "x" ; then # empty lib, assume only headers
michael@311 856 AST_SQLITE_FOUND=yes
michael@311 857 else
michael@311 858 Index: formats/format_pcm.c
michael@311 859 diff -Nau formats/format_pcm.c.orig formats/format_pcm.c
michael@362 860 --- formats/format_pcm.c.orig 2011-07-14 22:13:06.000000000 +0200
michael@405 861 +++ formats/format_pcm.c 2012-03-18 17:47:07.898462166 +0100
michael@552 862 @@ -376,6 +376,7 @@
michael@311 863 ast_log(LOG_WARNING, "Unable to write header\n");
michael@311 864 return -1;
michael@311 865 }
michael@311 866 + fflush(f); /* issues.asterisk.org bug 0016610 */
michael@311 867 return 0;
michael@311 868 }
michael@311 869
michael@311 870 Index: formats/format_wav.c
michael@311 871 diff -Nau formats/format_wav.c.orig formats/format_wav.c
michael@405 872 --- formats/format_wav.c.orig 2011-11-09 16:25:33.000000000 +0100
michael@405 873 +++ formats/format_wav.c 2012-03-18 17:47:07.898462166 +0100
michael@552 874 @@ -310,6 +310,7 @@
michael@311 875 ast_log(LOG_WARNING, "Unable to write header\n");
michael@311 876 return -1;
michael@311 877 }
michael@311 878 + fflush(f); /* issues.asterisk.org bug 0016610 */
michael@311 879 return 0;
michael@311 880 }
michael@311 881
michael@311 882 Index: formats/format_wav_gsm.c
michael@311 883 diff -Nau formats/format_wav_gsm.c.orig formats/format_wav_gsm.c
michael@362 884 --- formats/format_wav_gsm.c.orig 2011-07-14 22:13:06.000000000 +0200
michael@405 885 +++ formats/format_wav_gsm.c 2012-03-18 17:47:07.898462166 +0100
michael@362 886 @@ -366,6 +366,7 @@
michael@311 887 ast_log(LOG_WARNING, "Unable to write header\n");
michael@311 888 return -1;
michael@311 889 }
michael@311 890 + fflush(f); /* issues.asterisk.org bug 0016610 */
michael@311 891 return 0;
michael@311 892 }
michael@311 893
michael@311 894 Index: main/db1-ast/hash/hash.h
michael@311 895 diff -Nau main/db1-ast/hash/hash.h.orig main/db1-ast/hash/hash.h
michael@311 896 --- main/db1-ast/hash/hash.h.orig 2006-08-21 04:11:39.000000000 +0200
michael@405 897 +++ main/db1-ast/hash/hash.h 2012-03-18 17:47:07.898462166 +0100
michael@311 898 @@ -36,6 +36,8 @@
michael@311 899 * @(#)hash.h 8.3 (Berkeley) 5/31/94
michael@311 900 */
michael@311 901
michael@311 902 +#include <stdint.h>
michael@311 903 +
michael@311 904 /* Operations */
michael@311 905 typedef enum {
michael@311 906 HASH_GET, HASH_PUT, HASH_PUTNEW, HASH_DELETE, HASH_FIRST, HASH_NEXT
michael@311 907 Index: main/db1-ast/hash/ndbm.c
michael@311 908 diff -Nau main/db1-ast/hash/ndbm.c.orig main/db1-ast/hash/ndbm.c
michael@311 909 --- main/db1-ast/hash/ndbm.c.orig 2006-08-21 04:11:39.000000000 +0200
michael@405 910 +++ main/db1-ast/hash/ndbm.c 2012-03-18 17:47:07.898462166 +0100
michael@311 911 @@ -49,7 +49,8 @@
michael@311 912 #include <string.h>
michael@311 913 #include <stdlib.h>
michael@311 914
michael@311 915 -#include <ndbm.h>
michael@311 916 +#include "../include/ndbm.h"
michael@311 917 +#include "../include/db.h"
michael@311 918 #include "hash.h"
michael@311 919
michael@311 920 /*
michael@311 921 Index: main/features.c
michael@311 922 diff -Nau main/features.c.orig main/features.c
michael@405 923 --- main/features.c.orig 2012-01-23 21:30:21.000000000 +0100
michael@405 924 +++ main/features.c 2012-03-18 17:47:07.898462166 +0100
michael@712 925 @@ -2158,6 +2158,10 @@
michael@552 926 snprintf(args, len, "%s,%s,m", S_OR(touch_format, "wav"), touch_filename);
michael@552 927 }
michael@311 928
michael@552 929 + for(x = 0; x < strlen(touch_filename); x++) {
michael@552 930 + if (args[x] == '/')
michael@552 931 + args[x] = '-';
michael@552 932 + }
michael@552 933 for(x = 0; x < strlen(args); x++) {
michael@552 934 if (args[x] == '/')
michael@552 935 args[x] = '-';
michael@712 936 @@ -2270,6 +2274,10 @@
michael@552 937 snprintf(args, len, "%s.%s,b", touch_filename, S_OR(touch_format, "wav"));
michael@552 938 }
michael@311 939
michael@552 940 + for( x = 0; x < strlen(touch_filename); x++) {
michael@552 941 + if (args[x] == '/')
michael@552 942 + args[x] = '-';
michael@552 943 + }
michael@552 944 for( x = 0; x < strlen(args); x++) {
michael@552 945 if (args[x] == '/')
michael@552 946 args[x] = '-';
michael@311 947 Index: main/file.c
michael@311 948 diff -Nau main/file.c.orig main/file.c
michael@405 949 --- main/file.c.orig 2012-01-05 23:06:46.000000000 +0100
michael@405 950 +++ main/file.c 2012-03-18 17:47:07.898462166 +0100
michael@552 951 @@ -260,7 +260,7 @@
michael@311 952 char *fn = NULL;
michael@311 953
michael@311 954 if (!strcmp(ext, "wav49"))
michael@311 955 - ext = "WAV";
michael@311 956 + ext = "wav";
michael@311 957
michael@311 958 if (filename[0] == '/') {
michael@311 959 if (asprintf(&fn, "%s.%s", filename, ext) < 0) {
michael@310 960 Index: main/Makefile
michael@311 961 diff -Nau main/Makefile.orig main/Makefile
michael@405 962 --- main/Makefile.orig 2011-09-19 22:27:03.000000000 +0200
michael@405 963 +++ main/Makefile 2012-03-18 17:47:07.898462166 +0100
michael@552 964 @@ -66,10 +66,7 @@
michael@310 965 endif
michael@310 966
michael@310 967 ifeq ($(OSARCH),FreeBSD)
michael@310 968 - # -V is understood by BSD Make, not by GNU make.
michael@310 969 - BSDVERSION=$(shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
michael@310 970 - AST_LIBS+=$(shell if test $(BSDVERSION) -lt 502102 ; then echo "-lc_r"; else echo "-pthread"; fi)
michael@310 971 - AST_LIBS+=-lcrypto
michael@310 972 + AST_LIBS+=-lpthread -lcrypto
michael@310 973 endif
michael@310 974
michael@310 975 ifneq ($(findstring $(OSARCH), mingw32 cygwin ),)
michael@310 976 Index: main/tcptls.c
michael@311 977 diff -Nau main/tcptls.c.orig main/tcptls.c
michael@405 978 --- main/tcptls.c.orig 2011-11-30 22:41:31.000000000 +0100
michael@405 979 +++ main/tcptls.c 2012-03-18 17:47:07.898462166 +0100
michael@552 980 @@ -391,6 +391,7 @@
michael@310 981 if (!ast_strlen_zero(cfg->cafile) || !ast_strlen_zero(cfg->capath)) {
michael@310 982 if (SSL_CTX_load_verify_locations(cfg->ssl_ctx, S_OR(cfg->cafile, NULL), S_OR(cfg->capath,NULL)) == 0)
michael@310 983 ast_verb(0, "SSL CA file(%s)/path(%s) error\n", cfg->cafile, cfg->capath);
michael@310 984 + SSL_CTX_set_client_CA_list(cfg->ssl_ctx, S_OR(cfg->cafile, NULL));
michael@202 985 }
michael@202 986
michael@310 987 ast_verb(0, "SSL certificate ok\n");
michael@311 988 Index: main/udptl.c
michael@311 989 diff -Nau main/udptl.c.orig main/udptl.c
michael@405 990 --- main/udptl.c.orig 2011-10-06 19:49:38.000000000 +0200
michael@405 991 +++ main/udptl.c 2012-03-18 17:47:07.898462166 +0100
michael@552 992 @@ -101,6 +101,18 @@
michael@311 993
michael@311 994 #define UDPTL_BUF_MASK 15
michael@311 995
michael@311 996 +/*! Copied from chan_oss.c, corrects link errors:
michael@311 997 +udptl.o: In function `calculate_local_max_datagram':
michael@311 998 +main/udptl.c:740: undefined reference to `MIN'
michael@311 999 +udptl.o: In function `calculate_far_max_ifp':
michael@311 1000 +main/udptl.c:770: undefined reference to `MAX' */
michael@311 1001 +#ifndef MIN
michael@311 1002 +#define MIN(a,b) ((a) < (b) ? (a) : (b))
michael@311 1003 +#endif
michael@311 1004 +#ifndef MAX
michael@311 1005 +#define MAX(a,b) ((a) > (b) ? (a) : (b))
michael@311 1006 +#endif
michael@311 1007 +
michael@311 1008 typedef struct {
michael@311 1009 int buf_len;
michael@311 1010 uint8_t buf[LOCAL_FAX_MAX_DATAGRAM];
michael@311 1011 Index: Makefile
michael@311 1012 diff -Nau Makefile.orig Makefile
michael@405 1013 --- Makefile.orig 2011-10-05 00:54:15.000000000 +0200
michael@405 1014 +++ Makefile 2012-03-18 17:47:07.898462166 +0100
michael@552 1015 @@ -186,12 +186,6 @@
michael@552 1016 _ASTCFLAGS+=-isystem /usr/local/include
michael@311 1017 endif
michael@311 1018
michael@311 1019 -ifeq ($(OSARCH),FreeBSD)
michael@311 1020 - # -V is understood by BSD Make, not by GNU make.
michael@311 1021 - BSDVERSION=$(shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
michael@311 1022 - _ASTCFLAGS+=$(shell if test $(BSDVERSION) -lt 500016 ; then echo "-D_THREAD_SAFE"; fi)
michael@311 1023 -endif
michael@311 1024 -
michael@311 1025 ifeq ($(OSARCH),NetBSD)
michael@311 1026 _ASTCFLAGS+=-pthread -I/usr/pkg/include
michael@311 1027 endif

mercurial