[asterisk-commits] russell: branch mogorman/asterisk-transcoder-1.2 r51032 - in /team/mogorman/a...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Mon Jan 15 17:40:59 MST 2007


Author: russell
Date: Mon Jan 15 18:40:58 2007
New Revision: 51032

URL: http://svn.digium.com/view/asterisk?view=rev&rev=51032
Log:
Merged revisions 49833,49889,49922,50150,50227,50295,50335,50495,50506,50517,50561,50781,50946,50987 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r49833 | tilghman | 2007-01-07 15:43:10 -0600 (Sun, 07 Jan 2007) | 2 lines

If openstream fails, then we crash (Issue 8564)

........
r49889 | file | 2007-01-07 23:10:07 -0600 (Sun, 07 Jan 2007) | 2 lines

Ensure we use the default refresh value of 60 if the remote server does not send one. (issue #8746 reported by maethor)

........
r49922 | crichter | 2007-01-08 02:37:08 -0600 (Mon, 08 Jan 2007) | 1 line

make gcc 4 happy, remove some warnings
........
r50150 | tilghman | 2007-01-09 07:30:04 -0600 (Tue, 09 Jan 2007) | 4 lines

The advent of realtime has enabled people to use commas in the fullname field.
This could cause an issue with sending voicemails, when the field is unquoted.
(Issue 8595)

........
r50227 | russell | 2007-01-09 20:16:45 -0600 (Tue, 09 Jan 2007) | 6 lines

Make the number that represents the major version number a single digit instead
of 2.  Using two digits makes it an octal number when put into version.h, which
breaks the compilation of any out of tree module that checks the version for
any version after 1.2.7 (reported by Matteo Brancaleoni on the asterisk-dev
mailing list, who gave credit to vihai for pointing it out)

........
r50295 | file | 2007-01-09 22:51:06 -0600 (Tue, 09 Jan 2007) | 2 lines

Add another return value to dial_exec_full that indicates execution is going to continuing at a new extension/context/priority and to just let it slide. (issue #8598 reported by jon)

........
r50335 | crichter | 2007-01-10 03:51:00 -0600 (Wed, 10 Jan 2007) | 1 line

more fixes regarding warnings for gcc-4 and first additions for the restart Information element, in the first step we initiate a restart with a CLI command
........
r50495 | crichter | 2007-01-11 07:27:52 -0600 (Thu, 11 Jan 2007) | 6 lines

* more additions to make the RESTART message work
* added fix for misdn_call to allow SETUPs with empty 
  extensions, replaced the strtok_r functions with strsep for that 
  (inspired by Sandro Cappellazzo, thanks)


........
r50506 | crichter | 2007-01-11 08:45:38 -0600 (Thu, 11 Jan 2007) | 1 line

when we get L2 UP, the L1 is UP definitely too, so we set the L1 state up as well.
........
r50517 | oej | 2007-01-11 12:11:09 -0600 (Thu, 11 Jan 2007) | 2 lines

Issue #8793 bad response for Unsupported Extension (different fix).

........
r50561 | kpfleming | 2007-01-12 08:34:15 -0600 (Fri, 12 Jan 2007) | 2 lines

minor documentation clarification

........
r50781 | tilghman | 2007-01-13 23:01:16 -0600 (Sat, 13 Jan 2007) | 2 lines

Bug 8814 - db should look for its header using a relative path, instead of the system path (Fixes FreeWRT)

........
r50946 | mogorman | 2007-01-15 14:44:53 -0600 (Mon, 15 Jan 2007) | 4 lines

Solves issue with forwarding voicemails from folders other than inbox.
patch by anthonyl.


........
r50987 | tilghman | 2007-01-15 17:09:02 -0600 (Mon, 15 Jan 2007) | 2 lines

Check return value before dereferencing (Bug 8822)

........

Modified:
    team/mogorman/asterisk-transcoder-1.2/   (props changed)
    team/mogorman/asterisk-transcoder-1.2/Makefile
    team/mogorman/asterisk-transcoder-1.2/apps/app_dial.c
    team/mogorman/asterisk-transcoder-1.2/apps/app_dictate.c
    team/mogorman/asterisk-transcoder-1.2/apps/app_groupcount.c
    team/mogorman/asterisk-transcoder-1.2/apps/app_voicemail.c
    team/mogorman/asterisk-transcoder-1.2/channels/chan_iax2.c
    team/mogorman/asterisk-transcoder-1.2/channels/chan_misdn.c
    team/mogorman/asterisk-transcoder-1.2/channels/chan_sip.c
    team/mogorman/asterisk-transcoder-1.2/channels/misdn/fac.c
    team/mogorman/asterisk-transcoder-1.2/channels/misdn/ie.c
    team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_lib.c
    team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_lib.h
    team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_msg_parser.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/btree/bt_close.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/btree/bt_conv.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/btree/bt_debug.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/btree/bt_delete.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/btree/bt_get.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/btree/bt_open.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/btree/bt_overflow.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/btree/bt_page.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/btree/bt_put.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/btree/bt_search.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/btree/bt_seq.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/btree/bt_split.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/btree/bt_utils.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/db/db.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/hash/hash.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/hash/hash_bigkey.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/hash/hash_buf.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/hash/hash_func.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/hash/hash_log2.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/hash/hash_page.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/hash/hsearch.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/include/ndbm.h
    team/mogorman/asterisk-transcoder-1.2/db1-ast/mpool/mpool.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/recno/rec_close.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/recno/rec_delete.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/recno/rec_get.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/recno/rec_open.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/recno/rec_put.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/recno/rec_search.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/recno/rec_seq.c
    team/mogorman/asterisk-transcoder-1.2/db1-ast/recno/rec_utils.c
    team/mogorman/asterisk-transcoder-1.2/pbx.c

Propchange: team/mogorman/asterisk-transcoder-1.2/
------------------------------------------------------------------------------
    automerge = *

Propchange: team/mogorman/asterisk-transcoder-1.2/
------------------------------------------------------------------------------
    automerge-email = mogorman at digium.com

Propchange: team/mogorman/asterisk-transcoder-1.2/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Mon Jan 15 18:40:58 2007
@@ -1,1 +1,1 @@
-/branches/1.2:1-49702
+/branches/1.2:1-51031

Modified: team/mogorman/asterisk-transcoder-1.2/Makefile
URL: http://svn.digium.com/view/asterisk/team/mogorman/asterisk-transcoder-1.2/Makefile?view=diff&rev=51032&r1=51031&r2=51032
==============================================================================
--- team/mogorman/asterisk-transcoder-1.2/Makefile (original)
+++ team/mogorman/asterisk-transcoder-1.2/Makefile Mon Jan 15 18:40:58 2007
@@ -317,7 +317,7 @@
 
 ifneq ($(wildcard .version),)
   ASTERISKVERSION:=$(shell cat .version)
-  ASTERISKVERSIONNUM:=$(shell awk -F. '{printf "%02d%02d%02d", $$1, $$2, $$3}' .version)
+  ASTERISKVERSIONNUM:=$(shell awk -F. '{printf "%01d%02d%02d", $$1, $$2, $$3}' .version)
   RPMVERSION:=$(shell sed 's/[-\/:]/_/g' .version)
 else
   RPMVERSION=unknown

Modified: team/mogorman/asterisk-transcoder-1.2/apps/app_dial.c
URL: http://svn.digium.com/view/asterisk/team/mogorman/asterisk-transcoder-1.2/apps/app_dial.c?view=diff&rev=51032&r1=51031&r2=51032
==============================================================================
--- team/mogorman/asterisk-transcoder-1.2/apps/app_dial.c (original)
+++ team/mogorman/asterisk-transcoder-1.2/apps/app_dial.c Mon Jan 15 18:40:58 2007
@@ -1470,7 +1470,7 @@
 			ast_pbx_start(peer);
 			hanguptree(outgoing, NULL);
 			LOCAL_USER_REMOVE(u);
-			return 0;
+			return 1;
 		}
 
 		if (ast_test_flag(&opts, OPT_CALLEE_MACRO) && !ast_strlen_zero(opt_args[OPT_ARG_CALLEE_MACRO])) {
@@ -1649,8 +1649,12 @@
 static int dial_exec(struct ast_channel *chan, void *data)
 {
 	struct ast_flags peerflags;
+	int res = 0;
+
 	memset(&peerflags, 0, sizeof(peerflags));
-	return dial_exec_full(chan, data, &peerflags);
+	res = dial_exec_full(chan, data, &peerflags);
+
+	return (res >= 0 ? 0 : -1);
 }
 
 static int retrydial_exec(struct ast_channel *chan, void *data)
@@ -1719,7 +1723,10 @@
 		if (ast_test_flag(chan, AST_FLAG_MOH))
 			ast_moh_stop(chan);
 
-		if ((res = dial_exec_full(chan, dialdata, &peerflags)) == 0) {
+		res = dial_exec_full(chan, dialdata, &peerflags);
+		if (res == 1) {
+			break;
+		} else if (res == 0) {
 			if (ast_test_flag(&peerflags, OPT_DTMF_EXIT)) {
 				if (!(res = ast_streamfile(chan, announce, chan->language)))
 					res = ast_waitstream(chan, AST_DIGIT_ANY);
@@ -1755,7 +1762,7 @@
 		ast_moh_stop(chan);
 
 	LOCAL_USER_REMOVE(u);
-	return loops ? res : 0;
+	return loops ? (res >= 0 ? 0 : -1) : 0;
 
 }
 

Modified: team/mogorman/asterisk-transcoder-1.2/apps/app_dictate.c
URL: http://svn.digium.com/view/asterisk/team/mogorman/asterisk-transcoder-1.2/apps/app_dictate.c?view=diff&rev=51032&r1=51031&r2=51032
==============================================================================
--- team/mogorman/asterisk-transcoder-1.2/apps/app_dictate.c (original)
+++ team/mogorman/asterisk-transcoder-1.2/apps/app_dictate.c Mon Jan 15 18:40:58 2007
@@ -257,7 +257,8 @@
 						if (lastop != DFLAG_PLAY) {
 							lastop = DFLAG_PLAY;
 							ast_closestream(fs);
-							fs = ast_openstream(chan, path, chan->language);
+							if (!(fs = ast_openstream(chan, path, chan->language)))
+								break;
 							ast_seekstream(fs, samples, SEEK_SET);
 							chan->stream = NULL;
 						}

Modified: team/mogorman/asterisk-transcoder-1.2/apps/app_groupcount.c
URL: http://svn.digium.com/view/asterisk/team/mogorman/asterisk-transcoder-1.2/apps/app_groupcount.c?view=diff&rev=51032&r1=51031&r2=51032
==============================================================================
--- team/mogorman/asterisk-transcoder-1.2/apps/app_groupcount.c (original)
+++ team/mogorman/asterisk-transcoder-1.2/apps/app_groupcount.c Mon Jan 15 18:40:58 2007
@@ -70,7 +70,8 @@
 
 	if (ast_strlen_zero(group)) {
 		grp = pbx_builtin_getvar_helper(chan, category);
-		strncpy(group, grp, sizeof(group) - 1);
+		if (!ast_strlen_zero(grp))
+			ast_copy_string(group, grp, sizeof(group));
 	}
 
 	count = ast_app_group_get_count(group, category);

Modified: team/mogorman/asterisk-transcoder-1.2/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/team/mogorman/asterisk-transcoder-1.2/apps/app_voicemail.c?view=diff&rev=51032&r1=51031&r2=51032
==============================================================================
--- team/mogorman/asterisk-transcoder-1.2/apps/app_voicemail.c (original)
+++ team/mogorman/asterisk-transcoder-1.2/apps/app_voicemail.c Mon Jan 15 18:40:58 2007
@@ -1652,6 +1652,23 @@
 	pbx_builtin_setvar_helper(ast, "VM_DATE", date);
 }
 
+static char *quote(const char *from, char *to, size_t len)
+{
+	char *ptr = to;
+	*ptr++ = '"';
+	for (; ptr < to + len - 1; from++) {
+		if (*from == '"')
+			*ptr++ = '\\';
+		else if (*from == '\0')
+			break;
+		*ptr++ = *from;
+	}
+	if (ptr < to + len - 1)
+		*ptr++ = '"';
+	*ptr = '\0';
+	return to;
+}
+
 static int sendmail(char *srcemail, struct ast_vm_user *vmu, int msgnum, char *context, char *mailbox, char *cidnum, char *cidname, char *attach, char *format, int duration, int attach_user_voicemail)
 {
 	FILE *p=NULL;
@@ -1667,6 +1684,9 @@
 	time_t t;
 	struct tm tm;
 	struct vm_zone *the_zone = NULL;
+	int len_passdata;
+	char *passdata2;
+
 	if (vmu && ast_strlen_zero(vmu->email)) {
 		ast_log(LOG_WARNING, "E-mail address missing for mailbox [%s].  E-mail will not be sent.\n", vmu->mailbox);
 		return(0);
@@ -1727,13 +1747,17 @@
 					memset(passdata, 0, vmlen);
 					prep_email_sub_vars(ast,vmu,msgnum + 1,context,mailbox,cidnum, cidname,dur,date,passdata, vmlen);
 					pbx_substitute_variables_helper(ast,fromstring,passdata,vmlen);
-					fprintf(p, "From: %s <%s>\n",passdata,who);
+					len_passdata = strlen(passdata) * 2 + 1;
+					passdata2 = alloca(len_passdata);
+					fprintf(p, "From: %s <%s>\n", quote(passdata, passdata2, len_passdata), who);
 				} else ast_log(LOG_WARNING, "Cannot allocate workspace for variable substitution\n");
 				ast_channel_free(ast);
 			} else ast_log(LOG_WARNING, "Cannot allocate the channel for variables substitution\n");
 		} else
 			fprintf(p, "From: Asterisk PBX <%s>\n", who);
-		fprintf(p, "To: %s <%s>\n", vmu->fullname, vmu->email);
+		len_passdata = strlen(vmu->fullname) * 2 + 1;
+		passdata2 = alloca(len_passdata);
+		fprintf(p, "To: %s <%s>\n", quote(vmu->fullname, passdata2, len_passdata), vmu->email);
 
 		if (emailsubject) {
 			struct ast_channel *ast = ast_channel_alloc(0);
@@ -2325,7 +2349,7 @@
 
 static int notify_new_message(struct ast_channel *chan, struct ast_vm_user *vmu, int msgnum, long duration, char *fmt, char *cidnum, char *cidname);
 
-static int copy_message(struct ast_channel *chan, struct ast_vm_user *vmu, int imbox, int msgnum, long duration, struct ast_vm_user *recip, char *fmt)
+static int copy_message(struct ast_channel *chan, struct ast_vm_user *vmu, int imbox, int msgnum, long duration, struct ast_vm_user *recip, char *fmt, char *dir)
 {
 	char fromdir[PATH_MAX], todir[PATH_MAX], frompath[PATH_MAX], topath[PATH_MAX];
 	char *frombox = mbox(imbox);
@@ -2334,8 +2358,12 @@
 	ast_log(LOG_NOTICE, "Copying message from %s@%s to %s@%s\n", vmu->mailbox, vmu->context, recip->mailbox, recip->context);
 
 	create_dirpath(todir, sizeof(todir), recip->context, recip->mailbox, "INBOX");
-  
-	make_dir(fromdir, sizeof(fromdir), vmu->context, vmu->mailbox, frombox);
+	
+	if (!dir)
+		make_dir(fromdir, sizeof(fromdir), vmu->context, vmu->mailbox, frombox);
+	else
+		ast_copy_string(fromdir, dir, sizeof(fromdir));
+
 	make_file(frompath, sizeof(frompath), fromdir, msgnum);
 
 	if (vm_lock_path(todir))
@@ -2676,7 +2704,7 @@
 							context++;
 						}
 						if ((recip = find_user(&recipu, context, exten))) {
-							copy_message(chan, vmu, 0, msgnum, duration, recip, fmt);
+							copy_message(chan, vmu, 0, msgnum, duration, recip, fmt, dir);
 							free_user(recip);
 						}
 					}
@@ -3592,7 +3620,7 @@
 		cmd = vm_forwardoptions(chan, sender, dir, curmsg, vmfmts, context, record_gain, &duration);
 		if (!cmd) {
 			while (!res && vmtmp) {
-				copy_message(chan, sender, 0, curmsg, duration, vmtmp, fmt);
+				copy_message(chan, sender, 0, curmsg, duration, vmtmp, fmt, dir);
 	
 				saved_messages++;
 				vmfree = vmtmp;

Modified: team/mogorman/asterisk-transcoder-1.2/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/team/mogorman/asterisk-transcoder-1.2/channels/chan_iax2.c?view=diff&rev=51032&r1=51031&r2=51032
==============================================================================
--- team/mogorman/asterisk-transcoder-1.2/channels/chan_iax2.c (original)
+++ team/mogorman/asterisk-transcoder-1.2/channels/chan_iax2.c Mon Jan 15 18:40:58 2007
@@ -5525,7 +5525,7 @@
 	/* Start pessimistic */
 	char peer[256] = "";
 	char msgstatus[40];
-	int refresh = 0;
+	int refresh = 60;
 	char ourip[256] = "<Unspecified>";
 	struct sockaddr_in oldus;
 	struct sockaddr_in us;

Modified: team/mogorman/asterisk-transcoder-1.2/channels/chan_misdn.c
URL: http://svn.digium.com/view/asterisk/team/mogorman/asterisk-transcoder-1.2/channels/chan_misdn.c?view=diff&rev=51032&r1=51031&r2=51032
==============================================================================
--- team/mogorman/asterisk-transcoder-1.2/channels/chan_misdn.c (original)
+++ team/mogorman/asterisk-transcoder-1.2/channels/chan_misdn.c Mon Jan 15 18:40:58 2007
@@ -927,6 +927,22 @@
 	return 0; 
 }
 
+static int misdn_send_restart(int fd, int argc, char *argv[])
+{
+	int port;
+	
+	if (argc != 4)
+		return RESULT_SHOWUSAGE;
+  
+	port = atoi(argv[3]);
+ 
+ 	misdn_lib_send_restart(port);
+	
+	return 0;
+}
+
+
+
 static int misdn_send_digit (int fd, int argc, char *argv[])
 {
 	char *channame; 
@@ -1083,6 +1099,14 @@
   complete_ch
 };
 
+static struct ast_cli_entry cli_send_restart=
+{ {"misdn","send","restart", NULL},
+  misdn_send_restart,
+  "Sends a restart for every bchannel on the given port", 
+  "Usage: misdn send restart <port>\n"
+};
+
+
 static struct ast_cli_entry cli_send_digit =
 { {"misdn","send","digit", NULL},
   misdn_send_digit,
@@ -1599,23 +1623,21 @@
 	int r;
 	struct chan_list *ch=MISDN_ASTERISK_TECH_PVT(ast);
 	struct misdn_bchannel *newbc;
-	char *opts=NULL, *ext,*tokb;
+	char *opts=NULL, *ext;
 	char dest_cp[256];
 	
 	{
 		strncpy(dest_cp,dest,sizeof(dest_cp)-1);
 		dest_cp[sizeof(dest_cp)]=0;
-		
-		ext=strtok_r(dest_cp,"/",&tokb);
-		
+
+		ext=dest_cp;
+		strsep(&ext,"/");
 		if (ext) {
-			ext=strtok_r(NULL,"/",&tokb);
-			if (ext) {
-				opts=strtok_r(NULL,"/",&tokb);
-			} else {
-				chan_misdn_log(0,0,"misdn_call: No Extension given!\n");
-				return -1;
-			}
+			opts=ext;
+			strsep(&opts,"/");
+		}  else {
+			ast_log(LOG_WARNING, "Malformed dialstring\n");
+			return -1;
 		}
 	}
 
@@ -4218,6 +4240,7 @@
   
 	ast_cli_register(&cli_send_display);
 	ast_cli_register(&cli_send_cd);
+	ast_cli_register(&cli_send_restart);
 	ast_cli_register(&cli_send_digit);
 	ast_cli_register(&cli_toggle_echocancel);
 	ast_cli_register(&cli_set_tics);
@@ -4285,6 +4308,7 @@
 	ast_cli_unregister(&cli_send_display);
 	
 	ast_cli_unregister(&cli_send_cd);
+	ast_cli_unregister(&cli_send_restart);
 	
 	ast_cli_unregister(&cli_send_digit);
 	ast_cli_unregister(&cli_toggle_echocancel);

Modified: team/mogorman/asterisk-transcoder-1.2/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/mogorman/asterisk-transcoder-1.2/channels/chan_sip.c?view=diff&rev=51032&r1=51031&r2=51032
==============================================================================
--- team/mogorman/asterisk-transcoder-1.2/channels/chan_sip.c (original)
+++ team/mogorman/asterisk-transcoder-1.2/channels/chan_sip.c Mon Jan 15 18:40:58 2007
@@ -4346,6 +4346,8 @@
 	respprep(&resp, p, msg, req);
 	append_date(&resp);
 	add_header(&resp, "Unsupported", unsupported);
+	add_header_contentLength(&resp, 0);
+	add_blank_header(&resp);
 	return send_response(p, &resp, 0, 0);
 }
 

Modified: team/mogorman/asterisk-transcoder-1.2/channels/misdn/fac.c
URL: http://svn.digium.com/view/asterisk/team/mogorman/asterisk-transcoder-1.2/channels/misdn/fac.c?view=diff&rev=51032&r1=51031&r2=51032
==============================================================================
--- team/mogorman/asterisk-transcoder-1.2/channels/misdn/fac.c (original)
+++ team/mogorman/asterisk-transcoder-1.2/channels/misdn/fac.c Mon Jan 15 18:40:58 2007
@@ -28,7 +28,7 @@
 
 
 /* support stuff */
-static void strnncpy(unsigned char *dest, unsigned char *src, int len, int dst_len)
+static void strnncpy(char *dest, unsigned char *src, int len, int dst_len)
 {
 	if (len > dst_len-1)
 		len = dst_len-1;
@@ -71,7 +71,7 @@
 
 
 /* facility for siemens CENTEX (known parts implemented only) */
-void enc_ie_facility_centrex(unsigned char **ntmode, msg_t *msg, unsigned char *cnip, int setup, int nt, struct misdn_bchannel *bc)
+void enc_ie_facility_centrex(unsigned char **ntmode, msg_t *msg, char *cnip, int setup, int nt, struct misdn_bchannel *bc)
 {
 	unsigned char centrex[256];
 	int i = 0;
@@ -123,7 +123,7 @@
 	enc_ie_facility(ntmode, msg, centrex, i, nt , bc);
 }
 
-void dec_ie_facility_centrex(unsigned char *p, Q931_info_t *qi, unsigned char *centrex, int facility_len, unsigned char *cnip, int cnip_len, int nt, struct misdn_bchannel *bc)
+void dec_ie_facility_centrex(unsigned char *p, Q931_info_t *qi, unsigned char *centrex, int facility_len, char *cnip, int cnip_len, int nt, struct misdn_bchannel *bc)
 {
 
 	int i = 0;
@@ -160,7 +160,7 @@
 
 
 /* facility for CALL Deflect (known parts implemented only) */
-void enc_ie_facility_calldeflect(unsigned char **ntmode, msg_t *msg, unsigned char *nr, int nt, struct misdn_bchannel *bc)
+void enc_ie_facility_calldeflect(unsigned char **ntmode, msg_t *msg, char *nr, int nt, struct misdn_bchannel *bc)
 {
 	unsigned char fac[256];
 	
@@ -204,7 +204,7 @@
 }
 
 
-void dec_ie_facility_calldeflect(unsigned char *p, Q931_info_t *qi, unsigned char *fac, int fac_len, unsigned char *cd_nr,  int nt, struct misdn_bchannel *bc)
+void dec_ie_facility_calldeflect(unsigned char *p, Q931_info_t *qi, unsigned char *fac, int fac_len, char *cd_nr,  int nt, struct misdn_bchannel *bc)
 {
 	*cd_nr = '\0';
 	

Modified: team/mogorman/asterisk-transcoder-1.2/channels/misdn/ie.c
URL: http://svn.digium.com/view/asterisk/team/mogorman/asterisk-transcoder-1.2/channels/misdn/ie.c?view=diff&rev=51032&r1=51031&r2=51032
==============================================================================
--- team/mogorman/asterisk-transcoder-1.2/channels/misdn/ie.c (original)
+++ team/mogorman/asterisk-transcoder-1.2/channels/misdn/ie.c Mon Jan 15 18:40:58 2007
@@ -33,7 +33,7 @@
 #define MISDN_IE_DEBG 0
 
 /* support stuff */
-static void strnncpy(unsigned char *dest, unsigned char *src, int len, int dst_len)
+static void strnncpy(char *dest, char *src, int len, int dst_len)
 {
 	if (len > dst_len-1)
 		len = dst_len-1;
@@ -260,7 +260,7 @@
 
 
 /* IE_CALL_ID */
-void enc_ie_call_id(unsigned char **ntmode, msg_t *msg, unsigned char *callid, int callid_len, int nt, struct misdn_bchannel *bc)
+void enc_ie_call_id(unsigned char **ntmode, msg_t *msg, char *callid, int callid_len, int nt, struct misdn_bchannel *bc)
 {
 	unsigned char *p;
 	Q931_info_t *qi = (Q931_info_t *)(msg->data + mISDN_HEADER_LEN);
@@ -299,7 +299,7 @@
 	memcpy(p+2, callid, callid_len);
 }
 
-void dec_ie_call_id(unsigned char *p, Q931_info_t *qi, unsigned char *callid, int *callid_len, int nt, struct misdn_bchannel *bc)
+void dec_ie_call_id(unsigned char *p, Q931_info_t *qi, char *callid, int *callid_len, int nt, struct misdn_bchannel *bc)
 {
 	char debug[25];
 	int i;
@@ -310,7 +310,7 @@
 	{
 		p = NULL;
 		if (qi->QI_ELEMENT(call_id))
-			p = (unsigned char *)qi + sizeof(Q931_info_t) + qi->QI_ELEMENT(call_id) + 1;
+			p = (unsigned char*)qi + sizeof(Q931_info_t) + qi->QI_ELEMENT(call_id) + 1;
 	}
 	if (!p)
 		return;
@@ -335,7 +335,7 @@
 
 
 /* IE_CALLED_PN */
-void enc_ie_called_pn(unsigned char **ntmode, msg_t *msg, int type, int plan, unsigned char *number, int nt, struct misdn_bchannel *bc)
+void enc_ie_called_pn(unsigned char **ntmode, msg_t *msg, int type, int plan, char *number, int nt, struct misdn_bchannel *bc)
 {
 	unsigned char *p;
 	Q931_info_t *qi = (Q931_info_t *)(msg->data + mISDN_HEADER_LEN);
@@ -371,7 +371,7 @@
 	strncpy((char *)p+3, (char *)number, strlen((char *)number));
 }
 
-void dec_ie_called_pn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, unsigned char *number, int number_len, int nt, struct misdn_bchannel *bc)
+void dec_ie_called_pn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, char *number, int number_len, int nt, struct misdn_bchannel *bc)
 {
 	*type = -1;
 	*plan = -1;
@@ -393,14 +393,14 @@
 
 	*type = (p[1]&0x70) >> 4;
 	*plan = p[1] & 0xf;
-	strnncpy(number, p+2, p[0]-1, number_len);
+	strnncpy(number, (char*)p+2, p[0]-1, number_len);
 
 	if (MISDN_IE_DEBG) printf("    type=%d plan=%d number='%s'\n", *type, *plan, number);
 }
 
 
 /* IE_CALLING_PN */
-void enc_ie_calling_pn(unsigned char **ntmode, msg_t *msg, int type, int plan, int present, int screen, unsigned char *number, int nt, struct misdn_bchannel *bc)
+void enc_ie_calling_pn(unsigned char **ntmode, msg_t *msg, int type, int plan, int present, int screen, char *number, int nt, struct misdn_bchannel *bc)
 {
 	unsigned char *p;
 	Q931_info_t *qi = (Q931_info_t *)(msg->data + mISDN_HEADER_LEN);
@@ -455,7 +455,7 @@
 	}
 }
 
-void dec_ie_calling_pn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, int *screen, unsigned char *number, int number_len, int nt, struct misdn_bchannel *bc)
+void dec_ie_calling_pn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, int *screen, char *number, int number_len, int nt, struct misdn_bchannel *bc)
 {
 	*type = -1;
 	*plan = -1;
@@ -488,10 +488,10 @@
 		}
 		*present = (p[2]&0x60) >> 5;
 		*screen = p[2] & 0x3;
-		strnncpy(number, p+3, p[0]-2, number_len);
+		strnncpy(number, (char*)p+3, p[0]-2, number_len);
 	} else
 	{
-		strnncpy(number, p+2, p[0]-1, number_len);
+		strnncpy(number, (char*)p+2, p[0]-1, number_len);
  		/* SPECIAL workarround for IBT software bug */ 
 		/* if (number[0]==0x80) */
 		/*  strcpy((char *)number, (char *)number+1); */
@@ -502,7 +502,7 @@
 
 
 /* IE_CONNECTED_PN */
-void enc_ie_connected_pn(unsigned char **ntmode, msg_t *msg, int type, int plan, int present, int screen, unsigned char *number, int nt, struct misdn_bchannel *bc)
+void enc_ie_connected_pn(unsigned char **ntmode, msg_t *msg, int type, int plan, int present, int screen, char *number, int nt, struct misdn_bchannel *bc)
 {
 	unsigned char *p;
 	Q931_info_t *qi = (Q931_info_t *)(msg->data + mISDN_HEADER_LEN);
@@ -557,7 +557,7 @@
 	}
 }
 
-void dec_ie_connected_pn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, int *screen, unsigned char *number, int number_len, int nt, struct misdn_bchannel *bc)
+void dec_ie_connected_pn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, int *screen, char *number, int number_len, int nt, struct misdn_bchannel *bc)
 {
 	*type = -1;
 	*plan = -1;
@@ -590,10 +590,10 @@
 		}
 		*present = (p[2]&0x60) >> 5;
 		*screen = p[2] & 0x3;
-		strnncpy(number, p+3, p[0]-2, number_len);
+		strnncpy(number, (char*)p+3, p[0]-2, number_len);
 	} else
 	{
-		strnncpy(number, p+2, p[0]-1, number_len);
+		strnncpy(number, (char*)p+2, p[0]-1, number_len);
 	}
 
 	if (MISDN_IE_DEBG) printf("    type=%d plan=%d present=%d screen=%d number='%s'\n", *type, *plan, *present, *screen, number);
@@ -760,7 +760,7 @@
 	{
 		p = NULL;
 		if (qi->QI_ELEMENT(channel_id))
-			p = (unsigned char *)qi + sizeof(Q931_info_t) + qi->QI_ELEMENT(channel_id) + 1;
+			p = (unsigned char*)qi + sizeof(Q931_info_t) + qi->QI_ELEMENT(channel_id) + 1;
 	}
 	if (!p)
 		return;
@@ -876,7 +876,7 @@
 
 
 /* IE_DISPLAY */
-void enc_ie_display(unsigned char **ntmode, msg_t *msg, unsigned char *display, int nt, struct misdn_bchannel *bc)
+void enc_ie_display(unsigned char **ntmode, msg_t *msg, char *display, int nt, struct misdn_bchannel *bc)
 {
 	unsigned char *p;
 	Q931_info_t *qi = (Q931_info_t *)(msg->data + mISDN_HEADER_LEN);
@@ -907,7 +907,7 @@
 	strncpy((char *)p+2, (char *)display, strlen((char *)display));
 }
 
-void dec_ie_display(unsigned char *p, Q931_info_t *qi, unsigned char *display, int display_len, int nt, struct misdn_bchannel *bc)
+void dec_ie_display(unsigned char *p, Q931_info_t *qi, char *display, int display_len, int nt, struct misdn_bchannel *bc)
 {
 	*display = '\0';
 
@@ -925,7 +925,7 @@
 		return;
 	}
 
-	strnncpy(display, p+1, p[0], display_len);
+	strnncpy(display, (char*)p+1, p[0], display_len);
 
 	if (MISDN_IE_DEBG) printf("    display='%s'\n", display);
 }
@@ -957,7 +957,7 @@
 	strncpy((char *)p+2, (char *)keypad, strlen((char *)keypad));
 }
 
-void dec_ie_keypad(unsigned char *p, Q931_info_t *qi, unsigned char *keypad, int keypad_len, int nt, struct misdn_bchannel *bc)
+void dec_ie_keypad(unsigned char *p, Q931_info_t *qi, char *keypad, int keypad_len, int nt, struct misdn_bchannel *bc)
 {
 	*keypad = '\0';
 
@@ -975,7 +975,7 @@
 		return;
 	}
 
-	strnncpy(keypad, p+1, p[0], keypad_len);
+	strnncpy(keypad, (char*)p+1, p[0], keypad_len);
 
 	if (MISDN_IE_DEBG) printf("    keypad='%s'\n", keypad);
 }
@@ -1098,7 +1098,7 @@
 
 
 /* IE_REDIR_NR (redirecting = during MT_SETUP) */
-void enc_ie_redir_nr(unsigned char **ntmode, msg_t *msg, int type, int plan, int present, int screen, int reason, unsigned char *number, int nt, struct misdn_bchannel *bc)
+void enc_ie_redir_nr(unsigned char **ntmode, msg_t *msg, int type, int plan, int present, int screen, int reason, char *number, int nt, struct misdn_bchannel *bc)
 {
 	unsigned char *p;
 	Q931_info_t *qi = (Q931_info_t *)(msg->data + mISDN_HEADER_LEN);
@@ -1172,7 +1172,7 @@
 	}
 }
 
-void dec_ie_redir_nr(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, int *screen, int *reason, unsigned char *number, int number_len, int nt, struct misdn_bchannel *bc)
+void dec_ie_redir_nr(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, int *screen, int *reason, char *number, int number_len, int nt, struct misdn_bchannel *bc)
 {
 	*type = -1;
 	*plan = -1;
@@ -1204,14 +1204,14 @@
 		if (!(p[2] & 0x80))
 		{
 			*reason = p[3] & 0x0f;
-			strnncpy(number, p+4, p[0]-3, number_len);
+			strnncpy(number,(char*)p+4, p[0]-3, number_len);
 		} else
 		{
-			strnncpy(number, p+3, p[0]-2, number_len);
+			strnncpy(number, (char*)p+3, p[0]-2, number_len);
 		}
 	} else
 	{
-		strnncpy(number, p+2, p[0]-1, number_len);
+		strnncpy(number, (char*)p+2, p[0]-1, number_len);
 	}
 
 	if (MISDN_IE_DEBG) printf("    type=%d plan=%d present=%d screen=%d reason=%d number='%s'\n", *type, *plan, *present, *screen, *reason, number);
@@ -1270,7 +1270,7 @@
 	}
 }
 
-void dec_ie_redir_dn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, unsigned char *number, int number_len, int nt, struct misdn_bchannel *bc)
+void dec_ie_redir_dn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, char *number, int number_len, int nt, struct misdn_bchannel *bc)
 {
 	*type = -1;
 	*plan = -1;
@@ -1297,10 +1297,10 @@
 	if (!(p[1] & 0x80))
 	{
 		*present = (p[2]&0x60) >> 5;
-		strnncpy(number, p+3, p[0]-2, number_len);
+		strnncpy(number, (char*)p+3, p[0]-2, number_len);
 	} else
 	{
-		strnncpy(number, p+2, p[0]-1, number_len);
+		strnncpy(number, (char*)p+2, p[0]-1, number_len);
 	}
 
 	if (MISDN_IE_DEBG) printf("    type=%d plan=%d present=%d number='%s'\n", *type, *plan, *present, number);
@@ -1349,7 +1349,7 @@
 	memcpy(p+3, user, user_len);
 }
 
-void dec_ie_useruser(unsigned char *p, Q931_info_t *qi, int *protocol, unsigned char *user, int *user_len, int nt, struct misdn_bchannel *bc)
+void dec_ie_useruser(unsigned char *p, Q931_info_t *qi, int *protocol, char *user, int *user_len, int nt, struct misdn_bchannel *bc)
 {
 	char debug[768];
 	int i;

Modified: team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_lib.c
URL: http://svn.digium.com/view/asterisk/team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_lib.c?view=diff&rev=51032&r1=51031&r2=51032
==============================================================================
--- team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_lib.c (original)
+++ team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_lib.c Mon Jan 15 18:40:58 2007
@@ -279,7 +279,7 @@
 unsigned char * flip_buf_bits ( unsigned char * buf , int len)
 {
 	int i;
-	char * start = buf;
+	unsigned char * start = buf;
 	
 	for (i = 0 ; i < len; i++) {
 		buf[i] = flip_table[buf[i]];
@@ -651,7 +651,7 @@
 {
 	int i;
 
-	for (i=0; i<=stack->b_num; i++) {
+	for (i=0; i<stack->b_num; i++) {
 		if (global_state == MISDN_INITIALIZED)  {
 			cb_event(EVENT_CLEANUP, &stack->bc[i], NULL); 
 			empty_chan_in_stack(stack,i+1);
@@ -1965,7 +1965,9 @@
 				cb_log(0, stack->port, "%% GOT L2 Activate Info. but we're activated already.. this l2 is faulty, blocking port\n");
 				cb_event(EVENT_PORT_ALARM, &stack->bc[0], glob_mgr->user_data);
 			}
-			
+		
+			/* when we get the L2 UP, the L1 is UP definitely too*/
+			stack->l1link = 1;
 			stack->l2link = 1;
 			stack->l2upcnt=0;
 			
@@ -2197,12 +2199,12 @@
 
 void misdn_tx_jitter(struct misdn_bchannel *bc, int len)
 {
-	char buf[4096 + mISDN_HEADER_LEN];
-	char *data=&buf[mISDN_HEADER_LEN];
+	unsigned char buf[4096 + mISDN_HEADER_LEN];
+	unsigned char *data=&buf[mISDN_HEADER_LEN];
 	iframe_t *txfrm= (iframe_t*)buf;
 	int jlen, r;
 	
-	jlen=cb_jb_empty(bc,data,len);
+	jlen=cb_jb_empty(bc,(char*)data,len);
 	
 	if (jlen) {
 #ifdef MISDN_SAVE_DATA
@@ -2812,6 +2814,9 @@
 
 		case SSTATUS_L2_ESTABLISHED:
 			cb_log(3, stack->port, "MGMT: SSTATUS: L2_ESTABLISH \n");
+
+			/*when the L2 goes UP, L1 needs to be UP too*/
+			stack->l1link=1;
 			stack->l2link=1;
 			if ( !stack->ptp && !stack->nt )
 				stack->l1link=2;
@@ -3578,6 +3583,31 @@
 	return 0;
 }
 
+/*Sends Restart message for every bchnanel*/
+int misdn_lib_send_restart(int port)
+{
+	struct misdn_stack *stack=find_stack_by_port(port);
+	cb_log(0, port, "Sending Restarts on this port.\n");
+	
+	struct misdn_bchannel dummybc;
+	memset (&dummybc,0,sizeof(dummybc));
+	dummybc.port=stack->port;
+	dummybc.l3_id=MISDN_ID_GLOBAL;
+	dummybc.nt=stack->nt;
+
+	int max=stack->pri?30:2;
+	int i;
+	for (i=1;i<=max;i++) {
+		dummybc.channel=i;
+		cb_log(0, port, "Restarting channel %d\n",i);
+		misdn_lib_send_event(&dummybc, EVENT_RESTART);
+		/*do we need to wait before we get an EVENT_RESTART_ACK ?*/
+	}
+
+	return 0;
+}
+
+/*reinitializes the L2/L3*/
 int misdn_lib_port_restart(int port)
 {
 	struct misdn_stack *stack=find_stack_by_port(port);
@@ -3697,6 +3727,16 @@
 					iframe_t *frm = (iframe_t *)msg->data;
 					struct misdn_bchannel *bc = find_bc_by_l3id(stack, frm->dinfo);
 					if (bc) send_msg(glob_mgr->midev, bc, msg);
+					else  {
+						if (frm->dinfo == MISDN_ID_GLOBAL) {
+							struct misdn_bchannel dummybc;
+							memset (&dummybc,0,sizeof(dummybc));
+							dummybc.port=stack->port;
+							dummybc.l3_id=MISDN_ID_GLOBAL;
+							dummybc.nt=stack->nt;
+							send_msg(glob_mgr->midev, &dummybc, msg);
+						}
+					}
 				}
 			}
 		}
@@ -3988,7 +4028,7 @@
 			return -1;
 	}
 	
-	char buf[4096 + mISDN_HEADER_LEN];
+	unsigned char buf[4096 + mISDN_HEADER_LEN];
 	iframe_t *frm= (iframe_t*)buf;
 	int  r;
 	
@@ -4294,43 +4334,36 @@
 	int conf_id=bc1->pid +1;
 
 	cb_log(4, bc1->port, "I Send: BRIDGE from:%d to:%d\n",bc1->port,bc2->port);
-	
-	struct misdn_bchannel *bc_list[]={
-		bc1,bc2,NULL
-	};
-	struct misdn_bchannel **bc;
-		
-	for (bc=bc_list; *bc;  *bc++) { 
-		(*bc)->conf_id=conf_id;
-		cb_log(4, (*bc)->port, " --> bc_addr:%x\n",(*bc)->addr);
-	
-		switch((*bc)->bc_state) {
-			case BCHAN_ACTIVATED:
-				misdn_join_conf(*bc,conf_id);
-				break;
-			default:
-				bc_next_state_change(*bc,BCHAN_BRIDGED);
-				break;
-		}
-	}
+
+	bc1->conf_id=conf_id;
+	cb_log(4, bc1->port, " --> bc_addr:%x\n",bc1->addr);
+	if (bc1->bc_state==BCHAN_ACTIVATED) 
+		misdn_join_conf(bc1,conf_id);
+	else
+		bc_next_state_change(bc1,BCHAN_BRIDGED);
+	/*and again*/
+	bc2->conf_id=conf_id;
+	cb_log(4, bc2->port, " --> bc_addr:%x\n",bc2->addr);
+	if (bc2->bc_state==BCHAN_ACTIVATED) 
+		misdn_join_conf(bc2,conf_id);
+	else
+		bc_next_state_change(bc2,BCHAN_BRIDGED);
+
 }
 
 void misdn_lib_split_bridge( struct misdn_bchannel * bc1, struct misdn_bchannel *bc2)
 {
-
-	struct misdn_bchannel *bc_list[]={
-		bc1,bc2,NULL
-	};
-	struct misdn_bchannel **bc;
-		
-	for (bc=bc_list; *bc;  *bc++) { 
-		if ( (*bc)->bc_state == BCHAN_BRIDGED){
-			misdn_split_conf( *bc, (*bc)->conf_id);
-		} else {
-			cb_log( 2, (*bc)->port, "BC not bridged (state:%s) so not splitting it\n",bc_state2str((*bc)->bc_state));
-		}
-	}
-	
+	if ( bc1->bc_state == BCHAN_BRIDGED)
+		misdn_split_conf( bc1, bc1->conf_id);
+	else 
+		cb_log( 2, bc1->port, "BC not bridged (state:%s) so not splitting it\n",bc_state2str(bc1->bc_state));
+
+	/*again*/
+
+	if ( bc2->bc_state == BCHAN_BRIDGED)
+		misdn_split_conf( bc2, bc2->conf_id);
+	else 
+		cb_log( 2, bc1->port, "BC not bridged (state:%s) so not splitting it\n",bc_state2str(bc2->bc_state));
 }
 
 

Modified: team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_lib.h
URL: http://svn.digium.com/view/asterisk/team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_lib.h?view=diff&rev=51032&r1=51031&r2=51032
==============================================================================
--- team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_lib.h (original)
+++ team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_lib.h Mon Jan 15 18:40:58 2007
@@ -329,17 +329,17 @@
 	int hdlc;
 	/* V110 */
   
-	unsigned char display[84];
-	unsigned char msn[32];
-	unsigned char oad[32];
-	unsigned char rad[32];
-	unsigned char dad[32];
-	unsigned char cad[32];
-	unsigned char orig_dad[32];
-	unsigned char keypad[32];
-
-	unsigned char info_dad[64];
-	unsigned char infos_pending[64];
+	char display[84];
+	char msn[32];
+	char oad[32];
+	char rad[32];
+	char dad[32];
+	char cad[32];
+	char orig_dad[32];
+	char keypad[32];
+
+	char info_dad[64];
+	char infos_pending[64];
 
 /* 	unsigned char info_keypad[32]; */
 /* 	unsigned char clisub[24]; */
@@ -414,6 +414,7 @@
 
 int misdn_lib_port_restart(int port);
 int misdn_lib_pid_restart(int pid);
+int misdn_lib_send_restart(int port);
 
 int misdn_lib_get_port_info(int port);
 

Modified: team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_msg_parser.c
URL: http://svn.digium.com/view/asterisk/team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_msg_parser.c?view=diff&rev=51032&r1=51031&r2=51032
==============================================================================
--- team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_msg_parser.c (original)
+++ team/mogorman/asterisk-transcoder-1.2/channels/misdn/isdn_msg_parser.c Mon Jan 15 18:40:58 2007
@@ -159,7 +159,7 @@
 	{
 		int type,plan,present, screen;
 		char id[32];
-		dec_ie_calling_pn(setup->CALLING_PN, qi, &type, &plan, &present, &screen, (unsigned char *)id, sizeof(id)-1, nt,bc);
+		dec_ie_calling_pn(setup->CALLING_PN, qi, &type, &plan, &present, &screen, id, sizeof(id)-1, nt,bc);
 
 		bc->onumplan=type; 
 		strcpy(bc->oad, id);
@@ -183,13 +183,13 @@
 	{
 		int  type, plan;
 		char number[32]; 
-		dec_ie_called_pn(setup->CALLED_PN, (Q931_info_t *)setup, &type, &plan, (unsigned char *)number, sizeof(number)-1, nt,bc);
+		dec_ie_called_pn(setup->CALLED_PN, (Q931_info_t *)setup, &type, &plan, number, sizeof(number)-1, nt,bc);
 		strcpy(bc->dad, number);
 		bc->dnumplan=type; 
 	}
 	{
 		char keypad[32];
-		dec_ie_keypad(setup->KEYPAD, (Q931_info_t *)setup, (unsigned char *)keypad, sizeof(keypad)-1, nt,bc);
+		dec_ie_keypad(setup->KEYPAD, (Q931_info_t *)setup, keypad, sizeof(keypad)-1, nt,bc);
 		strcpy(bc->keypad, keypad);
 	}
 
@@ -201,7 +201,7 @@
 	{
 		int  type, plan, present, screen, reason;
 		char id[32]; 
-		dec_ie_redir_nr(setup->REDIR_NR, (Q931_info_t *)setup, &type, &plan, &present, &screen, &reason, (unsigned char *)id, sizeof(id)-1, nt,bc);
+		dec_ie_redir_nr(setup->REDIR_NR, (Q931_info_t *)setup, &type, &plan, &present, &screen, &reason, id, sizeof(id)-1, nt,bc);
     
 		strcpy(bc->rad, id);
 		bc->rnumplan=type; 
@@ -374,7 +374,7 @@
   
 	{
 		int type=bc->cpnnumplan, plan=1, present=2, screen=0;
-		enc_ie_connected_pn(&connect->CONNECT_PN, msg, type,plan, present, screen, (unsigned char*) bc->cad, nt , bc);
+		enc_ie_connected_pn(&connect->CONNECT_PN, msg, type,plan, present, screen, bc->cad, nt , bc);
 	}
 
 #if DEBUG 
@@ -794,10 +794,14 @@
 	msg_t *msg =(msg_t*)create_l3msg(CC_RESTART | REQUEST, MT_RESTART,  bc?bc->l3_id:-1, sizeof(RESTART_t) ,nt); 
  
 	restart=(RESTART_t*)((msg->data+HEADER_LEN)); 
-
+	
 #if DEBUG 
 	printf("Building RESTART Msg\n"); 
 #endif
+	enc_ie_channel_id(&restart->CHANNEL_ID, msg, 1,bc->channel, nt,bc);
+
+	cb_log(0,bc->port, "Restarting channel %d\n", bc->channel);
+	
 	return msg; 
 }
 
@@ -977,8 +981,8 @@
 		int  type, plan;
 		char number[32];
 		char keypad[32];
-		dec_ie_called_pn(information->CALLED_PN, (Q931_info_t *)information, &type, &plan, (unsigned char *)number, sizeof(number)-1, nt, bc);

[... 488 lines stripped ...]


More information about the asterisk-commits mailing list