]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 373101 via svnmerge from
authorAutomerge script <automerge@asterisk.org>
Sat, 15 Sep 2012 00:21:35 +0000 (00:21 +0000)
committerAutomerge script <automerge@asterisk.org>
Sat, 15 Sep 2012 00:21:35 +0000 (00:21 +0000)
file:///srv/subversion/repos/asterisk/branches/10

................
  r373101 | rmudgett | 2012-09-14 19:20:21 -0500 (Fri, 14 Sep 2012) | 20 lines

  Made companding law for SS7 calls only determined by SS7 signaling type.

  For SS7, the companding law for a call was chosen inconsistently depending
  upon ss7type (ITU vs ANSI) and the DAHDI companding default (T1 vs E1).
  For incoming calls, the companding law was determined by ss7type.  For
  outgoing calls, the companding law was determined by the DAHDI default.
  With the wrong combination you would get A-law/u-law conflicts.  An
  A-law/u-law conflict sounds like bad static on the line.

  SS7 ITU  signaling with E1 line: ok
  SS7 ITU  signaling with T1 line: noise
  SS7 ANSI signaling with E1 line: noise
  SS7 ANSI signaling with T1 line: ok

  * Fix the companding law used to be determined by the SS7 signaling type
  only.
  ........

  Merged revisions 373090 from http://svn.asterisk.org/svn/asterisk/branches/1.8
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10-digiumphones@373106 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/sig_ss7.c

index 312c14159232835162d36180c2b7d955b2d0357a..e12dc47081fa3820d911f01f7a7bd14bc71c5594 100644 (file)
@@ -540,6 +540,7 @@ static void ss7_start_call(struct sig_ss7_chan *p, struct sig_ss7_linkset *links
                p->call_level = SIG_SS7_CALL_LEVEL_SETUP;
        }
 
+       /* Companding law is determined by SS7 signaling type. */
        if (linkset->type == SS7_ITU) {
                law = SIG_SS7_ALAW;
        } else {
@@ -1788,6 +1789,13 @@ struct ast_channel *sig_ss7_request(struct sig_ss7_chan *p, enum sig_ss7_law law
 {
        struct ast_channel *ast;
 
+       /* Companding law is determined by SS7 signaling type. */
+       if (p->ss7->type == SS7_ITU) {
+               law = SIG_SS7_ALAW;
+       } else {
+               law = SIG_SS7_ULAW;
+       }
+
        sig_ss7_set_outgoing(p, 1);
        ast = sig_ss7_new_ast_channel(p, AST_STATE_RESERVED, law, transfercapability, p->exten, requestor);
        if (!ast) {