Properly deal with Caller*ID, document the new RTP Payload setting, remove compiler option that may confuse g++ and force chan_h323.so to be relinked on every compile
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4467 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
d405f48268
commit
c704778e2b
|
@ -131,9 +131,9 @@ struct oh323_pvt {
|
|||
char exten[AST_MAX_EXTENSION]; /* Requested extension */
|
||||
char context[AST_MAX_EXTENSION]; /* Context where to start */
|
||||
char accountcode[256]; /* Account code */
|
||||
char cid_num[256]; /* Caller*id number, if available */
|
||||
char cid_name[256]; /* Caller*id name, if available */
|
||||
char rdnis[256]; /* Referring DNIS, if available */
|
||||
char cid_num[80]; /* Caller*id number, if available */
|
||||
char cid_name[80]; /* Caller*id name, if available */
|
||||
char rdnis[80]; /* Referring DNIS, if available */
|
||||
int amaflags; /* AMA Flags */
|
||||
struct ast_rtp *rtp; /* RTP Session */
|
||||
int dtmfmode; /* What DTMF Mode is being used */
|
||||
|
@ -499,7 +499,15 @@ static int oh323_call(struct ast_channel *c, char *dest, int timeout)
|
|||
} else {
|
||||
ast_inet_ntoa(addr, sizeof(addr), pvt->sa.sin_addr);
|
||||
pvt->options.port = htons(pvt->sa.sin_port);
|
||||
}
|
||||
}
|
||||
|
||||
if (c->cid.cid_num) {
|
||||
strncpy(pvt->options.cid_num, c->cid.cid_num, sizeof(pvt->options.cid_num));
|
||||
}
|
||||
if (c->cid.cid_name) {
|
||||
strncpy(pvt->options.cid_name, c->cid.cid_name, sizeof(pvt->options.cid_name));
|
||||
}
|
||||
|
||||
/* indicate that this is an outgoing call */
|
||||
pvt->outgoing = 1;
|
||||
|
||||
|
|
|
@ -37,11 +37,11 @@ endif
|
|||
#
|
||||
OSARCH=$(shell uname -s)
|
||||
CFLAGS += -DNDEBUG -DDO_CRASH -DDEBUG_THREADS
|
||||
CFLAGS += -pipe -Wall -fPIC -Wmissing-prototypes -Wmissing-declarations
|
||||
CFLAGS += -pipe -Wall -fPIC -Wmissing-prototypes
|
||||
CFLAGS += -D_REENTRANT -D_GNU_SOURCE
|
||||
CFLAGS += -I../../include
|
||||
CFLAGS += -I$(PWLIBDIR)/include
|
||||
CFLAGS += -I$(OPENH323DIR)/include -Wno-missing-prototypes -Wno-missing-declarations
|
||||
CFLAGS += -I$(OPENH323DIR)/include -Wno-missing-prototypes
|
||||
|
||||
all: depend libchanh323.a
|
||||
|
||||
|
@ -54,6 +54,7 @@ samples:
|
|||
|
||||
libchanh323.a: ast_h323.o
|
||||
ar cr libchanh323.a ast_h323.o
|
||||
touch ../chan_h323.c
|
||||
|
||||
ast_h323.o: ast_h323.cpp
|
||||
$(CXX) -g -c -o $@ $(CFLAGS) $<
|
||||
|
|
|
@ -237,16 +237,15 @@ int MyH323EndPoint::MakeCall(const PString & dest, PString & token, unsigned int
|
|||
return 1;
|
||||
}
|
||||
*callReference = connection->GetCallReference();
|
||||
|
||||
if (opts->cid_num) {
|
||||
connection->ast_cid_num = PString(opts->cid_num);
|
||||
}
|
||||
if (opts->cid_name) {
|
||||
localAliasNames.RemoveAll();
|
||||
connection->SetLocalPartyName(PString(opts->cid_name));
|
||||
if (opts->cid_num) {
|
||||
localAliasNames.AppendString(PString(opts->cid_num));
|
||||
}
|
||||
} else if (opts->cid_num) {
|
||||
localAliasNames.RemoveAll();
|
||||
connection->SetLocalPartyName(PString(opts->cid_num));
|
||||
}
|
||||
connection->ast_cid_name = PString(opts->cid_name);
|
||||
connection->SetLocalPartyName(connection->ast_cid_name);
|
||||
}
|
||||
|
||||
connection->dtmfCodec = (RTP_DataFrame::PayloadTypes)opts->dtmfcodec;
|
||||
|
||||
if (h323debug) {
|
||||
|
@ -700,6 +699,15 @@ BOOL MyH323Connection::OnSendSignalSetup(H323SignalPDU & setupPDU)
|
|||
if (h323debug) {
|
||||
cout << " -- Sending SETUP message" << endl;
|
||||
}
|
||||
|
||||
if (!ast_cid_num.IsEmpty()) {
|
||||
setupPDU.GetQ931().SetCallingPartyNumber(ast_cid_num);
|
||||
}
|
||||
|
||||
if (!ast_cid_name.IsEmpty()) {
|
||||
setupPDU.GetQ931().SetDisplayName(ast_cid_name);
|
||||
}
|
||||
|
||||
sourceAliases = setupPDU.GetSourceAliases();
|
||||
destAliases = setupPDU.GetDestinationAlias();
|
||||
|
||||
|
|
|
@ -188,6 +188,9 @@ class MyH323Connection : public H323Connection {
|
|||
unsigned progressAlert;
|
||||
|
||||
RTP_DataFrame::PayloadTypes dtmfCodec;
|
||||
|
||||
PString ast_cid_num;
|
||||
PString ast_cid_name;
|
||||
};
|
||||
|
||||
class MyH323_ExternalRTPChannel : public H323_ExternalRTPChannel {
|
||||
|
|
|
@ -31,8 +31,8 @@
|
|||
/** call_option struct holds various bits
|
||||
* of information for each call */
|
||||
typedef struct call_options {
|
||||
char *cid_num;
|
||||
char *cid_name;
|
||||
char cid_num[80];
|
||||
char cid_name[80];
|
||||
int noFastStart;
|
||||
int noH245Tunneling;
|
||||
int noSilenceSuppression;
|
||||
|
|
|
@ -31,6 +31,13 @@ allow=gsm ; Always allow GSM, it's cool :)
|
|||
; default is rfc2833
|
||||
;dtmfmode=rfc2833
|
||||
;
|
||||
; Default RTP Payload to send RFC2833 DTMF on. This is used to
|
||||
; interoperate with broken gateways which cannot successfully
|
||||
; negotiate a RFC2833 payload type in the TerminalCapabilitySet.
|
||||
;
|
||||
; You may also specify on either a per-peer or per-user basis below.
|
||||
;dtmfcodec=101
|
||||
;
|
||||
; Set the gatekeeper
|
||||
; DISCOVER - Find the Gk address using multicast
|
||||
; DISABLE - Disable the use of a GK
|
||||
|
|
Reference in New Issue