--- ../../asterisk-addons-1.6.1.0/channels/chan_ooh323.c 2009-06-23 03:09:25.000000000 +0400 +++ channels/chan_ooh323.c 2008-06-04 21:35:29.000000000 +0400 @@ -32,7 +32,6 @@ #define H323_ALREADYGONE (1<<5) #define H323_NEEDDESTROY (1<<6) #define H323_DISABLEGK (1<<7) -#define H323_NEEDSTART (1<<8) /* Channel description */ static const char type[] = "OOH323"; @@ -59,8 +58,10 @@ struct ast_rtp *vrtp, struct ast_rtp *trtp, int codecs, int nat_active); static void print_codec_to_cli(int fd, struct ast_codec_pref *pref); -static void ast_ooh323c_exit(); +#if 0 +static void ast_ooh323c_exit(); +#endif static const struct ast_channel_tech ooh323_tech = { .type = type, @@ -78,7 +79,7 @@ .indicate = ooh323_indicate, .fixup = ooh323_fixup, .send_html = 0, - /* .bridge = ast_rtp_bridge, */ + .bridge = ast_rtp_bridge, }; static struct ast_rtp_protocol ooh323_rtp = { @@ -88,18 +89,12 @@ .set_rtp_peer = ooh323_set_rtp_peer }; -struct ooh323_user; - /* H.323 channel private structure */ static struct ooh323_pvt { ast_mutex_t lock; /* Channel private lock */ struct ast_rtp *rtp; struct ast_rtp *vrtp; /* Placeholder for now */ struct ast_channel *owner; /* Master Channel */ - union { - char *user; /* cooperating user/peer */ - char *peer; - } neighbor; time_t lastrtptx; time_t lastrtprx; unsigned int flags; @@ -129,7 +124,6 @@ char accountcode[256]; /* Account code */ int nat; int amaflags; - int progsent; /* progress is sent */ struct ast_dsp *vad; struct ooh323_pvt *next; /* Next entity */ } *iflist = NULL; @@ -199,21 +193,16 @@ AST_MUTEX_DEFINE_STATIC(ooh323c_cmd_lock); -static long callnumber = 0; -AST_MUTEX_DEFINE_STATIC(ooh323c_cn_lock); - /* stack callbacks */ int onAlerting(ooCallData *call); -int onProgress(ooCallData *call); int onNewCallCreated(ooCallData *call); -int onOutgoingCall(ooCallData *call); int onCallEstablished(ooCallData *call); int onCallCleared(ooCallData *call); static char gLogFile[256] = DEFAULT_LOGFILE; static int gPort = 1720; static char gIP[20]; -static char gCallerID[AST_MAX_EXTENSION] = ""; +static char gCallerID[AST_MAX_EXTENSION] = DEFAULT_H323ID; static struct ooAliases *gAliasList; static int gCapability = AST_FORMAT_ULAW; static struct ast_codec_pref gPrefs; @@ -224,23 +213,16 @@ static int gIsGateway = 0; static int gFastStart = 1; static int gTunneling = 1; -static int gBeMaster = 0; static int gMediaWaitForConnect = 0; static int gTOS = 0; static int gRTPTimeout = 60; static char gAccountcode[80] = DEFAULT_H323ACCNT; static int gAMAFLAGS; static char gContext[AST_MAX_EXTENSION] = DEFAULT_CONTEXT; -static int gIncomingLimit = 1024; -static int gOutgoingLimit = 1024; +static int gIncomingLimit = 4; +static int gOutgoingLimit = 4; OOBOOL gH323Debug = FALSE; -static int t35countrycode = 0; -static int t35extensions = 0; -static int manufacturer = 0; -static char vendor[AST_MAX_EXTENSION] = ""; -static char version[AST_MAX_EXTENSION] = ""; - static struct ooh323_config { int mTCPPortStart; @@ -262,7 +244,7 @@ static struct ast_channel *ooh323_new(struct ooh323_pvt *i, int state, - const char *host, int capability) + const char *host) { struct ast_channel *ch = NULL; int fmt; @@ -272,21 +254,16 @@ /* Don't hold a h323 pvt lock while we allocate a channel */ ast_mutex_unlock(&i->lock); - ch = ast_channel_alloc(1, state, i->callerid_num, i->callerid_name, - i->accountcode, i->exten, i->context, i->amaflags, - "OOH323/%s-%ld", host, callnumber); - ast_mutex_lock(&ooh323c_cn_lock); - callnumber++; - ast_mutex_unlock(&ooh323c_cn_lock); - + ch = ast_channel_alloc(1, state, i->callerid_num, i->callerid_name, i->accountcode, i->exten, i->context, i->amaflags, "OOH323/%s-%08x", host, i); ast_mutex_lock(&i->lock); if (ch) { ast_channel_lock(ch); ch->tech = &ooh323_tech; - fmt = (capability) ? capability : i->capability; - ch->nativeformats = AST_FORMAT_SLINEAR; + ch->nativeformats = i->capability; + + fmt = ast_best_codec(ch->nativeformats); ch->fds[0] = ast_rtp_fd(i->rtp); ch->fds[1] = ast_rtcp_fd(i->rtp); @@ -295,10 +272,10 @@ ch->rings = 1; ch->adsicpe = AST_ADSI_UNAVAILABLE; - ch->writeformat = 0; - ch->rawwriteformat = 0; - ch->readformat = 0; - ch->rawreadformat = 0; + ch->writeformat = fmt; + ch->rawwriteformat = fmt; + ch->readformat = fmt; + ch->rawreadformat = fmt; ch->tech_pvt = i; i->owner = ch; @@ -319,8 +296,15 @@ ast_copy_string(ch->exten, i->exten, sizeof(ch->exten)); ch->priority = 1; + if (i->callerid_name) { + ch->cid.cid_name = strdup(i->callerid_name); + } + if (i->callerid_num) { + + ch->cid.cid_num = strdup(i->callerid_num); + } - if(!ast_test_flag(i, H323_OUTGOING)) { + if (!ast_test_flag(i, H323_OUTGOING)) { if (!ast_strlen_zero(i->caller_h323id)) { pbx_builtin_setvar_helper(ch, "_CALLER_H323ID", i->caller_h323id); @@ -347,18 +331,19 @@ ast_setstate(ch, state); if (state != AST_STATE_DOWN) { - if (ast_pbx_start(ch)) { + if (ast_pbx_start(ch)) { ast_log(LOG_WARNING, "Unable to start PBX on %s\n", ch->name); - ast_channel_unlock(ch); + ast_channel_unlock(ch); ast_hangup(ch); ch = NULL; - } - } + } + } } else ast_log(LOG_WARNING, "Unable to allocate channel structure\n"); - if(ch) ast_channel_unlock(ch); + if (ch) + ast_channel_unlock(ch); if (gH323Debug) ast_verbose("+++ h323_new\n"); @@ -383,7 +368,6 @@ ast_mutex_init(&pvt->lock); ast_mutex_lock(&pvt->lock); - if (!inet_aton(gIP, &ipAddr)) { ast_log(LOG_ERROR, "Invalid OOH323 driver ip address\n"); ast_mutex_unlock(&pvt->lock); @@ -392,7 +376,6 @@ return NULL; } - if (!(pvt->rtp = ast_rtp_new_with_bindaddr(sched, io, 1, 0, ipAddr))) { ast_log(LOG_WARNING, "Unable to create RTP session: %s\n", strerror(errno)); @@ -415,7 +398,6 @@ pvt->dtmfmode = gDTMFMode; ast_copy_string(pvt->context, gContext, sizeof(pvt->context)); ast_copy_string(pvt->accountcode, gAccountcode, sizeof(pvt->accountcode)); - pvt->amaflags = gAMAFLAGS; pvt->capability = gCapability; memcpy(&pvt->prefs, &gPrefs, sizeof(pvt->prefs)); @@ -438,8 +420,7 @@ Possible data values - peername, exten/peername, exten@ip */ static struct ast_channel *ooh323_request(const char *type, int format, - void *data, int *cause) - + void *data, int *cause) { struct ast_channel *chan = NULL; struct ooh323_pvt *p = NULL; @@ -474,8 +455,7 @@ /* This is an outgoing call, since ooh323_request is called */ ast_set_flag(p, H323_OUTGOING); - - ast_copy_string(tmp, data, sizeof(tmp)); + ast_copy_string(tmp, data, sizeof(data)); dest = strchr(tmp, '/'); @@ -517,11 +497,11 @@ if (ext) ast_copy_string(p->exten, ext, sizeof(p->exten)); - /* if (peer->capability & format) { + if (peer->capability & format) { p->capability = peer->capability & format; - } else { */ + } else { p->capability = peer->capability; - /* } */ + } memcpy(&p->prefs, &peer->prefs, sizeof(struct ast_codec_pref)); p->dtmfmode = peer->dtmfmode; ast_copy_string(p->accountcode, peer->accountcode, sizeof(p->accountcode)); @@ -543,7 +523,7 @@ } - chan = ooh323_new(p, AST_STATE_DOWN, p->username, format); + chan = ooh323_new(p, AST_STATE_DOWN, p->username); ast_mutex_unlock(&p->lock); @@ -551,23 +531,6 @@ ast_mutex_lock(&iflock); ooh323_destroy(p); ast_mutex_unlock(&iflock); - } else { - ast_mutex_lock(&p->lock); - p->callToken = (char*)malloc(AST_MAX_EXTENSION); - if(!p->callToken) - { - ast_mutex_unlock(&p->lock); - ast_mutex_lock(&iflock); - ooh323_destroy(p); - ast_mutex_unlock(&iflock); - ast_log(LOG_ERROR, "Failed to allocate memory for callToken\n"); - return NULL; /* TODO: need to clean/hangup?? */ - } - - ast_mutex_unlock(&p->lock); - ast_mutex_lock(&ooh323c_cmd_lock); - ooMakeCall(data, p->callToken, AST_MAX_EXTENSION, NULL); - ast_mutex_unlock(&ooh323c_cmd_lock); } restart_monitor(); @@ -606,10 +569,9 @@ struct ooh323_user *user; if (gH323Debug) - ast_verbose("--- find_user: %s, %s\n",name,ip); + ast_verbose("--- find_user\n"); ast_mutex_lock(&userl.lock); - for (user = userl.users; user; user = user->next) { if (ip && user->mUseIP && !strcmp(user->mIP, ip)) { break; @@ -618,7 +580,6 @@ break; } } - ast_mutex_unlock(&userl.lock); if (gH323Debug) @@ -666,7 +627,6 @@ if (gH323Debug) ast_verbose("--- find_peer \"%s\"\n", name); - ast_mutex_lock(&peerl.lock); for (peer = peerl.peers; peer; peer = peer->next) { if (gH323Debug) { @@ -717,9 +677,9 @@ (p->dtmfmode & H323_DTMF_H245SIGNAL))) { dtmf[0] = digit; dtmf[1] = '\0'; - /* ast_mutex_lock(&ooh323c_cmd_lock); */ + ast_mutex_lock(&ooh323c_cmd_lock); ooSendDTMFDigit(p->callToken, dtmf); - /* ast_mutex_unlock(&ooh323c_cmd_lock); */ + ast_mutex_unlock(&ooh323c_cmd_lock); } ast_mutex_unlock(&p->lock); if (gH323Debug) @@ -755,21 +715,18 @@ { struct ooh323_pvt *p = ast->tech_pvt; char destination[256]; - int res=0, i; + int res = 0; const char *val = NULL; ooCallOptions opts = { .fastStart = TRUE, .tunneling = TRUE, .disableGk = TRUE, - .callMode = OO_CALLMODE_AUDIOCALL, - .transfercap = 0 + .callMode = OO_CALLMODE_AUDIOCALL }; if (gH323Debug) ast_verbose("--- ooh323_call- %s\n", dest); - - if ((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) - { + if ((ast->_state != AST_STATE_DOWN) && (ast->_state != AST_STATE_RESERVED)) { ast_log(LOG_WARNING, "ooh323_call called on %s, neither down nor " "reserved\n", ast->name); return -1; @@ -777,18 +734,23 @@ ast_mutex_lock(&p->lock); ast_set_flag(p, H323_OUTGOING); if (ast->cid.cid_num) { - if(p->callerid_num) free(p->callerid_num); + if (p->callerid_num) { + free(p->callerid_num); + } p->callerid_num = strdup(ast->cid.cid_num); } if (ast->cid.cid_name) { - if(p->callerid_name) free(p->callerid_name); - p->callerid_name = strdup(ast->cid.cid_name); + if (p->callerid_name) { + free(p->callerid_name); + } + p->callerid_name = strdup(ast->cid.cid_name); } else{ ast->cid.cid_name = strdup(gCallerID); - if(p->callerid_name) + if (p->callerid_name) { free(p->callerid_name); + } p->callerid_name = strdup(ast->cid.cid_name); } @@ -801,8 +763,9 @@ if ((val = pbx_builtin_getvar_helper(ast, "CALLER_H323DIALEDDIGITS"))) { ast_copy_string(p->caller_dialedDigits, val, sizeof(p->caller_dialedDigits)); - if(!p->callerid_num) - p->callerid_num = strdup(val); + if (!p->callerid_num) { + p->callerid_num = strdup(val); + } } if ((val = pbx_builtin_getvar_helper(ast, "CALLER_H323EMAIL"))) { @@ -813,6 +776,13 @@ ast_copy_string(p->caller_url, val, sizeof(p->caller_url)); } + + if (!(p->callToken = (char*)malloc(AST_MAX_EXTENSION))) { + ast_mutex_unlock(&p->lock); + ast_log(LOG_ERROR, "Failed to allocate memory for callToken\n"); + return -1; /* TODO: need to clean/hangup?? */ + } + if (p->host && p->port != 0) snprintf(destination, sizeof(destination), "%s:%d", p->host, p->port); else if (p->host) @@ -820,27 +790,17 @@ else ast_copy_string(destination, dest, sizeof(destination)); - destination[sizeof(destination)-1]='\0'; - - opts.transfercap = ast->transfercapability; - - if(OO_TESTFLAG(p->flags, H323_DISABLEGK)) { - - for (i=0;i<160 && !isRunning(p->callToken);i++) usleep(12000); - - res = ooRunCall(destination, p->callToken, AST_MAX_EXTENSION, &opts); - - } else { - - for (i=0;i<160 && !isRunning(p->callToken);i++) usleep(12000); - - res = ooRunCall(destination, p->callToken, AST_MAX_EXTENSION, NULL); - } + ast_mutex_lock(&ooh323c_cmd_lock); + if (OO_TESTFLAG(p->flags, H323_DISABLEGK)) + res = ooMakeCall(destination, p->callToken, AST_MAX_EXTENSION, &opts); + else + res = ooMakeCall(destination, p->callToken, AST_MAX_EXTENSION, NULL); + ast_mutex_unlock(&ooh323c_cmd_lock); ast_mutex_unlock(&p->lock); if (res != OO_OK) { ast_log(LOG_ERROR, "Failed to make call\n"); - return -1; /* ToDO: cleanup */ + return -1; /* TODO: cleanup */ } if (gH323Debug) ast_verbose("+++ ooh323_call\n"); @@ -851,7 +811,6 @@ static int ooh323_hangup(struct ast_channel *ast) { struct ooh323_pvt *p = ast->tech_pvt; - int q931cause = AST_CAUSE_NORMAL_CLEARING; if (gH323Debug) ast_verbose("--- ooh323_hangup\n"); @@ -859,39 +818,19 @@ if (p) { ast_mutex_lock(&p->lock); - if (ast->hangupcause) { - q931cause = ast->hangupcause; - } else { - const char *cause = pbx_builtin_getvar_helper(ast, "DIALSTATUS"); - if (cause) { - if (!strcmp(cause, "CONGESTION")) { - q931cause = AST_CAUSE_NORMAL_CIRCUIT_CONGESTION; - } else if (!strcmp(cause, "BUSY")) { - q931cause = AST_CAUSE_USER_BUSY; - } else if (!strcmp(cause, "CHANISUNVAIL")) { - q931cause = AST_CAUSE_REQUESTED_CHAN_UNAVAIL; - } else if (!strcmp(cause, "NOANSWER")) { - q931cause = AST_CAUSE_NO_ANSWER; - } else if (!strcmp(cause, "CANCEL")) { - q931cause = AST_CAUSE_CALL_REJECTED; - } - } - } - - - if (gH323Debug) - ast_verbose(" hanging %s with cause: %d\n", p->username, q931cause); + ast_verbose(" hanging %s\n", p->username); ast->tech_pvt = NULL; if (!ast_test_flag(p, H323_ALREADYGONE)) { ast_mutex_lock(&ooh323c_cmd_lock); - ooHangCall(p->callToken, - ooh323_convert_hangupcause_asteriskToH323(q931cause), q931cause); + ooHangCall(p->callToken, + ooh323_convert_hangupcause_asteriskToH323(p->owner->hangupcause)); ast_mutex_unlock(&ooh323c_cmd_lock); ast_set_flag(p, H323_ALREADYGONE); /* ast_mutex_unlock(&p->lock); */ - } else + } else { ast_set_flag(p, H323_NEEDDESTROY); + } /* detach channel here */ if (p->owner) { p->owner->tech_pvt = NULL; @@ -908,7 +847,7 @@ } else { ast_log(LOG_ERROR, "No call to hangup\n" ); - /* return -1; */ + return -1; } if (gH323Debug) @@ -928,12 +867,11 @@ if (ast->_state != AST_STATE_UP) { ast_channel_lock(ast); ast_setstate(ast, AST_STATE_UP); - if (option_debug) ast_debug(1, "ooh323_answer(%s)\n", ast->name); ast_channel_unlock(ast); - /* ast_mutex_lock(&ooh323c_cmd_lock); */ + ast_mutex_lock(&ooh323c_cmd_lock); ooAnswerCall(p->callToken); - /* ast_mutex_unlock(&ooh323c_cmd_lock); */ + ast_mutex_unlock(&ooh323c_cmd_lock); } ast_mutex_unlock(&p->lock); @@ -963,50 +901,27 @@ { struct ooh323_pvt *p = ast->tech_pvt; int res = 0; - char *callToken = (char *)NULL; - if (p) { - ast_mutex_lock(&p->lock); - -/* sending progress for first */ - if (!ast_test_flag(p, H323_OUTGOING) && !p->progsent) { - callToken = (p->callToken ? strdup(p->callToken) : NULL); - ooManualProgress(callToken); - p->progsent = 1; - free(callToken); - } - if (f->frametype == AST_FRAME_VOICE) { - if (!(f->subclass & ast->nativeformats)) { - if (ast->nativeformats != 0) { - ast_log(LOG_WARNING, "Asked to transmit frame type %d," - " while native " - "formats is %d (read/write = %d/%d)\n", - f->subclass, ast->nativeformats, ast->readformat, + if (f->frametype == AST_FRAME_VOICE) { + if (!(f->subclass & ast->nativeformats)) { + ast_log(LOG_WARNING, "Asked to transmit frame type %d, while native " + "formats is %d (read/write = %d/%d)\n", + f->subclass, ast->nativeformats, ast->readformat, ast->writeformat); - ast_set_write_format(ast, f->subclass); - } else { - /* ast_set_write_format(ast, f->subclass); - ast->nativeformats = f->subclass; */ - } - ast_mutex_unlock(&p->lock); return 0; - } - - if (p->rtp) - res = ast_rtp_write(p->rtp, f); - - ast_mutex_unlock(&p->lock); - - } else if (f->frametype == AST_FRAME_IMAGE) { - ast_mutex_unlock(&p->lock); - return 0; - } else { - ast_log(LOG_WARNING, "Can't send %d type frames with OOH323 write\n", - f->frametype); + } + if (p) { + ast_mutex_lock(&p->lock); + if (p->rtp) + res = ast_rtp_write(p->rtp, f); ast_mutex_unlock(&p->lock); - return 0; } - + } else if (f->frametype == AST_FRAME_IMAGE) { + return 0; + } else { + ast_log(LOG_WARNING, "Can't send %d type frames with SIP write\n", + f->frametype); + return 0; } return res; @@ -1031,12 +946,12 @@ if (gH323Debug) ast_verbose("----- ooh323_indicate %d on call %s\n", condition, callToken); - ast_mutex_lock(&p->lock); + switch (condition) { case AST_CONTROL_CONGESTION: if (!ast_test_flag(p, H323_ALREADYGONE)) { ast_mutex_lock(&ooh323c_cmd_lock); - ooHangCall(callToken, OO_REASON_LOCAL_CONGESTED, AST_CAUSE_SWITCH_CONGESTION); + ooHangCall(callToken, OO_REASON_LOCAL_CONGESTED); ast_mutex_unlock(&ooh323c_cmd_lock); ast_set_flag(p, H323_ALREADYGONE); } @@ -1044,7 +959,7 @@ case AST_CONTROL_BUSY: if (!ast_test_flag(p, H323_ALREADYGONE)) { ast_mutex_lock(&ooh323c_cmd_lock); - ooHangCall(callToken, OO_REASON_LOCAL_BUSY, AST_CAUSE_USER_BUSY); + ooHangCall(callToken, OO_REASON_LOCAL_BUSY); ast_mutex_unlock(&ooh323c_cmd_lock); ast_set_flag(p, H323_ALREADYGONE); } @@ -1055,26 +970,9 @@ case AST_CONTROL_UNHOLD: ast_moh_stop(ast); break; + case AST_CONTROL_PROCEEDING: + case AST_CONTROL_RINGING: case AST_CONTROL_PROGRESS: - if (!p->progsent) { - /* ast_mutex_lock(&ooh323c_cmd_lock); */ - if (gH323Debug) - ast_log(LOG_DEBUG,"Sending manual progress for %s, res = %d\n", callToken, - ooManualProgress(callToken)); else - ooManualProgress(callToken); - p->progsent = 1; - /* ast_mutex_unlock(&ooh323c_cmd_lock); */ - } - break; - case AST_CONTROL_RINGING: - /* ast_mutex_lock(&ooh323c_cmd_lock); */ - if (gH323Debug) - ast_log(LOG_DEBUG,"Sending manual ringback for %s, res = %d\n", callToken, - ooManualRingback(callToken)); else - ooManualRingback(callToken); - /* ast_mutex_unlock(&ooh323c_cmd_lock); */ - break; - case AST_CONTROL_PROCEEDING: case -1: break; default: @@ -1082,12 +980,10 @@ condition, callToken); } - ast_mutex_unlock(&p->lock); - if (gH323Debug) ast_verbose("++++ ooh323_indicate %d on %s\n", condition, callToken); - free(callToken); + return -1; } @@ -1122,12 +1018,13 @@ void ooh323_set_write_format(ooCallData *call, int fmt) { +#if 0 struct ooh323_pvt *p = NULL; char formats[512]; - - if (gH323Debug) - ast_verbose("--- ooh323_update_writeformat %s\n", - ast_getformatname_multiple(formats,512, fmt)); +#ifdef print_debug + printf("--- ooh323_update_writeformat %s\n", + ast_getformatname_multiple(formats,512, fmt)); +#endif p = find_call(call); if (!p) { @@ -1138,49 +1035,34 @@ ast_mutex_lock(&p->lock); p->writeformat = fmt; + ast_mutex_unlock(&p->lock); if (p->owner) { - while (p->owner && ast_channel_trylock(p->owner)) { - ast_debug(1,"Failed to grab lock, trying again\n"); - ast_mutex_unlock(&p->lock); - usleep(1); - ast_mutex_lock(&p->lock); - } - if (!p->owner) { - ast_mutex_unlock(&p->lock); - ast_log(LOG_ERROR, "Channel has no owner\n"); - return; - } - if (gH323Debug) - ast_verbose("Writeformat before update %s\n", + printf("Writeformat before update %s\n", ast_getformatname_multiple(formats,512, p->owner->writeformat)); - p->owner->nativeformats = fmt; - if (p->owner->writeformat == 0) - p->owner->writeformat = fmt; - ast_set_write_format(p->owner, p->owner->writeformat); - if (p->owner->readformat == 0) - p->owner->readformat = fmt; - ast_set_read_format(p->owner, p->owner->readformat); - ast_channel_unlock(p->owner); - } else - ast_log(LOG_ERROR, "No owner found\n"); - + ast_set_write_format(p->owner, fmt); + } + else + ast_log(LOG_ERROR, "No owner found\n"); - ast_mutex_unlock(&p->lock); - if (gH323Debug) - ast_verbose("+++ ooh323_update_writeformat\n"); +#ifdef print_debug + printf("+++ ooh323_update_writeformat\n"); +#endif +#endif } + void ooh323_set_read_format(ooCallData *call, int fmt) { +#if 0 struct ooh323_pvt *p = NULL; char formats[512]; +#ifdef print_debug + printf("--- ooh323_update_readformat %s\n", + ast_getformatname_multiple(formats,512, fmt)); +#endif - if (gH323Debug) - ast_verbose("--- ooh323_update_readformat %s\n", - ast_getformatname_multiple(formats,512, fmt)); - p = find_call(call); if (!p) { ast_log(LOG_ERROR, "No matching call found for %s\n", call->callToken); @@ -1188,44 +1070,16 @@ } ast_mutex_lock(&p->lock); - p->readformat = fmt; - - - if (p->owner) { - while (p->owner && ast_channel_trylock(p->owner)) { - ast_debug(1,"Failed to grab lock, trying again\n"); - ast_mutex_unlock(&p->lock); - usleep(1); - ast_mutex_lock(&p->lock); - } - if (!p->owner) { - ast_mutex_unlock(&p->lock); - ast_log(LOG_ERROR, "Channel has no owner\n"); - return; - } - - if (gH323Debug) - ast_verbose("Readformat before update %s\n", - ast_getformatname_multiple(formats,512, p->owner->readformat)); - p->owner->nativeformats = fmt; - if (p->owner->readformat == 0) - p->owner->readformat = fmt; - ast_set_read_format(p->owner, p->owner->readformat); - /* if (p->owner->writeformat == 0) - p->owner->writeformat = fmt; - ast_set_write_format(p->owner, p->owner->writeformat); */ - ast_channel_unlock(p->owner); - } else - ast_log(LOG_ERROR, "No owner found\n"); - ast_mutex_unlock(&p->lock); - - if (gH323Debug) - ast_verbose("+++ ooh323_update_readformat\n"); + ast_set_read_format(p->owner, fmt); + +#ifdef print_debug + printf("+++ ooh323_update_readformat\n"); +#endif +#endif } - int onAlerting(ooCallData *call) { struct ooh323_pvt *p = NULL; @@ -1234,84 +1088,34 @@ if (gH323Debug) ast_verbose("--- onAlerting %s\n", call->callToken); - p = find_call(call); - - if(!p) { + if (!(p = find_call(call))) { ast_log(LOG_ERROR, "No matching call found\n"); return -1; } ast_mutex_lock(&p->lock); - if (!p->owner) { - ast_mutex_unlock(&p->lock); - ast_log(LOG_ERROR, "Channel has no owner\n"); - return 0; - } - while (p->owner && ast_channel_trylock(p->owner)) { - ast_debug(1,"Failed to grab lock, trying again\n"); + if (!ast_test_flag(p, H323_OUTGOING)) { + if (!(c = ooh323_new(p, AST_STATE_RING, p->username))) { + ast_mutex_unlock(&p->lock); + ast_log(LOG_ERROR, "Could not create ast_channel\n"); + return -1; + } ast_mutex_unlock(&p->lock); - usleep(1); - ast_mutex_lock(&p->lock); - } - if (!p->owner) { + } else { + if (!p->owner) { + ast_mutex_unlock(&p->lock); + ast_log(LOG_ERROR, "Channel has no owner\n"); + return 0; + } + c = p->owner; ast_mutex_unlock(&p->lock); - ast_log(LOG_ERROR, "Channel has no owner\n"); - return 0; - } - c = p->owner; - if (c->_state != AST_STATE_UP) + ast_channel_lock(c); ast_setstate(c, AST_STATE_RINGING); - - ast_queue_control(c, AST_CONTROL_RINGING); - ast_channel_unlock(c); - ast_mutex_unlock(&p->lock); - - if (gH323Debug) - ast_verbose("+++ onAlerting %s\n", call->callToken); - - return OO_OK; -} - -int onProgress(ooCallData *call) -{ - struct ooh323_pvt *p = NULL; - struct ast_channel *c = NULL; - - if (gH323Debug) - ast_verbose("--- onProgress %s\n", call->callToken); - - p = find_call(call); - - if(!p) { - ast_log(LOG_ERROR, "No matching call found\n"); - return -1; - } - ast_mutex_lock(&p->lock); - if (!p->owner) { - ast_mutex_unlock(&p->lock); - ast_log(LOG_ERROR, "Channel has no owner\n"); - return 0; - } - while (p->owner && ast_channel_trylock(p->owner)) { - ast_debug(1,"Failed to grab lock, trying again\n"); - ast_mutex_unlock(&p->lock); - usleep(1); - ast_mutex_lock(&p->lock); - } - if (!p->owner) { - ast_mutex_unlock(&p->lock); - ast_log(LOG_ERROR, "Channel has no owner\n"); - return 0; + ast_channel_unlock(c); + ast_queue_control(c, AST_CONTROL_RINGING); } - c = p->owner; - if (c->_state != AST_STATE_UP) - ast_setstate(c, AST_STATE_RINGING); - - ast_queue_control(c, AST_CONTROL_PROGRESS); - ast_channel_unlock(c); - ast_mutex_unlock(&p->lock); if (gH323Debug) - ast_verbose("+++ onProgress %s\n", call->callToken); + ast_verbose("+++ onAlerting %s\n", call->callToken); return OO_OK; } @@ -1346,21 +1150,8 @@ f.data.ptr = NULL; f.mallocd = 0; f.src = "SEND_DIGIT"; - - while (p->owner && ast_channel_trylock(p->owner)) { - ast_debug(1,"Failed to grab lock, trying again\n"); - ast_mutex_unlock(&p->lock); - usleep(1); - ast_mutex_lock(&p->lock); - } - if (!p->owner) { - ast_mutex_unlock(&p->lock); - ast_log(LOG_ERROR, "Channel has no owner\n"); - return 0; - } + ast_mutex_unlock(&p->lock); res = ast_queue_frame(p->owner, &f); - ast_channel_unlock(p->owner); - ast_mutex_unlock(&p->lock); return res; } @@ -1368,7 +1159,6 @@ { struct ooh323_pvt *p = NULL; struct ooh323_user *user = NULL; - struct ast_channel *c = NULL; ooAliases *alias = NULL; char *at = NULL; char number [OO_MAX_NUMBER_LENGTH]; @@ -1400,35 +1190,30 @@ p->callerid_name = strdup(alias->value); } ast_copy_string(p->caller_h323id, alias->value, sizeof(p->caller_h323id)); + } else if (alias->type == T_H225AliasAddress_dialedDigits) { + if (!p->callerid_num) { + p->callerid_num = strdup(alias->value); } - else if(alias->type == T_H225AliasAddress_dialedDigits) - { - if(!p->callerid_num) - p->callerid_num = strdup(alias->value); ast_copy_string(p->caller_dialedDigits, alias->value, sizeof(p->caller_dialedDigits)); - } - else if(alias->type == T_H225AliasAddress_email_ID) - { + } else if (alias->type == T_H225AliasAddress_email_ID) { ast_copy_string(p->caller_email, alias->value, sizeof(p->caller_email)); - } - else if(alias->type == T_H225AliasAddress_url_ID) - { + } else if (alias->type == T_H225AliasAddress_url_ID) { ast_copy_string(p->caller_url, alias->value, sizeof(p->caller_url)); } } } number[0] = '\0'; - if(ooCallGetCalledPartyNumber(call, number, OO_MAX_NUMBER_LENGTH)== OO_OK) { - strncpy(p->exten, number, sizeof(p->exten)-1); - } else { + if (ooCallGetCalledPartyNumber(call, number, OO_MAX_NUMBER_LENGTH) == OO_OK) { + ast_copy_string(p->exten, number, sizeof(p->exten)); + } else { update_our_aliases(call, p); if (!ast_strlen_zero(p->callee_dialedDigits)) { - ast_copy_string(p->exten, p->callee_dialedDigits, sizeof(p->exten)); - } else if(!ast_strlen_zero(p->callee_h323id)) { + ast_copy_string(p->exten, p->callee_dialedDigits, sizeof(p->exten)); + } else if (!ast_strlen_zero(p->callee_h323id)) { ast_copy_string(p->exten, p->callee_h323id, sizeof(p->exten)); - } else if(!ast_strlen_zero(p->callee_email)) { + } else if (!ast_strlen_zero(p->callee_email)) { ast_copy_string(p->exten, p->callee_email, sizeof(p->exten)); if ((at = strchr(p->exten, '@'))) { *at = '\0'; @@ -1438,22 +1223,17 @@ /* if no extension found, set to default 's' */ if (ast_strlen_zero(p->exten)) { - p->exten[0]='s'; - p->exten[1]='\0'; + ast_copy_string(p->exten, "s", sizeof(p->exten)); } - /* May there isn't needed to setup ip as name */ - /* if (!p->callerid_name) { + if (!p->callerid_name) { p->callerid_name = strdup(call->remoteIP); } - if (p->callerid_name) { */ - user = find_user(p->callerid_name, call->remoteIP); - if(user && (user->incominglimit == 0 || user->inUse < user->incominglimit)) { + if (p->callerid_name) { + if ((user = find_user(p->callerid_name, call->remoteIP))) { ast_mutex_lock(&user->lock); p->username = strdup(user->name); - p->neighbor.user = user->mUseIP ? ast_strdup(user->mIP) : - ast_strdup(user->name); ast_copy_string(p->context, user->context, sizeof(p->context)); ast_copy_string(p->accountcode, user->accountcode, sizeof(p->accountcode)); p->amaflags = user->amaflags; @@ -1463,36 +1243,14 @@ /* Since, call is coming from a pbx user, no need to use gk */ OO_SETFLAG(p->flags, H323_DISABLEGK); OO_SETFLAG(call->flags, OO_M_DISABLEGK); - if (user->incominglimit) user->inUse++; ast_mutex_unlock(&user->lock); - } else { - if (!OO_TESTFLAG(p->flags,H323_DISABLEGK)) { - p->username = strdup(call->remoteIP); - } else { - ast_mutex_unlock(&p->lock); - ast_log(LOG_ERROR, "Unacceptable ip %s\n", call->remoteIP); - ast_mutex_lock(&ooh323c_cmd_lock); - if (!user) - ooHangCall(call->callToken, ooh323_convert_hangupcause_asteriskToH323(AST_CAUSE_CALL_REJECTED), AST_CAUSE_CALL_REJECTED); - else - ooHangCall(call->callToken, ooh323_convert_hangupcause_asteriskToH323(AST_CAUSE_NORMAL_CIRCUIT_CONGESTION), AST_CAUSE_NORMAL_CIRCUIT_CONGESTION); - ast_mutex_unlock(&ooh323c_cmd_lock); - ast_set_flag(p, H323_NEEDDESTROY); - return -1; - } + } } -/* } */ + ooh323c_set_capability_for_call(call, &p->prefs, p->capability, p->dtmfmode); configure_local_rtp(p, call); -/* Incoming call */ - c = ooh323_new(p, AST_STATE_RING, p->username, p->capability); - if(!c) { - ast_mutex_unlock(&p->lock); - ast_log(LOG_ERROR, "Could not create ast_channel\n"); - return -1; - } ast_mutex_unlock(&p->lock); if (gH323Debug) @@ -1504,105 +1262,38 @@ -int onOutgoingCall(ooCallData *call) -{ - struct ooh323_pvt *p = NULL; - int i = 0; - - if (gH323Debug) - ast_verbose("--- onOutgoingCall %lx: %s\n", call, call->callToken); - - if (strcmp(call->callType, "outgoing")) { - p = find_call(call); - if (!p) { - ast_log(LOG_ERROR, "Failed to find a matching call.\n"); - return -1; - } - ast_mutex_lock(&p->lock); - - if (p->callerid_name) { - ooCallSetCallerId(call, p->callerid_name); - } - if (p->callerid_num) { - i = 0; - while (*(p->callerid_num + i) != '\0') { - if(!isdigit(*(p->callerid_num+i))) { break; } - i++; - } - if(*(p->callerid_num+i) == '\0') - ooCallSetCallingPartyNumber(call, p->callerid_num); - else { - if(!p->callerid_name) - ooCallSetCallerId(call, p->callerid_num); - } - } - - if (!ast_strlen_zero(p->caller_h323id)) - ooCallAddAliasH323ID(call, p->caller_h323id); - - if (!ast_strlen_zero(p->caller_dialedDigits)) { - if (gH323Debug) { - ast_verbose("Setting dialed digits %s\n", p->caller_dialedDigits); - } - ooCallAddAliasDialedDigits(call, p->caller_dialedDigits); - } else if (p->callerid_num) { - if (ooIsDailedDigit(p->callerid_num)) { - if (gH323Debug) { - ast_verbose("setting callid number %s\n", p->callerid_num); - } - ooCallAddAliasDialedDigits(call, p->callerid_num); - } else if (ast_strlen_zero(p->caller_h323id)) { - ooCallAddAliasH323ID(call, p->callerid_num); - } - } - - - ast_mutex_unlock(&p->lock); - } - - if (gH323Debug) - ast_verbose("+++ onOutgoingCall %s\n", call->callToken); - return OO_OK; -} - - int onNewCallCreated(ooCallData *call) { struct ooh323_pvt *p = NULL; int i = 0; if (gH323Debug) - ast_verbose("--- onNewCallCreated %lx: %s\n", call, call->callToken); - - ast_mutex_lock(&call->Lock); - if (ooh323c_start_call_thread(call)) { - ast_log(LOG_ERROR,"Failed to create call thread.\n"); - ast_mutex_unlock(&call->Lock); - return -1; - } + ast_verbose("--- onNewCallCreated %s\n", call->callToken); if (!strcmp(call->callType, "outgoing")) { p = find_call(call); if (!p) { - ast_log(LOG_ERROR, "Failed to find a matching call.\n"); + ast_log(LOG_ERROR, "No matching call found for outgoing call\n"); return -1; } ast_mutex_lock(&p->lock); - if (p->callerid_name) { ooCallSetCallerId(call, p->callerid_name); } if (p->callerid_num) { i = 0; while (*(p->callerid_num + i) != '\0') { - if(!isdigit(*(p->callerid_num+i))) { break; } + if (!isdigit(*(p->callerid_num + i))) { + break; + } i++; } - if(*(p->callerid_num+i) == '\0') + if (*(p->callerid_num + i) == '\0') { ooCallSetCallingPartyNumber(call, p->callerid_num); - else { - if(!p->callerid_name) + } else { + if (!p->callerid_name) { ooCallSetCallerId(call, p->callerid_num); + } } } @@ -1639,19 +1330,17 @@ char prefsBuf[256]; ast_codec_pref_string(&p->prefs, prefsBuf, sizeof(prefsBuf)); ast_verbose(" Outgoing call %s(%s) - Codec prefs - %s\n", - p->username?p->username:"NULL", call->callToken, prefsBuf); + p->username?p->username:"NULL", call->callToken, prefsBuf); } - ooh323c_set_capability_for_call(call, &p->prefs, p->capability, - p->dtmfmode); + ooh323c_set_capability_for_call(call, &p->prefs, p->capability, p->dtmfmode); configure_local_rtp(p, call); ast_mutex_unlock(&p->lock); } - - ast_mutex_unlock(&call->Lock); if (gH323Debug) ast_verbose("+++ onNewCallCreated %s\n", call->callToken); + return OO_OK; } @@ -1662,33 +1351,33 @@ if (gH323Debug) ast_verbose("--- onCallEstablished %s\n", call->callToken); - if (!(p = find_call(call))) { ast_log(LOG_ERROR, "Failed to find a matching call.\n"); return -1; } - - if(ast_test_flag(p, H323_OUTGOING)) { - ast_mutex_lock(&p->lock); - if (!p->owner) { - ast_mutex_unlock(&p->lock); - ast_log(LOG_ERROR, "Channel has no owner\n"); - return -1; - } + ast_mutex_lock(&p->lock); + if (!p->owner) { + ast_mutex_unlock(&p->lock); + ast_log(LOG_ERROR, "Channel has no owner\n"); + return -1; + } - while (p->owner && ast_channel_trylock(p->owner)) { - ast_debug(1,"Failed to grab lock, trying again\n"); - ast_mutex_unlock(&p->lock); - usleep(1); - ast_mutex_lock(&p->lock); - } - if (p->owner) { - struct ast_channel* c = p->owner; - ast_queue_control(c, AST_CONTROL_ANSWER); - ast_channel_unlock(p->owner); - } + while (ast_channel_trylock(p->owner)) { + ast_debug(1,"Failed to grab lock, trying again\n"); + ast_mutex_unlock(&p->lock); + usleep(1); + ast_mutex_lock(&p->lock); + } + if (p->owner->_state != AST_STATE_UP) { + ast_setstate(p->owner, AST_STATE_UP); + } + ast_channel_unlock(p->owner); + if (ast_test_flag(p, H323_OUTGOING)) { + struct ast_channel* c = p->owner; + ast_mutex_unlock(&p->lock); + ast_queue_control(c, AST_CONTROL_ANSWER); + } else { ast_mutex_unlock(&p->lock); - } if (gH323Debug) @@ -1705,48 +1394,42 @@ if (gH323Debug) ast_verbose("--- onCallCleared %s \n", call->callToken); - - if ((p = find_call(call))) { + p = find_call(call); + if (!p) { + return 0; + } ast_mutex_lock(&p->lock); while (p->owner) { if (ast_channel_trylock(p->owner)) { ooTrace(OOTRCLVLINFO, "Failed to grab lock, trying again\n"); - ast_log(LOG_DEBUG,"Failed to grab lock, trying again\n"); + ast_debug(1,"Failed to grab lock, trying again\n"); ast_mutex_unlock(&p->lock); usleep(1); ast_mutex_lock(&p->lock); } else { - ownerLock = 1; break; + ownerLock = 1; + break; } } if (ownerLock) { if (!ast_test_flag(p, H323_ALREADYGONE)) { + /* NOTE: Channel is not detached yet */ ast_set_flag(p, H323_ALREADYGONE); - p->owner->hangupcause = call->q931cause; + p->owner->hangupcause = + ooh323_convert_hangupcause_h323ToAsterisk(call->callEndReason); p->owner->_softhangup |= AST_SOFTHANGUP_DEV; - ast_queue_hangup_with_cause(p->owner,call->q931cause); + ast_channel_unlock(p->owner); + ast_queue_hangup(p->owner); + ast_mutex_unlock(&p->lock); + return OO_OK; } - } - - if(p->owner) { - p->owner->tech_pvt = NULL; ast_channel_unlock(p->owner); - p->owner = NULL; } - ast_set_flag(p, H323_NEEDDESTROY); - - ooh323c_stop_call_thread(call); - ast_mutex_unlock(&p->lock); - ast_mutex_lock(&usecnt_lock); - usecnt--; - ast_mutex_unlock(&usecnt_lock); - - } if (gH323Debug) ast_verbose("+++ onCallCleared\n"); @@ -1754,6 +1437,7 @@ return OO_OK; } +#if 0 static void ooh323_delete_user(struct ooh323_user *user) { struct ooh323_user *prev = NULL, *cur = NULL; @@ -1785,6 +1469,7 @@ ast_verbose("+++ ooh323_delete_user\n"); } +#endif void ooh323_delete_peer(struct ooh323_peer *peer) { @@ -1794,33 +1479,36 @@ ast_verbose("--- ooh323_delete_peer\n"); if (peer) { - cur = peerl.peers; ast_mutex_lock(&peerl.lock); - while(cur) { - if(cur==peer) break; - prev = cur; - cur = cur->next; + for (cur = peerl.peers; cur; prev = cur, cur = cur->next) { + if (cur == peer) { + break; + } } if (cur) { - if(prev) + if (prev) { prev->next = cur->next; - else + } else { peerl.peers = cur->next; } + } ast_mutex_unlock(&peerl.lock); - if(peer->h323id) free(peer->h323id); - if(peer->email) free(peer->email); - if(peer->url) free(peer->url); - if(peer->e164) free(peer->e164); + if (peer->h323id) + free(peer->h323id); + if (peer->email) + free(peer->email); + if (peer->url) + free(peer->url); + if (peer->e164) + free(peer->e164); free(peer); } if (gH323Debug) ast_verbose("+++ ooh323_delete_peer\n"); - } @@ -1832,7 +1520,7 @@ if (gH323Debug) ast_verbose("--- build_user\n"); - user = ast_calloc(1,sizeof(struct ooh323_user)); + user = ast_calloc(1, sizeof(*user)); if (user) { ast_mutex_init(&user->lock); ast_copy_string(user->name, name, sizeof(user->name)); @@ -1853,7 +1541,7 @@ if (user->incominglimit < 0) user->incominglimit = 0; } else if (!strcasecmp(v->name, "accountcode")) { - strncpy(user->accountcode, v->value, sizeof(user->accountcode)-1); + ast_copy_string(user->accountcode, v->value, sizeof(user->accountcode)); } else if (!strcasecmp(v->name, "rtptimeout")) { user->rtptimeout = atoi(v->value); if (user->rtptimeout < 0) @@ -1871,11 +1559,7 @@ } else if (!strcasecmp(v->name, "amaflags")) { user->amaflags = ast_cdr_amaflags2int(v->value); } else if (!strcasecmp(v->name, "ip")) { - strncpy(user->mIP, v->value, sizeof(user->mIP)-1); - user->mUseIP = 1; - } - else if (!strcasecmp(v->name, "host")) { - strncpy(user->mIP, v->value, sizeof(user->mIP)-1); + ast_copy_string(user->mIP, v->value, sizeof(user->mIP)); user->mUseIP = 1; } else if (!strcasecmp(v->name, "dtmfmode")) { if (!strcasecmp(v->value, "rfc2833")) @@ -1910,19 +1594,18 @@ ast_mutex_init(&peer->lock); ast_copy_string(peer->name, name, sizeof(peer->name)); peer->capability = gCapability; - memcpy(&peer->prefs, &gPrefs, sizeof(peer->prefs)); + memcpy(&peer->prefs, &gPrefs, sizeof(struct ast_codec_pref)); peer->rtptimeout = gRTPTimeout; ast_copy_string(peer->accountcode, gAccountcode, sizeof(peer->accountcode)); peer->amaflags = gAMAFLAGS; peer->dtmfmode = gDTMFMode; - peer->port = 1720; if (0 == friend_type) { peer->mFriend = 1; } while (v) { if (!strcasecmp(v->name, "h323id")) { - if (!(peer->h323id = ast_strdup(v->value))) { + if (!(peer->h323id = ast_strdup(v->value))) { ast_log(LOG_ERROR, "Could not allocate memory for h323id of " "peer %s\n", name); ooh323_delete_peer(peer); @@ -1953,18 +1636,16 @@ peer->port = atoi(v->value); } else if (!strcasecmp(v->name, "ip")) { ast_copy_string(peer->ip, v->value, sizeof(peer->ip)); - } else if (!strcasecmp(v->name, "host")) { - ast_copy_string(peer->ip, v->value, sizeof(peer->ip)); } else if (!strcasecmp(v->name, "outgoinglimit")) { - peer->outgoinglimit = atoi(v->value); - if (peer->outgoinglimit < 0) + if ((peer->outgoinglimit = atoi(v->value)) < 0) { peer->outgoinglimit = 0; + } } else if (!strcasecmp(v->name, "accountcode")) { ast_copy_string(peer->accountcode, v->value, sizeof(peer->accountcode)); } else if (!strcasecmp(v->name, "rtptimeout")) { - peer->rtptimeout = atoi(v->value); - if(peer->rtptimeout < 0) + if ((peer->rtptimeout = atoi(v->value)) < 0) { peer->rtptimeout = gRTPTimeout; + } } else if (!strcasecmp(v->name, "disallow")) { ast_parse_allow_disallow(&peer->prefs, &peer->capability, v->value, 0); @@ -2003,7 +1684,7 @@ ast_verbose("--- ooh323_do_reload\n"); } - reload_config(1); + reload_config(1); if (gH323Debug) { ast_verbose("+++ ooh323_do_reload\n"); @@ -2012,32 +1693,19 @@ return 0; } +#if 0 /*--- h323_reload: Force reload of module from cli ---*/ - -static char *handle_cli_ooh323_reload(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) +static int ooh323_reload(int fd, int argc, char *argv[]) { - switch (cmd) { - case CLI_INIT: - e->command = "ooh323 reload"; - e->usage = - "Usage: ooh323 reload\n" - " Reload OOH323 config.\n"; - return NULL; - case CLI_GENERATE: - return NULL; - } - - if (a->argc != 2) - return CLI_SHOWUSAGE; - if (gH323Debug) ast_verbose("--- ooh323_reload\n"); ast_mutex_lock(&h323_reload_lock); if (h323_reloading) { ast_verbose("Previous OOH323 reload not yet done\n"); - } else { + } + else { h323_reloading = 1; } ast_mutex_unlock(&h323_reload_lock); @@ -2048,16 +1716,19 @@ return 0; } +#endif +#if 0 static int reload(void *mod) { return ooh323_reload(0, 0, NULL); } +#endif int reload_config(int reload) { int format; - struct ooAliases *pNewAlias = NULL, *cur, *prev; + struct ooAliases *pNewAlias = NULL; struct ast_config *cfg; struct ast_variable *v; struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 }; @@ -2081,17 +1752,6 @@ if (reload) { delete_users(); delete_peers(); - if (gH323Debug) { - ast_verbose(" reload_config - Freeing up alias list\n"); - } - cur = gAliasList; - while (cur) { - prev = cur; - cur = cur->next; - free(prev->value); - free(prev); - } - gAliasList = NULL; } /* Inintialize everything to default */ @@ -2099,7 +1759,7 @@ gPort = 1720; gIP[0] = '\0'; strcpy(gCallerID, DEFAULT_H323ID); - gCapability = AST_FORMAT_ALAW; + gCapability = AST_FORMAT_ULAW; memset(&gPrefs, 0, sizeof(struct ast_codec_pref)); gDTMFMode = H323_DTMF_RFC2833; gRasGkMode = RasNoGatekeeper; @@ -2124,7 +1784,7 @@ ast_copy_string(gIP, v->value, sizeof(gIP)); } else if (!strcasecmp(v->name, "h225portrange")) { char* endlimit = 0; - char temp[512]; + char temp[256]; ast_copy_string(temp, v->value, sizeof(temp)); endlimit = strchr(temp, ','); if (endlimit) { @@ -2133,12 +1793,16 @@ ooconfig.mTCPPortStart = atoi(temp); ooconfig.mTCPPortEnd = atoi(endlimit); + if (ooH323EpSetTCPPortRange(ooconfig.mTCPPortStart, + ooconfig.mTCPPortEnd) == OO_FAILED) { + ast_log(LOG_ERROR, "h225portrange: Failed to set range\n"); + } } else { ast_log(LOG_ERROR, "h225portrange: Invalid format, separate port range with \",\"\n"); } } else if (!strcasecmp(v->name, "gateway")) { gIsGateway = ast_true(v->value); - } else if (!strcasecmp(v->name, "faststart")) { + } else if (!strcasecmp(v->name, "faststart")) { gFastStart = ast_true(v->value); if (gFastStart) ooH323EpEnableFastStart(); @@ -2156,28 +1820,19 @@ ooH323EpEnableH245Tunneling(); else ooH323EpDisableH245Tunneling(); - } else if (!strcasecmp(v->name, "trybemaster")) { - gBeMaster = ast_true(v->value); - if (gBeMaster) - ooH323EpTryBeMaster(1); - else - ooH323EpTryBeMaster(0); } else if (!strcasecmp(v->name, "h323id")) { - pNewAlias = malloc(sizeof(struct ooAliases)); + pNewAlias = malloc(sizeof(*pNewAlias)); if (!pNewAlias) { ast_log(LOG_ERROR, "Failed to allocate memory for h323id alias\n"); return 1; } - if (gAliasList == NULL) { /* first h323id - set as callerid if callerid is not set */ - ast_copy_string(gCallerID, v->value, sizeof(gCallerID)); - } pNewAlias->type = T_H225AliasAddress_h323_ID; pNewAlias->value = strdup(v->value); pNewAlias->next = gAliasList; gAliasList = pNewAlias; pNewAlias = NULL; } else if (!strcasecmp(v->name, "e164")) { - pNewAlias = malloc(sizeof(struct ooAliases)); + pNewAlias = malloc(sizeof(*pNewAlias)); if (!pNewAlias) { ast_log(LOG_ERROR, "Failed to allocate memory for e164 alias\n"); return 1; @@ -2188,7 +1843,7 @@ gAliasList = pNewAlias; pNewAlias = NULL; } else if (!strcasecmp(v->name, "email")) { - pNewAlias = malloc(sizeof(struct ooAliases)); + pNewAlias = malloc(sizeof(*pNewAlias)); if (!pNewAlias) { ast_log(LOG_ERROR, "Failed to allocate memory for email alias\n"); return 1; @@ -2198,16 +1853,6 @@ pNewAlias->next = gAliasList; gAliasList = pNewAlias; pNewAlias = NULL; - } else if (!strcasecmp(v->name, "t35country")) { - t35countrycode = atoi(v->value); - } else if (!strcasecmp(v->name, "t35extensions")) { - t35extensions = atoi(v->value); - } else if (!strcasecmp(v->name, "manufacturer")) { - manufacturer = atoi(v->value); - } else if (!strcasecmp(v->name, "vendorid")) { - ast_copy_string(vendor, v->value, sizeof(vendor)); - } else if (!strcasecmp(v->name, "versionid")) { - ast_copy_string(version, v->value, sizeof(version)); } else if (!strcasecmp(v->name, "callerid")) { ast_copy_string(gCallerID, v->value, sizeof(gCallerID)); } else if (!strcasecmp(v->name, "incominglimit")) { @@ -2221,14 +1866,13 @@ gRasGkMode = RasDiscoverGatekeeper; } else { gRasGkMode = RasUseSpecificGatekeeper; - strncpy(gGatekeeper, v->value, sizeof(gGatekeeper)-1); + ast_copy_string(gGatekeeper, v->value, sizeof(gGatekeeper)); } } else if (!strcasecmp(v->name, "logfile")) { - strncpy(gLogFile, v->value, sizeof(gLogFile)-1); + ast_copy_string(gLogFile, v->value, sizeof(gLogFile)); } else if (!strcasecmp(v->name, "context")) { - strncpy(gContext, v->value, sizeof(gContext)-1); - ast_verbose(VERBOSE_PREFIX_3 " == Setting default context to %s\n", - gContext); + ast_copy_string(gContext, v->value, sizeof(gContext)); + ast_verb(3, " == Setting default context to %s\n", gContext); } else if (!strcasecmp(v->name, "rtptimeout")) { gRTPTimeout = atoi(v->value); if (gRTPTimeout <= 0) @@ -2253,7 +1897,7 @@ } else if (!strcasecmp(v->name, "amaflags")) { gAMAFLAGS = ast_cdr_amaflags2int(v->value); } else if (!strcasecmp(v->name, "accountcode")) { - ast_copy_string(gAccountcode, v->value, sizeof(gAccountcode)); + ast_copy_string(gAccountcode, v->value, sizeof(gAccountcode)-1); } else if (!strcasecmp(v->name, "disallow")) { ast_parse_allow_disallow(&gPrefs, &gCapability, v->value, 0); } else if (!strcasecmp(v->name, "allow")) { @@ -2274,8 +1918,7 @@ else if (!strcasecmp(v->value, "h245signal")) gDTMFMode = H323_DTMF_H245SIGNAL; else { - ast_log(LOG_WARNING, "Unknown dtmf mode '%s', using rfc2833\n", - v->value); + ast_log(LOG_WARNING, "Unknown dtmf mode '%s', using rfc2833\n", v->value); gDTMFMode = H323_DTMF_RFC2833; } } @@ -2330,10 +1973,8 @@ ast_verbose("+++ reload_config\n"); return 0; - } - static char *handle_cli_ooh323_show_peer(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { char ip_port[30]; @@ -2353,12 +1994,11 @@ if (a->argc != 4) return CLI_SHOWUSAGE; - ast_mutex_lock(&peerl.lock); peer = peerl.peers; while (peer) { ast_mutex_lock(&peer->lock); - if(!strcmp(peer->name, a->argv[3])) + if (!strcmp(peer->name, a->argv[3])) break; else { prev = peer; @@ -2368,32 +2008,32 @@ } if (peer) { - sprintf(ip_port, "%s:%d", peer->ip, peer->port); - ast_cli(a->fd, "%-15.15s%s\n", "Name: ", peer->name); - ast_cli(a->fd, "%-15.15s%s", "Format Prefs: ", "("); - print_codec_to_cli(a->fd, &peer->prefs); - ast_cli(a->fd, ")\n"); - ast_cli(a->fd, "%-15.15s", "DTMF Mode: "); + snprintf(ip_port, sizeof(ip_port), "%s:%d", peer->ip, peer->port); + ast_cli(a->fd, "%-15.15s%s\n", "Name: ", peer->name); + ast_cli(a->fd, "%-15.15s%s", "Format Prefs: ", "("); + print_codec_to_cli(a->fd, &peer->prefs); + ast_cli(a->fd, ")\n"); + ast_cli(a->fd, "%-15.15s", "DTMF Mode: "); if (peer->dtmfmode & H323_DTMF_RFC2833) - ast_cli(a->fd, "%s\n", "rfc2833"); + ast_cli(a->fd, "%s\n", "rfc2833"); else if (peer->dtmfmode & H323_DTMF_Q931) - ast_cli(a->fd, "%s\n", "q931keypad"); + ast_cli(a->fd, "%s\n", "q931keypad"); else if (peer->dtmfmode & H323_DTMF_H245ALPHANUMERIC) - ast_cli(a->fd, "%s\n", "h245alphanumeric"); + ast_cli(a->fd, "%s\n", "h245alphanumeric"); else if (peer->dtmfmode & H323_DTMF_H245SIGNAL) - ast_cli(a->fd, "%s\n", "h245signal"); + ast_cli(a->fd, "%s\n", "h245signal"); else - ast_cli(a->fd, "%s\n", "unknown"); - ast_cli(a->fd, "%-15.15s%s\n", "AccountCode: ", peer->accountcode); - ast_cli(a->fd, "%-15.15s%s\n", "AMA flags: ", + ast_cli(a->fd, "%s\n", "unknown"); + ast_cli(a->fd, "%-15.15s%s\n", "AccountCode: ", peer->accountcode); + ast_cli(a->fd, "%-15.15s%s\n", "AMA flags: ", ast_cdr_flags2str(peer->amaflags)); - ast_cli(a->fd, "%-15.15s%s\n", "IP:Port: ", ip_port); - ast_cli(a->fd, "%-15.15s%d\n", "OutgoingLimit: ", peer->outgoinglimit); - ast_cli(a->fd, "%-15.15s%d\n", "rtptimeout: ", peer->rtptimeout); + ast_cli(a->fd, "%-15.15s%s\n", "Ip:Port: ", ip_port); + ast_cli(a->fd, "%-15.15s%d\n", "OutgoingLimit: ", peer->outgoinglimit); + ast_cli(a->fd, "%-15.15s%d\n", "rtptimeout: ", peer->rtptimeout); ast_mutex_unlock(&peer->lock); } else { - ast_cli(a->fd, "Peer %s not found\n", a->argv[3]); - ast_cli(a->fd, "\n"); + ast_cli(a->fd, "Peer %s not found\n", a->argv[3]); + ast_cli(a->fd, "\n"); } ast_mutex_unlock(&peerl.lock); @@ -2402,9 +2042,10 @@ static char *handle_cli_ooh323_show_peers(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { + char ip_port[30]; + char formats[512]; struct ooh323_peer *prev = NULL, *peer = NULL; - char formats[512]; - char ip_port[30]; + #define FORMAT "%-15.15s %-15.15s %-23.23s %-s\n" switch (cmd) { @@ -2421,24 +2062,25 @@ if (a->argc != 3) return CLI_SHOWUSAGE; - ast_cli(a->fd, FORMAT, "Name", "Accountcode", "ip:port", "Formats"); + ast_cli(a->fd, FORMAT, "Name", "Accountcode", "ip:port", "Formats"); ast_mutex_lock(&peerl.lock); peer = peerl.peers; while (peer) { ast_mutex_lock(&peer->lock); snprintf(ip_port, sizeof(ip_port), "%s:%d", peer->ip, peer->port); - ast_cli(a->fd, FORMAT, peer->name, + ast_cli(a->fd, FORMAT, peer->name, peer->accountcode, ip_port, - ast_getformatname_multiple(formats,512,peer->capability)); + ast_getformatname_multiple(formats, sizeof(formats), peer->capability)); prev = peer; peer = peer->next; ast_mutex_unlock(&prev->lock); - } ast_mutex_unlock(&peerl.lock); + #undef FORMAT + return CLI_SUCCESS; } @@ -2478,14 +2120,13 @@ if (a->argc != 4) return CLI_SHOWUSAGE; - ast_mutex_lock(&userl.lock); user = userl.users; while (user) { ast_mutex_lock(&user->lock); - if(!strcmp(user->name, a->argv[3])) { + if (!strcmp(user->name, a->argv[3])) break; - } else { + else { prev = user; user = user->next; ast_mutex_unlock(&prev->lock); @@ -2493,32 +2134,30 @@ } if (user) { - ast_cli(a->fd, "%-15.15s%s\n", "Name: ", user->name); - ast_cli(a->fd, "%-15.15s%s", "Format Prefs: ", "("); - print_codec_to_cli(a->fd, &user->prefs); - ast_cli(a->fd, ")\n"); - ast_cli(a->fd, "%-15.15s", "DTMF Mode: "); + ast_cli(a->fd, "%-15.15s%s\n", "Name: ", user->name); + ast_cli(a->fd, "%-15.15s%s", "Format Prefs: ", "("); + print_codec_to_cli(a->fd, &user->prefs); + ast_cli(a->fd, ")\n"); + ast_cli(a->fd, "%-15.15s", "DTMF Mode: "); if (user->dtmfmode & H323_DTMF_RFC2833) - ast_cli(a->fd, "%s\n", "rfc2833"); + ast_cli(a->fd, "%s\n", "rfc2833"); else if (user->dtmfmode & H323_DTMF_Q931) - ast_cli(a->fd, "%s\n", "q931keypad"); + ast_cli(a->fd, "%s\n", "q931keypad"); else if (user->dtmfmode & H323_DTMF_H245ALPHANUMERIC) - ast_cli(a->fd, "%s\n", "h245alphanumeric"); + ast_cli(a->fd, "%s\n", "h245alphanumeric"); else if (user->dtmfmode & H323_DTMF_H245SIGNAL) - ast_cli(a->fd, "%s\n", "h245signal"); + ast_cli(a->fd, "%s\n", "h245signal"); else - ast_cli(a->fd, "%s\n", "unknown"); - ast_cli(a->fd, "%-15.15s%s\n", "AccountCode: ", user->accountcode); - ast_cli(a->fd, "%-15.15s%s\n", "AMA flags: ", - ast_cdr_flags2str(user->amaflags)); - ast_cli(a->fd, "%-15.15s%s\n", "Context: ", user->context); - ast_cli(a->fd, "%-15.15s%d\n", "IncomingLimit: ", user->incominglimit); - ast_cli(a->fd, "%-15.15s%d\n", "InUse: ", user->inUse); - ast_cli(a->fd, "%-15.15s%d\n", "rtptimeout: ", user->rtptimeout); + ast_cli(a->fd, "%s\n", "unknown"); + ast_cli(a->fd, "%-15.15s%s\n", "AccountCode: ", user->accountcode); + ast_cli(a->fd, "%-15.15s%s\n", "AMA flags: ", ast_cdr_flags2str(user->amaflags)); + ast_cli(a->fd, "%-15.15s%s\n", "Context: ", user->context); + ast_cli(a->fd, "%-15.15s%d\n", "IncomingLimit: ", user->incominglimit); + ast_cli(a->fd, "%-15.15s%d\n", "rtptimeout: ", user->rtptimeout); ast_mutex_unlock(&user->lock); } else { - ast_cli(a->fd, "User %s not found\n", a->argv[3]); - ast_cli(a->fd, "\n"); + ast_cli(a->fd, "User %s not found\n", a->argv[3]); + ast_cli(a->fd, "\n"); } ast_mutex_unlock(&userl.lock); @@ -2527,8 +2166,9 @@ static char *handle_cli_ooh323_show_users(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { + char formats[512]; struct ooh323_user *prev = NULL, *user = NULL; - char formats[512]; + #define FORMAT1 "%-15.15s %-15.15s %-15.15s %-s\n" switch (cmd) { @@ -2545,26 +2185,24 @@ if (a->argc != 3) return CLI_SHOWUSAGE; - - ast_cli(a->fd, FORMAT1, "Username", "Accountcode", "Context", "Formats"); + ast_cli(a->fd, FORMAT1, "Username", "Accountcode", "Context", "Formats"); ast_mutex_lock(&userl.lock); user = userl.users; - while(user) - { + while (user) { ast_mutex_lock(&user->lock); - ast_cli(a->fd, FORMAT1, user->name, + ast_cli(a->fd, FORMAT1, user->name, user->accountcode, user->context, ast_getformatname_multiple(formats, 512, user->capability)); prev = user; user = user->next; ast_mutex_unlock(&prev->lock); - } ast_mutex_unlock(&userl.lock); + #undef FORMAT1 - return RESULT_SUCCESS; + return CLI_SUCCESS; } static char *handle_cli_ooh323_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) @@ -2617,27 +2255,25 @@ if (a->argc != 3) return CLI_SHOWUSAGE; - - - ast_cli(a->fd, "\nObjective Open H.323 Channel Driver's Config:\n"); snprintf(value, sizeof(value), "%s:%d", gIP, gPort); - ast_cli(a->fd, "%-20s%s\n", "IP:Port: ", value); - ast_cli(a->fd, "%-20s%d-%d\n", "H.225 port range: ", - ooconfig.mTCPPortStart, ooconfig.mTCPPortEnd); - ast_cli(a->fd, "%-20s%s\n", "FastStart", gFastStart?"yes":"no"); - ast_cli(a->fd, "%-20s%s\n", "Tunneling", gTunneling?"yes":"no"); - ast_cli(a->fd, "%-20s%s\n", "CallerId", gCallerID); - ast_cli(a->fd, "%-20s%s\n", "MediaWaitForConnect", - gMediaWaitForConnect?"yes":"no"); + ast_cli(a->fd, "\nObjective Open H.323 Channel Driver's Config:\n"); + ast_cli(a->fd, "%-20s%s\n", "IP:Port: ", value); + ast_cli(a->fd, "%-20s%s\n", "FastStart", gFastStart?"yes":"no"); + ast_cli(a->fd, "%-20s%s\n", "Tunneling", gTunneling?"yes":"no"); + ast_cli(a->fd, "%-20s%s\n", "CallerId", gCallerID); + ast_cli(a->fd, "%-20s%s\n", "MediaWaitForConnect", gMediaWaitForConnect ? "yes" : "no"); -#if (0) +#if 0 + { extern OOH323EndPoint gH323ep; - ast_cli(a->fd, "%-20s%s\n", "FASTSTART", + + ast_cli(a->fd, "%-20s%s\n", "FASTSTART", (OO_TESTFLAG(gH323ep.flags, OO_M_FASTSTART) != 0) ? "yes" : "no"); - ast_cli(a->fd, "%-20s%s\n", "TUNNELING", + ast_cli(a->fd, "%-20s%s\n", "TUNNELING", (OO_TESTFLAG(gH323ep.flags, OO_M_TUNNELING) != 0) ? "yes" : "no"); - ast_cli(a->fd, "%-20s%s\n", "MEDIAWAITFORCONN", + ast_cli(a->fd, "%-20s%s\n", "MEDIAWAITFORCONN", (OO_TESTFLAG(gH323ep.flags, OO_M_MEDIAWAITFORCONN) != 0) ? "yes" : "no"); + } #endif if (gRasGkMode == RasNoGatekeeper) @@ -2647,47 +2283,38 @@ else snprintf(value, sizeof(value), "%s", gGatekeeper); - ast_cli(a->fd, "%-20s%s\n", "Gatekeeper:", value); - - ast_cli(a->fd, "%-20s%s\n", "H.323 LogFile:", gLogFile); - - ast_cli(a->fd, "%-20s%s\n", "Context:", gContext); - - ast_cli(a->fd, "%-20s%s\n", "Capability:", - ast_getformatname_multiple(value,512,gCapability)); - - ast_cli(a->fd, "%-20s", "DTMF Mode: "); + ast_cli(a->fd, "%-20s%s\n", "Gatekeeper:", value); + ast_cli(a->fd, "%-20s%s\n", "H.323 LogFile:", gLogFile); + ast_cli(a->fd, "%-20s%s\n", "Context:", gContext); + ast_cli(a->fd, "%-20s%s\n", "Capability:", ast_getformatname_multiple(value, sizeof(value), gCapability)); + ast_cli(a->fd, "%-20s", "DTMF Mode: "); if (gDTMFMode & H323_DTMF_RFC2833) - ast_cli(a->fd, "%s\n", "rfc2833"); + ast_cli(a->fd, "%s\n", "rfc2833"); else if (gDTMFMode & H323_DTMF_Q931) - ast_cli(a->fd, "%s\n", "q931keypad"); + ast_cli(a->fd, "%s\n", "q931keypad"); else if (gDTMFMode & H323_DTMF_H245ALPHANUMERIC) - ast_cli(a->fd, "%s\n", "h245alphanumeric"); + ast_cli(a->fd, "%s\n", "h245alphanumeric"); else if (gDTMFMode & H323_DTMF_H245SIGNAL) - ast_cli(a->fd, "%s\n", "h245signal"); + ast_cli(a->fd, "%s\n", "h245signal"); else - ast_cli(a->fd, "%s\n", "unknown"); - - ast_cli(a->fd, "%-20s%ld\n", "Call counter: ", callnumber); - ast_cli(a->fd, "%-20s%s\n", "AccountCode: ", gAccountcode); - - ast_cli(a->fd, "%-20s%s\n", "AMA flags: ", ast_cdr_flags2str(gAMAFLAGS)); + ast_cli(a->fd, "%s\n", "unknown"); + ast_cli(a->fd, "%-20s%s\n", "AccountCode: ", gAccountcode); + ast_cli(a->fd, "%-20s%s\n", "AMA flags: ", ast_cdr_flags2str(gAMAFLAGS)); pAlias = gAliasList; - if(pAlias) { - ast_cli(a->fd, "%-20s\n", "Aliases: "); - } + if (pAlias) + ast_cli(a->fd, "%-20s\n", "Aliases: "); while (pAlias) { pAliasNext = pAlias->next; if (pAliasNext) { - ast_cli(a->fd,"\t%-30s\t%-30s\n",pAlias->value, pAliasNext->value); + ast_cli(a->fd, "\t%-30s\t%-30s\n", pAlias->value, pAliasNext->value); pAlias = pAliasNext->next; - } - else{ - ast_cli(a->fd,"\t%-30s\n",pAlias->value); + } else { + ast_cli(a->fd, "\t%-30s\n", pAlias->value); pAlias = pAlias->next; } } + return CLI_SUCCESS; } @@ -2698,10 +2325,8 @@ AST_CLI_DEFINE(handle_cli_ooh323_show_peers, "Show defined OOH323 peers"), AST_CLI_DEFINE(handle_cli_ooh323_show_user, "Show details on specific OOH323 user"), AST_CLI_DEFINE(handle_cli_ooh323_show_users, "Show defined OOH323 users"), - AST_CLI_DEFINE(handle_cli_ooh323_reload, "reload ooh323 config") }; - static int load_module(void) { int res; @@ -2712,9 +2337,8 @@ OOH323CALLBACKS h323Callbacks = { .onNewCallCreated = onNewCallCreated, .onAlerting = onAlerting, - .onProgress = onProgress, .onIncomingCall = NULL, - .onOutgoingCall = onOutgoingCall, + .onOutgoingCall = NULL, .onCallEstablished = onCallEstablished, .onCallCleared = onCallCleared, .openLogicalChannels = NULL, @@ -2759,28 +2383,19 @@ /* fire up the H.323 Endpoint */ if (OO_OK != ooH323EpInitialize(OO_CALLMODE_AUDIOCALL, gLogFile)) { - ast_log(LOG_ERROR, "Failed to initialize OOH323 endpoint-" - "OOH323 Disabled\n"); + ast_log(LOG_ERROR, "Failed to initialize OOH323 endpoint-OOH323 Disabled\n"); return 1; } if (gIsGateway) ooH323EpSetAsGateway(); - ooH323EpSetVersionInfo(t35countrycode, t35extensions, manufacturer, vendor, version); - ooH323EpDisableAutoAnswer(); ooH323EpSetH225MsgCallbacks(h225Callbacks); - /* ooH323EpSetTraceLevel(OOTRCLVLDBGC); */ - ooH323EpSetTraceLevel(OOTRCLVLERR); + ooH323EpSetTraceLevel(OOTRCLVLDBGC); ooH323EpSetLocalAddress(gIP, gPort); ooH323EpSetCallerID(gCallerID); - if(ooH323EpSetTCPPortRange(ooconfig.mTCPPortStart, - ooconfig.mTCPPortEnd) == OO_FAILED) { - ast_log(LOG_ERROR, "h225portrange: Failed to set range\n"); - } - /* Set aliases if any */ for (pNewAlias = gAliasList; pNewAlias; pNewAlias = pNewAlias->next) { switch (pNewAlias->type) { @@ -2793,18 +2408,20 @@ case T_H225AliasAddress_email_ID: ooH323EpAddAliasEmailID(pNewAlias->value); break; - default: - ; } } ast_mutex_lock(&peerl.lock); peer = peerl.peers; while (peer) { - if(peer->h323id) ooH323EpAddAliasH323ID(peer->h323id); - if(peer->email) ooH323EpAddAliasEmailID(peer->email); - if(peer->e164) ooH323EpAddAliasDialedDigits(peer->e164); - if(peer->url) ooH323EpAddAliasURLID(peer->url); + if (peer->h323id) + ooH323EpAddAliasH323ID(peer->h323id); + if (peer->email) + ooH323EpAddAliasEmailID(peer->email); + if (peer->e164) + ooH323EpAddAliasDialedDigits(peer->e164); + if (peer->url) + ooH323EpAddAliasURLID(peer->url); peer = peer->next; } ast_mutex_unlock(&peerl.lock); @@ -2824,11 +2441,6 @@ if (!gTunneling) ooH323EpDisableH245Tunneling(); - if (gBeMaster) - ooH323EpTryBeMaster(1); - - ooH323EpEnableManualRingback(); - /* Gatekeeper */ if (gRasGkMode == RasUseSpecificGatekeeper) ooGkClientInit(gRasGkMode, gGatekeeper, 0); @@ -2844,18 +2456,17 @@ return 1; } + /* Create H.323 listener */ if (ooCreateH323Listener() != OO_OK) { - ast_log(LOG_ERROR, "OOH323 Listener Creation failure. " - "OOH323 DISABLED\n"); + ast_log(LOG_ERROR, "OOH323 Listener Creation failure. OOH323 DISABLED\n"); ooH323EpDestroy(); return 1; } if (ooh323c_start_stack_thread() < 0) { - ast_log(LOG_ERROR, "Failed to start OOH323 stack thread. " - "OOH323 DISABLED\n"); + ast_log(LOG_ERROR, "Failed to start OOH323 stack thread. OOH323 DISABLED\n"); ooH323EpDestroy(); return 1; } @@ -2885,7 +2496,6 @@ ast_verb(1, "Reloading H.323\n"); ooh323_do_reload(); } - /* Check for interfaces needing to be killed */ ast_mutex_lock(&iflock); time(&t); @@ -2896,21 +2506,11 @@ /* TODO: Need to add rtptimeout keepalive support */ if (ast_test_flag(h323, H323_NEEDDESTROY)) { ooh323_destroy (h323); - } /* else if (ast_test_flag(h323, H323_NEEDSTART) && h323->owner) { - ast_channel_lock(h323->owner); - if (ast_pbx_start(h323->owner)) { - ast_log(LOG_WARNING, "Unable to start PBX on %s\n", h323->owner->name); - ast_channel_unlock(h323->owner); - ast_hangup(h323->owner); - } - ast_channel_unlock(h323->owner); - ast_clear_flag(h323, H323_NEEDSTART); - } */ + } h323 = h323_next; } ast_mutex_unlock(&iflock); pthread_testcancel(); - /* Wait for sched or io */ res = ast_sched_wait(sched); if ((res < 0) || (res > 1000)) { @@ -2967,7 +2567,7 @@ { /* NOTE: Assumes iflock already acquired */ struct ooh323_pvt *prev = NULL, *cur = NULL; - struct ooh323_user *user = NULL; + if (gH323Debug) { ast_verbose("--- ooh323_destroy \n"); @@ -2991,7 +2591,6 @@ iflist = cur->next; if (cur->callToken) { - if (gH323Debug) ast_verbose(" Destroying %s\n", cur->callToken); free(cur->callToken); cur->callToken = 0; } @@ -3024,12 +2623,7 @@ /* Unlink us from the owner if we have one */ if (cur->owner) { - while(ast_channel_trylock(cur->owner)) { - ast_debug(1,"Failed to grab lock, trying again\n"); - ast_mutex_unlock(&cur->lock); - usleep(1); - ast_mutex_lock(&cur->lock); - } + ast_channel_lock(cur->owner); ast_debug(1, "Detaching from %s\n", cur->owner->name); cur->owner->tech_pvt = NULL; ast_channel_unlock(cur->owner); @@ -3040,23 +2634,6 @@ ast_dsp_free(cur->vad); cur->vad = NULL; } - -/* decrement user/peer count */ - - if(!ast_test_flag(cur, H323_OUTGOING)) { - if (cur->neighbor.user) { - user = find_user(p->callerid_name, cur->neighbor.user); - if(user && user->inUse > 0) { - ast_mutex_lock(&user->lock); - user->inUse--; - ast_mutex_unlock(&user->lock); - } - free(cur->neighbor.user); - } - } else { -/* outgoing limit decrement here !!! */ - } - ast_mutex_unlock(&cur->lock); ast_mutex_destroy(&cur->lock); @@ -3079,10 +2656,14 @@ cur = cur->next; ast_mutex_destroy(&prev->lock); - if(prev->h323id) free(prev->h323id); - if(prev->email) free(prev->email); - if(prev->url) free(prev->url); - if(prev->e164) free(prev->e164); + if (prev->h323id) + free(prev->h323id); + if (prev->email) + free(prev->email); + if (prev->url) + free(prev->url); + if (prev->e164) + free(prev->e164); free(prev); if (cur == peerl.peers) { @@ -3125,6 +2706,7 @@ ast_cli_unregister_multiple(cli_ooh323, sizeof(cli_ooh323) / sizeof(struct ast_cli_entry)); ast_rtp_proto_unregister(&ooh323_rtp); ast_channel_unregister(&ooh323_tech); + #if 0 ast_unregister_atexit(&ast_ooh323c_exit); #endif @@ -3298,23 +2880,15 @@ return OO_G711ALAW64K; case AST_FORMAT_GSM: return OO_GSMFULLRATE; - -#ifdef AST_FORMAT_AMRNB - case AST_FORMAT_AMRNB: - return OO_AMRNB; -#endif - case AST_FORMAT_G729A: return OO_G729A; - case AST_FORMAT_G726: - return OO_G726; case AST_FORMAT_G723_1: return OO_G7231; case AST_FORMAT_H263: return OO_H263VIDEO; default: ast_log(LOG_NOTICE, "Don't know how to deal with mode %s\n", - ast_getformatname_multiple(formats,512,cap)); + ast_getformatname_multiple(formats, sizeof(formats), cap)); return -1; } } @@ -3380,12 +2954,6 @@ ooAddMediaInfo(call, mediaInfo); strcpy(mediaInfo.dir, "receive"); ooAddMediaInfo(call, mediaInfo); - - strcpy(mediaInfo.dir, "transmit"); - mediaInfo.cap = OO_G729B; - ooAddMediaInfo(call, mediaInfo); - strcpy(mediaInfo.dir, "receive"); - ooAddMediaInfo(call, mediaInfo); } } @@ -3400,7 +2968,6 @@ { struct ooh323_pvt *p = NULL; struct sockaddr_in them; - char *callToken = (char *)NULL; if (gH323Debug) ast_verbose("--- setup_rtp_connection\n"); @@ -3418,9 +2985,9 @@ them.sin_port = htons(remotePort); ast_rtp_set_peer(p->rtp, &them); - if(gH323Debug) + if (gH323Debug) { ast_verbose("+++ setup_rtp_connection\n"); - + } return; } @@ -3429,13 +2996,13 @@ { struct ooh323_pvt *p = NULL; - if(gH323Debug) + if (gH323Debug) { ast_verbose("--- close_rtp_connection\n"); + } p = find_call(call); if (!p) { - ast_log(LOG_ERROR, "Couldn't find matching call to close rtp " - "connection\n"); + ast_log(LOG_ERROR, "Couldn't find matching call to close rtp connection\n"); return; } ast_mutex_lock(&p->lock); @@ -3444,8 +3011,9 @@ } ast_mutex_unlock(&p->lock); - if(gH323Debug) + if (gH323Debug) { ast_verbose("+++ close_rtp_connection\n"); + } return; } @@ -3464,8 +3032,7 @@ updated = 1; } if (psAlias->type == T_H225AliasAddress_dialedDigits) { - ast_copy_string(p->callee_dialedDigits, psAlias->value, - sizeof(p->callee_dialedDigits)); + ast_copy_string(p->callee_dialedDigits, psAlias->value, sizeof(p->callee_dialedDigits)); updated = 1; } if (psAlias->type == T_H225AliasAddress_url_ID) { @@ -3501,27 +3068,24 @@ default: f = &null_frame; } - /* Don't send RFC2833 if we're not supposed to */ - /* if (f && (f->frametype == AST_FRAME_DTMF) && !(p->dtmfmode & H323_DTMF_RFC2833)) { - return &null_frame; */ - + if (f && (f->frametype == AST_FRAME_DTMF) && !(p->dtmfmode & H323_DTMF_RFC2833)) { + return &null_frame; + } if (p->owner) { /* We already hold the channel lock */ if (f->frametype == AST_FRAME_VOICE) { if (f->subclass != p->owner->nativeformats) { - ast_debug(1, "Oooh, format changed to %d\n", f->subclass); + ast_debug(1, "Oooh, format changed to %d\n", f->subclass); p->owner->nativeformats = f->subclass; ast_set_read_format(p->owner, p->owner->readformat); ast_set_write_format(p->owner, p->owner->writeformat); } - /* if (!p->owner->readformat) - p->owner->readformat = p->owner->nativeformats; */ - if ((p->dtmfmode & H323_DTMF_INBAND) && p->vad) { f = ast_dsp_process(p->owner, p->vad, f); - if (f && (f->frametype == AST_FRAME_DTMF)) - ast_log(LOG_DEBUG, "* Detected inband DTMF '%c'\n",f->subclass); + if (f && (f->frametype == AST_FRAME_DTMF)) { + ast_debug(1, "* Detected inband DTMF '%c'\n", f->subclass); + } } } } @@ -3552,8 +3116,6 @@ } return 0; - - } int ooh323_convert_hangupcause_h323ToAsterisk(int cause) --- ../../asterisk-addons-1.6.1.0/channels/ooh323cDriver.c 2009-06-15 00:26:49.000000000 +0400 +++ channels/ooh323cDriver.c 2008-05-28 18:45:23.000000000 +0400 @@ -18,15 +18,11 @@ #include #include - -#undef AST_BACKGROUND_STACKSIZE -#define AST_BACKGROUND_STACKSIZE 768 * 1024 +#include extern OOBOOL gH323Debug; -extern OOH323EndPoint gH323ep; /* ooh323c stack thread. */ static pthread_t ooh323c_thread = AST_PTHREADT_NULL; -static pthread_t ooh323cmd_thread = AST_PTHREADT_NULL; static int grxframes = 240; static int gtxframes = 20; @@ -43,70 +39,13 @@ return dummy; } -void* ooh323c_cmd_thread(void* dummy) -{ - - ooMonitorCmdChannels(); - return dummy; -} - -void* ooh323c_call_thread(void* dummy) -{ - ooMonitorCallChannels((ooCallData*)dummy); - /* ast_mutex_lock(&call->Lock); - ast_mutex_unlock(&call->Lock); - ast_mutex_destroy(&call->Lock); - memFreePtr(&gH323ep.ctxt, call); */ - return dummy; -} - -/* int ooh323c_start_call_thread(ooCallData *call) { - if(ast_pthread_create(&call->callThread, NULL, ooh323c_call_thread, call) < 0) - { - ast_log(LOG_ERROR, "Unable to start ooh323c call thread for call %s\n", call->callToken); - return -1; - } - return 0; -} */ - -int ooh323c_start_call_thread(ooCallData *call) { - pthread_attr_t attr; - - pthread_attr_init(&attr); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); - - if(ast_pthread_create_background(&call->callThread, &attr, ooh323c_call_thread, call) < 0) - { - ast_log(LOG_ERROR, "Unable to start ooh323c call thread for call %s\n", call->callToken); - pthread_attr_destroy(&attr); - return -1; - } - pthread_attr_destroy(&attr); - return 0; -} - - -int ooh323c_stop_call_thread(ooCallData *call) { - if (call->callThread != AST_PTHREADT_NULL) { - ooStopMonitorCallChannels(call); - /* pthread_join(call->callThread, NULL); - call->callThread = AST_PTHREADT_NULL;*/ - } - return 0; -} - int ooh323c_start_stack_thread() { - if(ast_pthread_create_background(&ooh323c_thread, NULL, ooh323c_stack_thread, NULL) < 0) + if(ast_pthread_create(&ooh323c_thread, NULL, ooh323c_stack_thread, NULL) < 0) { ast_log(LOG_ERROR, "Unable to start ooh323c thread.\n"); return -1; } - if(ast_pthread_create_background(&ooh323cmd_thread, NULL, ooh323c_cmd_thread, NULL) < 0) - { - ast_log(LOG_ERROR, "Unable to start ooh323cmd thread.\n"); - return -1; - } return 0; } @@ -117,8 +56,6 @@ ooStopMonitor(); pthread_join(ooh323c_thread, NULL); ooh323c_thread = AST_PTHREADT_NULL; - pthread_join(ooh323cmd_thread, NULL); - ooh323cmd_thread = AST_PTHREADT_NULL; } return 0; } @@ -170,13 +107,6 @@ &ooh323c_start_transmit_channel, &ooh323c_stop_receive_channel, &ooh323c_stop_transmit_channel); - if(gH323Debug) - ast_verbose("\tAdding g729b capability to H323 endpoint\n"); - ret |= ooH323EpAddG729Capability(OO_G729B, 2, 24, - OORXANDTX, &ooh323c_start_receive_channel, - &ooh323c_start_transmit_channel, - &ooh323c_stop_receive_channel, - &ooh323c_stop_transmit_channel); } if(format & AST_FORMAT_G723_1) @@ -191,18 +121,6 @@ } - if(format & AST_FORMAT_G726) - { - if(gH323Debug) - ast_verbose("\tAdding g726 capability to H323 endpoint\n"); - ret = ooH323EpAddG726Capability(OO_G726, gtxframes, grxframes, FALSE, - OORXANDTX, &ooh323c_start_receive_channel, - &ooh323c_start_transmit_channel, - &ooh323c_stop_receive_channel, - &ooh323c_stop_transmit_channel); - - } - if(format & AST_FORMAT_H263) { if(gH323Debug) @@ -227,20 +145,6 @@ } -#ifdef AST_FORMAT_AMRNB - if(format & AST_FORMAT_AMRNB) - { - if(gH323Debug) - ast_verbose("\tAdding amr nb capability to H323 endpoint\n"); - ret = ooH323EpAddAMRNBCapability(OO_AMRNB, 4, 4, FALSE, - OORXANDTX, &ooh323c_start_receive_channel, - &ooh323c_start_transmit_channel, - &ooh323c_stop_receive_channel, - &ooh323c_stop_transmit_channel); - - } -#endif - } if(dtmf & H323_DTMF_RFC2833) @@ -261,11 +165,11 @@ if(gH323Debug) ast_verbose("\tAdding capabilities to call(%s, %s)\n", call->callType, call->callToken); - if(dtmf & H323_DTMF_RFC2833 || 1) + if(dtmf & H323_DTMF_RFC2833) ret |= ooCallEnableDTMFRFC2833(call,0); - if(dtmf & H323_DTMF_H245ALPHANUMERIC || 1) + else if(dtmf & H323_DTMF_H245ALPHANUMERIC) ret |= ooCallEnableDTMFH245Alphanumeric(call); - if(dtmf & H323_DTMF_H245SIGNAL || 1) + else if(dtmf & H323_DTMF_H245SIGNAL) ret |= ooCallEnableDTMFH245Signal(call); @@ -298,23 +202,8 @@ &ooh323c_stop_transmit_channel); } - if(format & AST_FORMAT_G726) - { - if(gH323Debug) - ast_verbose("\tAdding g726 capability to call (%s, %s)\n", - call->callType, call->callToken); - txframes = prefs->framing[x]; - ret = ooCallAddG726Capability(call, OO_G726, txframes, grxframes, FALSE, - OORXANDTX, &ooh323c_start_receive_channel, - &ooh323c_start_transmit_channel, - &ooh323c_stop_receive_channel, - &ooh323c_stop_transmit_channel); - - } - if(format & AST_FORMAT_G729A) { - if(gH323Debug) ast_verbose("\tAdding g729A capability to call(%s, %s)\n", call->callType, call->callToken); @@ -324,6 +213,7 @@ &ooh323c_start_transmit_channel, &ooh323c_stop_receive_channel, &ooh323c_stop_transmit_channel); + if(gH323Debug) ast_verbose("\tAdding g729 capability to call(%s, %s)\n", call->callType, call->callToken); @@ -332,15 +222,6 @@ &ooh323c_start_transmit_channel, &ooh323c_stop_receive_channel, &ooh323c_stop_transmit_channel); - if(gH323Debug) - ast_verbose("\tAdding g729B capability to call(%s, %s)\n", - call->callType, call->callToken); - ret|= ooCallAddG729Capability(call, OO_G729B, txframes, 24, - OORXANDTX, &ooh323c_start_receive_channel, - &ooh323c_start_transmit_channel, - &ooh323c_stop_receive_channel, - &ooh323c_stop_transmit_channel); - } if(format & AST_FORMAT_G723_1) @@ -380,20 +261,6 @@ &ooh323c_stop_receive_channel, &ooh323c_stop_transmit_channel); } - -#ifdef AST_FORMAT_AMRNB - if(format & AST_FORMAT_AMRNB) - { - if(gH323Debug) - ast_verbose("\tAdding AMR capability to call(%s, %s)\n", - call->callType, call->callToken); - ret = ooCallAddAMRNBCapability(call, OO_AMRNB, 4, 4, FALSE, - OORXANDTX, &ooh323c_start_receive_channel, - &ooh323c_start_transmit_channel, - &ooh323c_stop_receive_channel, - &ooh323c_stop_transmit_channel); - } -#endif } } @@ -428,9 +295,9 @@ { int fmt=-1; fmt = convertH323CapToAsteriskCap(pChannel->chanCap->cap); - if(fmt>0) { - /* ooh323_set_read_format(call, fmt); */ - }else{ + if(fmt>0) + ooh323_set_read_format(call, fmt); + else{ ast_log(LOG_ERROR, "Invalid capability type for receive channel %s\n", call->callToken); return -1; @@ -442,9 +309,9 @@ { int fmt=-1; fmt = convertH323CapToAsteriskCap(pChannel->chanCap->cap); - if(fmt>0) { + if(fmt>0) ooh323_set_write_format(call, fmt); - }else{ + else{ ast_log(LOG_ERROR, "Invalid capability type for receive channel %s\n", call->callToken); return -1; @@ -475,22 +342,12 @@ return AST_FORMAT_ALAW; case OO_GSMFULLRATE: return AST_FORMAT_GSM; - -#ifdef AST_FORMAT_AMRNB - case OO_AMRNB: - return AST_FORMAT_AMRNB; -#endif - case OO_G729: return AST_FORMAT_G729A; case OO_G729A: return AST_FORMAT_G729A; - case OO_G729B: - return AST_FORMAT_G729A; case OO_G7231: return AST_FORMAT_G723_1; - case OO_G726: - return AST_FORMAT_G726; case OO_H263VIDEO: return AST_FORMAT_H263; default: --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooq931.h 2009-05-30 06:40:48.000000000 +0400 +++ channels/ooh323c/src/ooq931.h 2008-02-07 23:59:47.000000000 +0300 @@ -45,7 +45,7 @@ #define OO_MAX_NUMBER_LENGTH 50 /* Maximum value for a call token identifier */ -#define OO_MAX_CALL_TOKEN 999999 +#define OO_MAX_CALL_TOKEN 9999 /* Q.931 packet must be at least 5 bytes long */ #define Q931_E_TOOSHORT (-1001) @@ -346,7 +346,7 @@ * * @return OO_OK, on success. OO_FAILED, on failure. */ -EXTERN int ooDecodeUUIE(OOCTXT* pctxt, Q931Message *q931Msg); +EXTERN int ooDecodeUUIE(Q931Message *q931Msg); /** * This function is used to encode the UUIE field of the Q931 message. @@ -356,7 +356,7 @@ * * @return OO_OK, on success. OO_FAILED, on failure. */ -EXTERN int ooEncodeUUIE(OOCTXT* pctxt, Q931Message *q931msg); +EXTERN int ooEncodeUUIE(Q931Message *q931msg); /** * This function is invoked to retrieve an IE element from a Q931 message. @@ -388,7 +388,7 @@ * * @return Completion status - 0 on success, -1 on failure */ -EXTERN int ooCreateQ931Message(OOCTXT* pctxt, Q931Message **msg, int msgType); +EXTERN int ooCreateQ931Message(Q931Message **msg, int msgType); /** * This function is invoked to generate a unique call reference number. @@ -414,7 +414,7 @@ * * @return Completion status - 0 on success, -1 on failure */ -EXTERN int ooFreeQ931Message(OOCTXT* pctxt, Q931Message *q931Msg); +EXTERN int ooFreeQ931Message(Q931Message *q931Msg); /** * This function is invoked to retrive the outgoing message buffer for @@ -549,7 +549,7 @@ * * @return OO_OK, on success. OO_FAILED, on failure. */ -EXTERN int ooH323HangCall(char * callToken, OOCallClearReason reason, int q931); +EXTERN int ooH323HangCall(char * callToken, OOCallClearReason reason); /** @@ -648,7 +648,7 @@ * * @return OO_OK on success, OO_FAILED, on failure. */ -EXTERN int ooQ931SetKeypadIE(OOCTXT* pctxt, Q931Message *pmsg, const char* data); +EXTERN int ooQ931SetKeypadIE(Q931Message *pmsg, const char* data); /** * This function is used to add a bearer capability IE to a Q931 message. @@ -663,7 +663,7 @@ * @return OO_OK on success, OO_FAILED, on failure. */ EXTERN int ooSetBearerCapabilityIE - (OOCTXT* pctxt, Q931Message *pmsg, enum Q931CodingStandard codingStandard, + (Q931Message *pmsg, enum Q931CodingStandard codingStandard, enum Q931InformationTransferCapability capability, enum Q931TransferMode transferMode, enum Q931TransferRate transferRate, enum Q931UserInfoLayer1Protocol userInfoLayer1); @@ -679,7 +679,7 @@ * @return OO_OK, on success. OO_FAILED, on failure. */ EXTERN int ooQ931SetCalledPartyNumberIE - (OOCTXT *pctxt, Q931Message *pmsg, const char *number, unsigned plan, unsigned type); + (Q931Message *pmsg, const char *number, unsigned plan, unsigned type); /** @@ -696,7 +696,7 @@ * @return OO_OK, on success. OO_FAILED, on failure. */ EXTERN int ooQ931SetCallingPartyNumberIE - (OOCTXT* pctxt, Q931Message *pmsg, const char *number, unsigned plan, unsigned type, + (Q931Message *pmsg, const char *number, unsigned plan, unsigned type, unsigned presentation, unsigned screening); /** @@ -709,7 +709,7 @@ * @return OO_OK, on success. OO_FAILED, on failure. */ EXTERN int ooQ931SetCauseIE - (OOCTXT *pctxt, Q931Message *pmsg,enum Q931CauseValues cause, unsigned coding, + (Q931Message *pmsg,enum Q931CauseValues cause, unsigned coding, unsigned location); /** --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/oochannels.c 2009-06-23 03:09:25.000000000 +0400 +++ channels/ooh323c/src/oochannels.c 2008-06-04 21:35:29.000000000 +0400 @@ -13,8 +13,6 @@ * maintain this copyright notice. * *****************************************************************************/ -#include -#include #include "ooports.h" #include "oochannels.h" @@ -32,11 +30,8 @@ #include "ooCmdChannel.h" #include "ootypes.h" - /** Global endpoint structure */ extern OOH323EndPoint gH323ep; -extern ast_mutex_t callListLock; -extern ast_mutex_t monitorLock; extern DList g_TimerList; @@ -65,7 +60,7 @@ *(call->h245listenport) = ret; call->h245listener = (OOSOCKET*)memAlloc(call->pctxt, sizeof(OOSOCKET)); *(call->h245listener) = channelSocket; - ret = ooSocketListen(*(call->h245listener), 4096); + ret = ooSocketListen(*(call->h245listener), 20); if(ret != ASN_OK) { OOTRACEERR3("Error:Unable to listen on H.245 socket (%s, %s)\n", @@ -233,9 +228,8 @@ int ooCreateH225Connection(OOH323CallData *call) { - int ret=0, i; + int ret=0; OOSOCKET channelSocket=0; - for (i=0;i<3;i++) { if((ret=ooSocketCreate (&channelSocket))!=ASN_OK) { OOTRACEERR3("Failed to create socket for transmit H2250 channel (%s, %s)" @@ -320,22 +314,19 @@ } else { - OOTRACEERR5("ERROR:Failed to connect to remote destination for " - "transmit H2250 channel(%s, %s, %d, %s)\n",call->callType, - call->callToken, channelSocket, call->localIP); - close(channelSocket); - + OOTRACEERR3("ERROR:Failed to connect to remote destination for " + "transmit H2250 channel(%s, %s)\n",call->callType, + call->callToken); if(call->callState < OO_CALL_CLEAR) { /* No one is listening at remote end */ call->callState = OO_CALL_CLEAR; call->callEndReason = OO_REASON_NOUSER; } - if (i>=2) return OO_FAILED; else continue; + return OO_FAILED; } return OO_FAILED; - } - } + } } int ooCloseH225Connection (OOH323CallData *call) @@ -373,7 +364,7 @@ gH323ep.listener = (OOSOCKET*)memAlloc(&gH323ep.ctxt,sizeof(OOSOCKET)); *(gH323ep.listener) = channelSocket; - ooSocketListen(channelSocket,2048); /*listen on socket*/ + ooSocketListen(channelSocket,20); /*listen on socket*/ OOTRACEINFO1("H323 listener creation - successful\n"); return OO_OK; } @@ -484,44 +475,6 @@ } -int ooSetCmdFDSETs(fd_set *pReadfds, fd_set *pWritefds, int *nfds) -{ - OOH323CallData *call=NULL; - - if(gH323ep.cmdSock) - { - FD_SET(gH323ep.cmdSock, pReadfds); - if(*nfds < (int)gH323ep.cmdSock) - *nfds = (int)gH323ep.cmdSock; - } - - - if(*nfds != 0) *nfds = *nfds+1; - - return OO_OK; - -} - -int ooProcessCmdFDSETsAndTimers - (fd_set *pReadfds, fd_set *pWritefds, struct timeval *pToMin) -{ - OOH323CallData *call, *prev=NULL; - struct timeval toNext; - - if(gH323ep.cmdSock) { - if(FD_ISSET(gH323ep.cmdSock, pReadfds)) { - if(ooReadAndProcessStackCommand() != OO_OK) { - /* ooReadAndProcessStackCommand prints an error message */ - return OO_FAILED; - } - } - } - - return OO_OK; - -} - - int ooSetFDSETs(fd_set *pReadfds, fd_set *pWritefds, int *nfds) { OOH323CallData *call=NULL; @@ -539,61 +492,60 @@ *nfds = *((int*)gH323ep.listener); } - if(*nfds != 0) *nfds = *nfds+1; - - return OO_OK; - -} - -int ooSetCallFDSETs(OOH323CallData* call, fd_set *pReadfds, fd_set *pWritefds, int *nfds) -{ + if(gH323ep.cmdSock) + { + FD_SET(gH323ep.cmdSock, pReadfds); + if(*nfds < (int)gH323ep.cmdSock) + *nfds = (int)gH323ep.cmdSock; + } - if(call) - { - if(call->cmdSock && call->callState < OO_CALL_CLEAR) - { - FD_SET(call->cmdSock, pReadfds); - if(*nfds < (int)call->cmdSock) - *nfds = (int)call->cmdSock; - } - if (0 != call->pH225Channel && 0 != call->pH225Channel->sock) - { - FD_SET (call->pH225Channel->sock, pReadfds); - if (call->pH225Channel->outQueue.count > 0 || - (OO_TESTFLAG (call->flags, OO_M_TUNNELING) && - 0 != call->pH245Channel && - call->pH245Channel->outQueue.count>0)) - FD_SET (call->pH225Channel->sock, pWritefds); - if(*nfds < (int)call->pH225Channel->sock) - *nfds = call->pH225Channel->sock; - } - - if (0 != call->pH245Channel && call->pH245Channel->sock != 0) + + if(gH323ep.callList) + { + call = gH323ep.callList; + while(call) { - FD_SET(call->pH245Channel->sock, pReadfds); - if (call->pH245Channel->outQueue.count>0) - FD_SET(call->pH245Channel->sock, pWritefds); - if(*nfds < (int)call->pH245Channel->sock) - *nfds = call->pH245Channel->sock; - } - else if(call->h245listener) - { - OOTRACEINFO3("H.245 Listerner socket being monitored " - "(%s, %s)\n", call->callType, call->callToken); - FD_SET(*(call->h245listener), pReadfds); - if(*nfds < (int)*(call->h245listener)) - *nfds = *(call->h245listener); - } - + if (0 != call->pH225Channel && 0 != call->pH225Channel->sock) + { + FD_SET (call->pH225Channel->sock, pReadfds); + if (call->pH225Channel->outQueue.count > 0 || + (OO_TESTFLAG (call->flags, OO_M_TUNNELING) && + 0 != call->pH245Channel && + call->pH245Channel->outQueue.count>0)) + FD_SET (call->pH225Channel->sock, pWritefds); + if(*nfds < (int)call->pH225Channel->sock) + *nfds = call->pH225Channel->sock; + } + + if (0 != call->pH245Channel && call->pH245Channel->sock != 0) + { + FD_SET(call->pH245Channel->sock, pReadfds); + if (call->pH245Channel->outQueue.count>0) + FD_SET(call->pH245Channel->sock, pWritefds); + if(*nfds < (int)call->pH245Channel->sock) + *nfds = call->pH245Channel->sock; + } + else if(call->h245listener) + { + OOTRACEINFO3("H.245 Listerner socket being monitored " + "(%s, %s)\n", call->callType, call->callToken); + FD_SET(*(call->h245listener), pReadfds); + if(*nfds < (int)*(call->h245listener)) + *nfds = *(call->h245listener); + } + call = call->next; + + }/* while(call) */ + }/*if(gH323ep.callList) */ - } if(*nfds != 0) *nfds = *nfds+1; return OO_OK; + } - + int ooProcessFDSETsAndTimers (fd_set *pReadfds, fd_set *pWritefds, struct timeval *pToMin) { @@ -624,6 +576,15 @@ } } + if(gH323ep.cmdSock) { + if(FD_ISSET(gH323ep.cmdSock, pReadfds)) { + if(ooReadAndProcessStackCommand() != OO_OK) { + /* ooReadAndProcessStackCommand prints an error message */ + return OO_FAILED; + } + } + } + /* Manage ready descriptors after select */ if(0 != gH323ep.gkClient && 0 != gH323ep.gkClient->rasSocket) @@ -648,182 +609,97 @@ } - return OO_OK; - -} -int ooProcessCallFDSETsAndTimers - (OOH323CallData *call, fd_set *pReadfds, fd_set *pWritefds, struct timeval *pToMin) -{ - struct timeval toNext; - - if(call) + if(gH323ep.callList) { - - if(call->cmdSock) { - if(FD_ISSET(call->cmdSock, pReadfds)) { - ast_mutex_lock(&call->Lock); - if(ooReadAndProcessCallStackCommand(call) != OO_OK) { - /* ooReadAndProcessStackCommand prints an error message */ - ast_mutex_unlock(&call->Lock); - return OO_FAILED; - } - ast_mutex_unlock(&call->Lock); - } - } - - ooTimerFireExpired(call->pctxt, &call->timerList); - if (0 != call->pH225Channel && 0 != call->pH225Channel->sock) - { - if(FD_ISSET(call->pH225Channel->sock, pReadfds)) - { - if(ooH2250Receive(call) != OO_OK) - { - OOTRACEERR3("ERROR:Failed ooH2250Receive - Clearing call " - "(%s, %s)\n", call->callType, call->callToken); - if(call->callState < OO_CALL_CLEAR) - { - call->callEndReason = OO_REASON_INVALIDMESSAGE; - call->callState = OO_CALL_CLEAR; - } - } - } - } - - if (0 != call->pH245Channel && 0 != call->pH245Channel->sock) - { - if(FD_ISSET(call->pH245Channel->sock, pReadfds)) - { - ooH245Receive(call); - } - } - - if (0 != call->pH245Channel && 0 != call->pH245Channel->sock) - { - if(FD_ISSET(call->pH245Channel->sock, pWritefds)) - { - if(call->pH245Channel->outQueue.count>0) - ooSendMsg(call, OOH245MSG); - } - } - else if(call->h245listener) - { - if(FD_ISSET(*(call->h245listener), pReadfds)) - { - OOTRACEDBGC3("Incoming H.245 connection (%s, %s)\n", - call->callType, call->callToken); - ooAcceptH245Connection(call); - } - } - - if (0 != call->pH225Channel && 0 != call->pH225Channel->sock) - { - if(FD_ISSET(call->pH225Channel->sock, pWritefds)) - { - if(call->pH225Channel->outQueue.count>0) - { - OOTRACEDBGC3("Sending H225 message (%s, %s)\n", - call->callType, call->callToken); - ooSendMsg(call, OOQ931MSG); - } - if(call->pH245Channel && - call->pH245Channel->outQueue.count>0 && - OO_TESTFLAG (call->flags, OO_M_TUNNELING)) + call = gH323ep.callList; + while(call) { - OOTRACEDBGC3("H245 message needs to be tunneled. " - "(%s, %s)\n", call->callType, - call->callToken); - ooSendMsg(call, OOH245MSG); - } - } - } - - if(ooTimerNextTimeout(&call->timerList, &toNext)) - { - if(ooCompareTimeouts(pToMin, &toNext) > 0) - { - pToMin->tv_sec = toNext.tv_sec; - pToMin->tv_usec = toNext.tv_usec; - } - } - - if(call->callState >= OO_CALL_CLEAR && call->callState < OO_CALL_CLEARED) { - ast_mutex_lock(&call->Lock); - ooEndCall(call); - ast_mutex_unlock(&call->Lock); - } else if(call->callState == OO_CALL_CLEARED) { - ast_mutex_lock(&call->Lock); - ooEndCall(call); - ast_mutex_unlock(&call->Lock); - ooStopMonitorCallChannels(call); - } - } - - return OO_OK; - -} - -int ooMonitorCmdChannels() -{ - int ret=0, nfds=0; - struct timeval toMin, toNext; - fd_set readfds, writefds; - - gMonitor = TRUE; - - toMin.tv_sec = 3; - toMin.tv_usec = 0; - - while(1) - { - FD_ZERO(&readfds); - FD_ZERO(&writefds); - nfds = 0; - ooSetCmdFDSETs(&readfds, &writefds, &nfds); + ooTimerFireExpired(call->pctxt, &call->timerList); + if (0 != call->pH225Channel && 0 != call->pH225Channel->sock) + { + if(FD_ISSET(call->pH225Channel->sock, pReadfds)) + { + if(ooH2250Receive(call) != OO_OK) + { + OOTRACEERR3("ERROR:Failed ooH2250Receive - Clearing call " + "(%s, %s)\n", call->callType, call->callToken); + if(call->callState < OO_CALL_CLEAR) + { + call->callEndReason = OO_REASON_INVALIDMESSAGE; + call->callState = OO_CALL_CLEAR; + } + } + } + } - if(!gMonitor) { - OOTRACEINFO1("Ending Monitor thread\n"); - break; - } - - if(nfds == 0) -#ifdef _WIN32 - Sleep(10); -#else - { - toMin.tv_sec = 0; - toMin.tv_usec = 10000; - ooSocketSelect(1, 0, 0, 0, &toMin); - } -#endif - else - ret = ooSocketSelect(nfds, &readfds, &writefds, - NULL, &toMin); - - if(ret == -1) - { - - OOTRACEERR1("Error in select ...exiting\n"); - exit(-1); - continue; - } + if (0 != call->pH245Channel && 0 != call->pH245Channel->sock) + { + if(FD_ISSET(call->pH245Channel->sock, pReadfds)) + { + ooH245Receive(call); + } + } + + if (0 != call->pH245Channel && 0 != call->pH245Channel->sock) + { + if(FD_ISSET(call->pH245Channel->sock, pWritefds)) + { + if(call->pH245Channel->outQueue.count>0) + ooSendMsg(call, OOH245MSG); + } + } + else if(call->h245listener) + { + if(FD_ISSET(*(call->h245listener), pReadfds)) + { + OOTRACEDBGC3("Incoming H.245 connection (%s, %s)\n", + call->callType, call->callToken); + ooAcceptH245Connection(call); + } + } - toMin.tv_sec = 0; - toMin.tv_usec = 100000; /* 100ms*/ + if (0 != call->pH225Channel && 0 != call->pH225Channel->sock) + { + if(FD_ISSET(call->pH225Channel->sock, pWritefds)) + { + if(call->pH225Channel->outQueue.count>0) + { + OOTRACEDBGC3("Sending H225 message (%s, %s)\n", + call->callType, call->callToken); + ooSendMsg(call, OOQ931MSG); + } + if(call->pH245Channel && + call->pH245Channel->outQueue.count>0 && + OO_TESTFLAG (call->flags, OO_M_TUNNELING)) + { + OOTRACEDBGC3("H245 message needs to be tunneled. " + "(%s, %s)\n", call->callType, + call->callToken); + ooSendMsg(call, OOH245MSG); + } + } + } - ast_mutex_lock(&monitorLock); - if(ooProcessCmdFDSETsAndTimers(&readfds, &writefds, &toMin) != OO_OK) - { - /* ooStopMonitorCalls(); */ - ast_mutex_unlock(&monitorLock); - continue; - } - ast_mutex_unlock(&monitorLock); + if(ooTimerNextTimeout(&call->timerList, &toNext)) + { + if(ooCompareTimeouts(pToMin, &toNext) > 0) + { + pToMin->tv_sec = toNext.tv_sec; + pToMin->tv_usec = toNext.tv_usec; + } + } + prev = call; + call = call->next; + if(prev->callState >= OO_CALL_CLEAR) + ooEndCall(prev); + }/* while(call) */ + }/* if(gH323ep.callList) */ - }/* while(1)*/ return OO_OK; -} +} + int ooMonitorChannels() { int ret=0, nfds=0; @@ -883,7 +759,6 @@ toMin.tv_usec = 100000; /* 100ms*/ /*This is for test application. Not part of actual stack */ - ast_mutex_lock(&monitorLock); ooTimerFireExpired(&gH323ep.ctxt, &g_TimerList); if(ooTimerNextTimeout(&g_TimerList, &toNext)) { @@ -896,94 +771,13 @@ if(ooProcessFDSETsAndTimers(&readfds, &writefds, &toMin) != OO_OK) { - ast_mutex_unlock(&monitorLock); ooStopMonitorCalls(); continue; } - ast_mutex_unlock(&monitorLock); }/* while(1)*/ return OO_OK; } -int ooMonitorCallChannels(OOH323CallData *call) -{ - int ret=0, nfds=0; - struct timeval toMin, toNext; - fd_set readfds, writefds; - pthread_t thread; - - OOCTXT* pctxt; - - call->Monitor = TRUE; - - toMin.tv_sec = 3; - toMin.tv_usec = 0; - - while(1) - { - if(!call->Monitor) { - OOTRACEINFO1("Ending Call Monitor thread\n"); - break; - } - - FD_ZERO(&readfds); - FD_ZERO(&writefds); - nfds = 0; - ooSetCallFDSETs(call, &readfds, &writefds, &nfds); - - - if(nfds == 0) -#ifdef _WIN32 - Sleep(10); -#else - { - toMin.tv_sec = 0; - toMin.tv_usec = 10000; - ooSocketSelect(1, 0, 0, 0, &toMin); - } -#endif - else - ret = ooSocketSelect(nfds, &readfds, &writefds, - NULL, &toMin); - - if(ret == -1) - { - - OOTRACEERR2("Error in select %d ...exiting\n", errno); - call->callEndReason = OO_REASON_INVALIDMESSAGE; - call->callState = OO_CALL_CLEARED; - ooCleanCall(call); break; - - /* continue; - exit(-1); */ - } - - toMin.tv_sec = 0; - toMin.tv_usec = 100000; /* 100ms*/ - /*This is for test application. Not part of actual stack */ - - if(ooProcessCallFDSETsAndTimers(call, &readfds, &writefds, &toMin) != OO_OK) - { - ooStopMonitorCallChannels(call); - continue; - } - - }/* while(1)*/ - - if (call->cmdSock) - ooCloseCallCmdConnection(call); - - ast_mutex_lock(&call->Lock); - ast_mutex_unlock(&call->Lock); - ast_mutex_destroy(&call->Lock); - thread = call->callThread; - pctxt = call->pctxt; - freeContext(pctxt); - free(pctxt); - /* pthread_exit(&thread); */ - - return OO_OK; -} int ooH2250Receive(OOH323CallData *call) { @@ -991,9 +785,7 @@ ASN1OCTET message[MAXMSGLEN], message1[MAXMSGLEN]; int len; Q931Message *pmsg; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = call->pctxt; - + OOCTXT *pctxt = &gH323ep.msgctxt; struct timeval timeout; fd_set readfds; @@ -1003,8 +795,7 @@ { OOTRACEERR3("ERROR:Failed to allocate memory for incoming H.2250 message" " (%s, %s)\n", call->callType, call->callToken); - /* memReset(&gH323ep.msgctxt); */ - memReset(call->pctxt); + memReset(&gH323ep.msgctxt); return OO_FAILED; } memset(pmsg, 0, sizeof(Q931Message)); @@ -1027,7 +818,7 @@ call->callState = OO_CALL_CLEARED; } - ooFreeQ931Message(pctxt, pmsg); + ooFreeQ931Message(pmsg); return OO_OK; } OOTRACEDBGC3("Receiving H.2250 message (%s, %s)\n", @@ -1041,7 +832,7 @@ OOTRACEERR4("Error: Reading TPKT header for H225 message " "recvLen= %d (%s, %s)\n", recvLen, call->callType, call->callToken); - ooFreeQ931Message(pctxt, pmsg); + ooFreeQ931Message(pmsg); if(call->callState < OO_CALL_CLEAR) { call->callEndReason = OO_REASON_INVALIDMESSAGE; @@ -1083,7 +874,7 @@ OOTRACEERR3("Error in select while receiving H.2250 message - " "clearing call (%s, %s)\n", call->callType, call->callToken); - ooFreeQ931Message(pctxt, pmsg); + ooFreeQ931Message(pmsg); if(call->callState < OO_CALL_CLEAR) { call->callEndReason = OO_REASON_TRANSPORTFAILURE; @@ -1097,7 +888,7 @@ { OOTRACEERR3("Error: Incomplete H.2250 message received - clearing " "call (%s, %s)\n", call->callType, call->callToken); - ooFreeQ931Message(pctxt, pmsg); + ooFreeQ931Message(pmsg); if(call->callState < OO_CALL_CLEAR) { call->callEndReason = OO_REASON_INVALIDMESSAGE; @@ -1135,8 +926,7 @@ ASN1OCTET message[MAXMSGLEN], message1[MAXMSGLEN]; ASN1BOOL aligned = TRUE; H245Message *pmsg; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = call->pctxt; + OOCTXT *pctxt = &gH323ep.msgctxt; struct timeval timeout; fd_set readfds; @@ -1562,8 +1352,8 @@ return OO_FAILED; } - /* if(gH323ep.h323Callbacks.onOutgoingCall) - gH323ep.h323Callbacks.onOutgoingCall(call); */ + if(gH323ep.h323Callbacks.onOutgoingCall) + gH323ep.h323Callbacks.onOutgoingCall(call); break; case OOCallProceeding: OOTRACEINFO3("Sent Message - CallProceeding (%s, %s)\n", call->callType, @@ -1572,8 +1362,8 @@ case OOAlert: OOTRACEINFO3("Sent Message - Alerting (%s, %s) \n", call->callType, call->callToken); - /* if(gH323ep.h323Callbacks.onAlerting && call->callState < OO_CALL_CLEAR) - gH323ep.h323Callbacks.onAlerting(call); */ + if(gH323ep.h323Callbacks.onAlerting && call->callState < OO_CALL_CLEAR) + gH323ep.h323Callbacks.onAlerting(call); break; case OOConnect: OOTRACEINFO3("Sent Message - Connect (%s, %s)\n", call->callType, @@ -1912,12 +1702,6 @@ return OO_OK; } -int ooStopMonitorCallChannels(OOH323CallData * call) { - if (call->Monitor) - call->Monitor = FALSE; - /* if (call->cmdSock) - ooCloseCallCmdConnection(call); */ -} int ooStopMonitorCalls() { --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/errmgmt.c 2009-05-31 00:18:57.000000000 +0400 +++ channels/ooh323c/src/errmgmt.c 2008-02-07 23:59:47.000000000 +0300 @@ -16,8 +16,6 @@ /* Error management functions */ -#include -#include #include #include "ooasn1.h" @@ -88,8 +86,7 @@ { #if defined(_NO_THREADS) || !defined(_NO_MALLOC) if (pErrInfo->parmcnt < ASN_K_MAXERRP) { - /* char* tmpstr = (char*) ASN1CRTMALLOC0 (strlen(errprm_p)+1); */ - char* tmpstr = (char*) malloc (strlen(errprm_p)+1); + char* tmpstr = (char*) ASN1CRTMALLOC0 (strlen(errprm_p)+1); strcpy (tmpstr, errprm_p); pErrInfo->parms[pErrInfo->parmcnt] = tmpstr; pErrInfo->parmcnt++; @@ -117,8 +114,7 @@ int i; for (i = 0; i < pErrInfo->parmcnt; i++) - /* ASN1CRTFREE0 ((char*)pErrInfo->parms[i]); */ - free ((char*)pErrInfo->parms[i]); + ASN1CRTFREE0 ((char*)pErrInfo->parms[i]); #endif pErrInfo->parmcnt = 0; --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooCalls.c 2009-06-15 00:26:49.000000000 +0400 +++ channels/ooh323c/src/ooCalls.c 2008-02-07 23:59:47.000000000 +0300 @@ -14,9 +14,6 @@ * *****************************************************************************/ -#include -#include - #include "ootrace.h" #include "ootypes.h" #include "ooCalls.h" @@ -31,14 +28,11 @@ /** Global endpoint structure */ extern OOH323EndPoint gH323ep; -extern ast_mutex_t callListLock; -extern ast_mutex_t newCallLock; OOH323CallData* ooCreateCall(char* type, char*callToken) { OOH323CallData *call=NULL; OOCTXT *pctxt=NULL; - OOCTXT *msgctxt=NULL; pctxt = newContext(); if(!pctxt) @@ -46,25 +40,14 @@ OOTRACEERR1("ERROR:Failed to create OOCTXT for new call\n"); return NULL; } - msgctxt = newContext(); - if(!msgctxt) - { - OOTRACEERR1("ERROR:Failed to create OOCTXT for new call\n"); - return NULL; - } - ast_mutex_lock(&newCallLock); - /* call = (OOH323CallData*)memAlloc(&gH323ep.ctxt, sizeof(OOH323CallData)); */ call = (OOH323CallData*)memAlloc(pctxt, sizeof(OOH323CallData)); - ast_mutex_unlock(&newCallLock); if(!call) { OOTRACEERR1("ERROR:Memory - ooCreateCall - call\n"); return NULL; } - memset(call, 0, sizeof(OOH323CallData)); - ast_mutex_init(&call->Lock); + /* memset(call, 0, sizeof(OOH323CallData));*/ call->pctxt = pctxt; - call->msgctxt = msgctxt; call->callMode = gH323ep.callMode; sprintf(call->callToken, "%s", callToken); sprintf(call->callType, "%s", type); @@ -175,8 +158,6 @@ int ooAddCallToList(OOH323CallData *call) { - ast_mutex_lock(&callListLock); - if(!gH323ep.callList) { gH323ep.callList = call; @@ -189,9 +170,6 @@ gH323ep.callList->prev = call; gH323ep.callList = call; } - - ast_mutex_unlock(&callListLock); - return OO_OK; } @@ -202,16 +180,9 @@ ooGetCallStateText(call->callState), call->callType, call->callToken); - if(call->callState == OO_CALL_REMOVED) { - OOTRACEINFO2("Call already removed %s\n", - call->callToken); - return OO_OK; - } - if(call->callState == OO_CALL_CLEARED) { ooCleanCall(call); - call->callState = OO_CALL_REMOVED; return OO_OK; } @@ -259,11 +230,6 @@ if(!call) return OO_OK; - ast_mutex_lock(&callListLock); - - OOTRACEINFO3("Removing call %lx: %s\n", call, call->callToken); - - if (!gH323ep.callList) return OO_OK; if(call == gH323ep.callList) { if(!call->next) @@ -278,9 +244,6 @@ if(call->next) call->next->prev = call->prev; } - - ast_mutex_unlock(&callListLock); - return OO_OK; } @@ -351,13 +314,9 @@ gH323ep.h323Callbacks.onCallCleared(call); } - pctxt = call->msgctxt; + pctxt = call->pctxt; freeContext(pctxt); - free(pctxt); - call->msgctxt = NULL; -/* May !!!! Fix it !! */ - /* free(pctxt); */ - + ASN1CRTFREE0(pctxt); return OO_OK; } @@ -530,31 +489,6 @@ /* Used to override global end point capabilities and add call specific capabilities */ -int ooCallAddG726Capability(OOH323CallData *call, int cap, int txframes, - int rxframes, OOBOOL silenceSuppression, int dir, - cb_StartReceiveChannel startReceiveChannel, - cb_StartTransmitChannel startTransmitChannel, - cb_StopReceiveChannel stopReceiveChannel, - cb_StopTransmitChannel stopTransmitChannel) -{ - return ooCapabilityAddSimpleCapability(call, cap, txframes, rxframes, - silenceSuppression, dir, startReceiveChannel, - startTransmitChannel, stopReceiveChannel, - stopTransmitChannel, FALSE); -} -int ooCallAddAMRNBCapability(OOH323CallData *call, int cap, int txframes, - int rxframes, OOBOOL silenceSuppression, int dir, - cb_StartReceiveChannel startReceiveChannel, - cb_StartTransmitChannel startTransmitChannel, - cb_StopReceiveChannel stopReceiveChannel, - cb_StopTransmitChannel stopTransmitChannel) -{ - return ooCapabilityAddSimpleCapability(call, cap, txframes, rxframes, - silenceSuppression, dir, startReceiveChannel, - startTransmitChannel, stopReceiveChannel, - stopTransmitChannel, FALSE); -} - int ooCallAddG7231Capability(OOH323CallData *call, int cap, int txframes, int rxframes, OOBOOL silenceSuppression, int dir, cb_StartReceiveChannel startReceiveChannel, @@ -694,7 +628,7 @@ } -OOH323CallData* ooFindCallByToken(const char *callToken) +OOH323CallData* ooFindCallByToken(char *callToken) { OOH323CallData *call; if(!callToken) @@ -702,13 +636,9 @@ OOTRACEERR1("ERROR:Invalid call token passed - ooFindCallByToken\n"); return NULL; } - - ast_mutex_lock(&callListLock); - if(!gH323ep.callList) { OOTRACEERR1("ERROR: Empty calllist - ooFindCallByToken failed\n"); - ast_mutex_unlock(&callListLock); return NULL; } call = gH323ep.callList; @@ -723,14 +653,8 @@ if(!call) { OOTRACEERR2("ERROR:Call with token %s not found\n", callToken); - ast_mutex_unlock(&callListLock); return NULL; } - - ast_mutex_unlock(&callListLock); - - OOTRACEINFO3("INFO: FinCall returned %lx for call: %s\n", call, callToken); - return call; } --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooCmdChannel.h 2009-05-30 06:40:48.000000000 +0400 +++ channels/ooh323c/src/ooCmdChannel.h 2008-06-04 21:35:29.000000000 +0400 @@ -52,7 +52,6 @@ * @return OO_OK, on success; OO_FAILED, on failure */ EXTERN int ooCreateCmdConnection(); -EXTERN int ooCreateCallCmdConnection(OOH323CallData*); /** * This function is used to close a command channel setup with the stack @@ -61,7 +60,6 @@ * @return OO_OK, on success; OO_FAILED, on failure */ EXTERN int ooCloseCmdConnection(); -EXTERN int ooCloseCallCmdConnection(OOH323CallData*); /** @@ -71,7 +69,6 @@ * @return OO_OK, on success; OO_FAILED, on failure */ EXTERN int ooWriteStackCommand(OOStackCommand *cmd); -EXTERN int ooWriteCallStackCommand(OOH323CallData* call, OOStackCommand *cmd); /** * This function is used by stack thread to read and process stack commands @@ -80,7 +77,6 @@ * @return OO_OK, on success; OO_FAILED, on failure */ EXTERN int ooReadAndProcessStackCommand(); -EXTERN int ooReadAndProcessCallStackCommand(OOH323CallData*); /** --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooasn1.h 2009-05-31 00:24:11.000000000 +0400 +++ channels/ooh323c/src/ooasn1.h 2008-02-07 23:59:47.000000000 +0300 @@ -22,9 +22,6 @@ #ifndef _OOASN1_H_ #define _OOASN1_H_ -#include -#include - #include #include #include @@ -409,7 +406,6 @@ struct EventHandler* pEventHandler; /* event handler object */ ASN1USINT flags; /* flag bits */ ASN1OCTET spare[2]; - ast_mutex_t pLock; } OOCTXT; /* macros and function prototypes */ @@ -516,8 +512,8 @@ #endif /* EXTERN */ #ifndef _NO_MALLOC -/*#define ASN1CRTMALLOC0(nbytes) malloc(nbytes) -#define ASN1CRTFREE0(ptr) free(ptr) */ +#define ASN1CRTMALLOC0(nbytes) malloc(nbytes) +#define ASN1CRTFREE0(ptr) free(ptr) #else #ifdef _NO_THREADS --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/memheap.c 2009-05-31 00:19:07.000000000 +0400 +++ channels/ooh323c/src/memheap.c 2008-02-07 23:59:47.000000000 +0300 @@ -13,12 +13,18 @@ * maintain this copyright notice. * *****************************************************************************/ -#include -#include + #include #include "memheap.h" ASN1UINT g_defBlkSize = XM_K_MEMBLKSIZ; +OSMallocFunc g_malloc_func = malloc; +#ifndef _NO_REALLOC +OSReallocFunc g_realloc_func = realloc; +#else +OSReallocFunc g_realloc_func = 0; +#endif +OSFreeFunc g_free_func = free; static OSMemLink* memHeapAddBlock (OSMemLink** ppMemLink, void* pMemBlk, int blockType); @@ -166,7 +172,6 @@ nunits = (((unsigned)(nbytes + 7)) >> 3); pMemHeap = (OSMemHeap*) *ppvMemHeap; - ast_mutex_lock(&pMemHeap->pLock); ppMemLink = &pMemHeap->phead; /* if size is greater than 2**19, then allocate as RAW block */ @@ -176,18 +181,17 @@ /* allocate raw block */ - data = malloc (nbytes); + data = g_malloc_func (nbytes); if (data == NULL) { return NULL; } pMemLink = memHeapAddBlock (ppMemLink, data, RTMEMMALLOC | RTMEMRAW); if (pMemLink == 0) { - free (data); + g_free_func (data); return NULL; } /* save size of the RAW memory block behind the pMemLink */ *(int*)(((char*)pMemLink) + sizeof (OSMemLink)) = nbytes; - ast_mutex_unlock(&pMemHeap->pLock); return data; } @@ -333,7 +337,7 @@ ((((ASN1UINT)dataUnits) * 8u) + sizeof (OSMemBlk)); } - pmem = (ASN1OCTET*) malloc (allocSize + sizeof (OSMemLink)); + pmem = (ASN1OCTET*) g_malloc_func (allocSize + sizeof (OSMemLink)); if (0 != pmem) { OSMemElemDescr* pElem; @@ -357,8 +361,7 @@ if (memHeapAddBlock (ppMemLink, pMemBlk, RTMEMSTD | RTMEMLINK) == 0) { - free (pmem); - ast_mutex_unlock(&pMemHeap->pLock); + g_free_func (pmem); return NULL; } @@ -371,10 +374,8 @@ CHECKMEMELEM (pMemBlk, pElem); CHECKMEMBLOCK (pMemHeap, pMemBlk); } - else { - ast_mutex_unlock(&pMemHeap->pLock); + else return NULL; - } } RTMEMDIAG2 ("memHeapAlloc: pMemBlk = 0x%x\n", pMemBlk); RTMEMDIAG2 ("memHeapAlloc: pMemBlk->free_x = %d\n", pMemBlk->free_x); @@ -383,7 +384,6 @@ RTMEMDIAG2 ("memHeapAlloc: mem_p = 0x%x\n", mem_p); RTMEMDIAG2 ("memHeapAlloc: sizeof (short) = %d\n", sizeof(short)); - ast_mutex_unlock(&pMemHeap->pLock); return (mem_p); } @@ -407,9 +407,6 @@ if (mem_p == 0 || ppvMemHeap == 0 || *ppvMemHeap == 0) return; pMemHeap = *(OSMemHeap**)ppvMemHeap; - - ast_mutex_lock(&pMemHeap->pLock); - ppMemLink = &pMemHeap->phead; /* look for chain of RAW blocks first */ @@ -437,14 +434,13 @@ if ((pMemLink->blockType & RTMEMLINK) && (pMemLink->blockType & RTMEMMALLOC)) { - free (pMemLink); + g_free_func (pMemLink); } else { if (pMemLink->blockType & RTMEMMALLOC) - free (pMemLink->pMemBlk); - free (pMemLink); + g_free_func (pMemLink->pMemBlk); + g_free_func (pMemLink); } - ast_mutex_unlock(&pMemHeap->pLock); return; } pPrevMemLink = pMemLink; @@ -459,7 +455,6 @@ if (ISFREE (pElem)) { /* already freed! */ RTMEMDIAG2 ("memHeapFreePtr: " "the element 0x%x is already freed!\n", pElem); - ast_mutex_unlock(&pMemHeap->pLock); return; } @@ -553,11 +548,11 @@ FILLFREEMEM (pMemBlk->plink, sizeof (*pMemBlk->plink)); FILLFREEMEM (pMemBlk->data, (pMemBlk->nunits * 8u)); - free (pMemBlk->plink); + g_free_func (pMemBlk->plink); if (!(blockType & RTMEMLINK)) { FILLFREEMEM (pMemBlk, sizeof (*pMemBlk)); - free (pMemBlk); + g_free_func (pMemBlk); } RTMEMDIAG2 ("memHeapFreePtr: pMemBlk = 0x%x was freed\n", pMemBlk); @@ -647,7 +642,6 @@ CHECKMEMELEM (pMemBlk, pElem); CHECKMEMBLOCK (pMemHeap, pMemBlk); } - ast_mutex_unlock(&pMemHeap->pLock); } static void initNewFreeElement (OSMemBlk* pMemBlk, @@ -748,8 +742,8 @@ pMemLink->pMemBlk == mem_p) { if (pMemLink->blockType & RTMEMMALLOC) - if (1) { - void *newMemBlk = realloc (pMemLink->pMemBlk, nbytes_); + if (g_realloc_func != 0) { + void *newMemBlk = g_realloc_func (pMemLink->pMemBlk, nbytes_); if (newMemBlk == 0) return 0; pMemLink->pMemBlk = newMemBlk; @@ -760,7 +754,7 @@ int oldSize = *(int*)(((char*)pMemLink) + sizeof (OSMemLink)); if (oldSize == -1) return 0; - newBuf = (ASN1OCTET*) malloc (nbytes_); + newBuf = (ASN1OCTET*)g_malloc_func (nbytes_); if (newBuf == 0) return 0; memcpy (newBuf, pMemLink->pMemBlk, ASN1MIN (oldSize, nbytes_)); @@ -1000,8 +994,6 @@ if (ppvMemHeap == 0 || *ppvMemHeap == 0) return; pMemHeap = *(OSMemHeap**)ppvMemHeap; - ast_mutex_lock(&pMemHeap->pLock); - pMemLink = pMemHeap->phead; RTMEMDIAG2 ("memHeapFreeAll: pMemHeap = 0x%x\n", pMemHeap); @@ -1053,11 +1045,10 @@ if (((pMemLink2->blockType & RTMEMSTD) || (pMemLink2->blockType & RTMEMMALLOC)) && !(pMemLink2->blockType & RTMEMLINK)) - free (pMemLink2->pMemBlk); - free (pMemLink2); + g_free_func (pMemLink2->pMemBlk); + g_free_func (pMemLink2); } } - ast_mutex_unlock(&pMemHeap->pLock); } /* increments internal refCnt. use memHeapRelease to decrement and release */ @@ -1067,9 +1058,7 @@ if (ppvMemHeap == 0 || *ppvMemHeap == 0) return; pMemHeap = *(OSMemHeap**)ppvMemHeap; - ast_mutex_lock(&pMemHeap->pLock); pMemHeap->refCnt++; - ast_mutex_unlock(&pMemHeap->pLock); } /* Frees all memory and heap structure as well (if was allocated) */ @@ -1117,9 +1106,6 @@ return 0; pMemHeap = *(OSMemHeap**)ppvMemHeap; - - ast_mutex_lock(&pMemHeap->pLock); - pMemLink = pMemHeap->phead; /* look for chain of RAW blocks first */ @@ -1142,8 +1128,6 @@ if (ISFREE (pElem)) { /* already freed! */ RTMEMDIAG2 ("memHeapMarkSaved: the element 0x%x is " "already free!\n", pElem); - - ast_mutex_unlock(&pMemHeap->pLock); return 0; } @@ -1163,15 +1147,12 @@ nsaved = pMemBlk->nsaved; } else - ast_mutex_unlock(&pMemHeap->pLock); return 0; } if (saved && nsaved > 0) pMemLink->blockType |= RTMEMSAVED; else if (nsaved == 0) pMemLink->blockType &= (~RTMEMSAVED); - - ast_mutex_unlock(&pMemHeap->pLock); return pMemLink->pMemBlk; } @@ -1186,8 +1167,6 @@ if (ppvMemHeap == 0 || *ppvMemHeap == 0) return; pMemHeap = *(OSMemHeap**)ppvMemHeap; - ast_mutex_lock(&pMemHeap->pLock); - pMemLink = pMemHeap->phead; TRACEFREE (pMemHeap, "memHeapReset\n\n"); while (pMemLink) { @@ -1211,7 +1190,6 @@ } pMemLink = pMemLink->pnext; } - ast_mutex_unlock(&pMemHeap->pLock); } /* add memory block to list */ @@ -1228,7 +1206,7 @@ if (blockType & RTMEMLINK) pMemLink = (OSMemLink*) (((ASN1OCTET*)pMemBlk) - sizeof (OSMemLink)); else { - pMemLink = (OSMemLink*) malloc ( + pMemLink = (OSMemLink*) g_malloc_func ( sizeof(OSMemLink) + sizeof (int)); if (pMemLink == 0) return 0; /* An extra integer is necessary to save a size of a RAW memory block @@ -1279,8 +1257,6 @@ return 0; pMemHeap = *(OSMemHeap**)ppvMemHeap; - ast_mutex_lock(&pMemHeap->pLock); - pMemLink = pMemHeap->phead; for (; pMemLink != 0; pMemLink = pMemLink->pnext) { @@ -1288,10 +1264,8 @@ /* if RAW block, the pointer should be stored in pMemBlk */ - if (pMemLink->pMemBlk == mem_p) { - ast_mutex_unlock(&pMemHeap->pLock); + if (pMemLink->pMemBlk == mem_p) return 1; - } } else { OSMemBlk* pMemBlk = (OSMemBlk*)pMemLink->pMemBlk; @@ -1307,16 +1281,12 @@ for (; pElem != 0; pElem = GETNEXT (pElem)) { void* curMem_p = (void*) pElem_data (pElem); - if (curMem_p == mem_p && !ISFREE (pElem)) { - ast_mutex_unlock(&pMemHeap->pLock); + if (curMem_p == mem_p && !ISFREE (pElem)) return 1; - } } } } } - - ast_mutex_unlock(&pMemHeap->pLock); return 0; } @@ -1331,8 +1301,6 @@ memHeapCreate (ppvMemHeap); pMemHeap = *(OSMemHeap**)ppvMemHeap; - ast_mutex_lock(&pMemHeap->pLock); - switch (propId) { case OSRTMH_PROPID_DEFBLKSIZE: pMemHeap->defBlkSize = *(ASN1UINT*)pProp; @@ -1344,7 +1312,6 @@ pMemHeap->flags &= ((~(*(ASN1UINT*)pProp)) | RT_MH_INTERNALMASK); break; } - ast_mutex_unlock(&pMemHeap->pLock); } int memHeapCreate (void** ppvMemHeap) @@ -1352,13 +1319,12 @@ OSMemHeap* pMemHeap; if (ppvMemHeap == 0) return ASN_E_INVPARAM; - pMemHeap = (OSMemHeap*) malloc (sizeof (OSMemHeap)); + pMemHeap = (OSMemHeap*) g_malloc_func (sizeof (OSMemHeap)); if (pMemHeap == NULL) return ASN_E_NOMEM; memset (pMemHeap, 0, sizeof (OSMemHeap)); pMemHeap->defBlkSize = g_defBlkSize; pMemHeap->refCnt = 1; pMemHeap->flags = RT_MH_FREEHEAPDESC; - ast_mutex_init(&pMemHeap->pLock); *ppvMemHeap = (void*)pMemHeap; return ASN_OK; } --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/rtctype.c 2009-05-31 00:23:24.000000000 +0400 +++ channels/ooh323c/src/rtctype.c 2008-02-07 23:59:47.000000000 +0300 @@ -16,9 +16,6 @@ /* Run-time ctype substitution */ -#include -#include - #include "ooasn1.h" #include "rtctype.h" --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooStackCmds.h 2009-06-03 00:48:04.000000000 +0400 +++ channels/ooh323c/src/ooStackCmds.h 2008-02-07 23:59:47.000000000 +0300 @@ -65,7 +65,6 @@ OO_CMD_HANGCALL, /*!< Terminate call */ OO_CMD_SENDDIGIT, /*!< Send dtmf */ OO_CMD_MANUALRINGBACK, /*!< Send Alerting - ringback */ - OO_CMD_MANUALPROGRESS, /*!< Send progress */ OO_CMD_STOPMONITOR /*!< Stop the event monitor */ } OOStackCmdID; @@ -77,11 +76,8 @@ typedef struct OOStackCommand { OOStackCmdID type; void* param1; - int plen1; void* param2; - int plen2; void* param3; - int plen3; } OOStackCommand; #define ooCommand OOStackCommand; @@ -109,7 +105,6 @@ * @return Returns OOStkCmdStat value indication success or failure. */ EXTERN OOStkCmdStat ooManualRingback(const char *callToken); -EXTERN OOStkCmdStat ooManualProgress(const char *callToken); /** * This function is used to answer a call @@ -136,7 +131,7 @@ * * @return Returns OOStkCmdStat value indication success or failure. */ -EXTERN OOStkCmdStat ooHangCall(const char* callToken, OOCallClearReason reason, int q931cause); +EXTERN OOStkCmdStat ooHangCall(const char* callToken, OOCallClearReason reason); /** * This command function can be used by an user application to send a DTMF --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooCapability.h 2009-06-15 00:26:49.000000000 +0400 +++ channels/ooh323c/src/ooCapability.h 2008-02-07 23:59:47.000000000 +0300 @@ -33,7 +33,6 @@ supported */ typedef enum OOCapabilities{ OO_CAP_AUDIO_BASE = 0, - OO_G726 = 1, OO_G711ALAW64K = 2, OO_G711ALAW56K = 3, OO_G711ULAW64K = 4, @@ -45,12 +44,8 @@ OO_G728 = 10, OO_G729 = 11, OO_G729A = 12, -#if 0 OO_IS11172_AUDIO = 13, OO_IS13818_AUDIO = 14, -#else - OO_AMRNB = 13, -#endif OO_G729B = 15, OO_G729AB = 16, OO_G7231C = 17, @@ -584,8 +579,6 @@ */ struct H245AudioCapability* ooCapabilityCreateSimpleCapability (ooH323EpCapability *epCap, OOCTXT* pctxt, int dir); -struct H245AudioCapability* ooCapabilityCreateNonStandardCapability - (ooH323EpCapability *epCap, OOCTXT* pctxt, int dir); /** --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooh323ep.c 2009-06-17 22:11:14.000000000 +0400 +++ channels/ooh323c/src/ooh323ep.c 2008-06-04 21:35:29.000000000 +0400 @@ -13,9 +13,6 @@ * maintain this copyright notice. * *****************************************************************************/ -#include -#include - #include "ooh323ep.h" #include "ootrace.h" #include "ooCalls.h" @@ -26,10 +23,6 @@ /** Global endpoint structure */ ooEndPoint gH323ep; -ast_mutex_t monitorLock; -ast_mutex_t callListLock; -ast_mutex_t newCallLock; -ast_mutex_t bindPortLock; extern DList g_TimerList; @@ -111,10 +104,6 @@ gH323ep.myCaps = NULL; gH323ep.noOfCaps = 0; gH323ep.callList = NULL; - ast_mutex_init(&monitorLock); - ast_mutex_init(&callListLock); - ast_mutex_init(&newCallLock); - ast_mutex_init(&bindPortLock); gH323ep.dtmfmode = 0; gH323ep.callingPartyNumber[0]='\0'; gH323ep.callMode = callMode; @@ -146,16 +135,6 @@ return OO_OK; } -EXTERN int ooH323EpSetVersionInfo(int t35cc, int t35ext, int manc, char* prodid, char* verid) { - - if (t35cc) gH323ep.t35CountryCode = t35cc; - if (t35ext) gH323ep.t35Extension = t35ext; - if (manc) gH323ep.manufacturerCode = manc; - if (prodid != NULL && prodid[0]) gH323ep.productID = prodid; - if (verid != NULL && verid[0]) gH323ep.versionID = verid; -} - - int ooH323EpSetLocalAddress(const char* localip, int listenport) { @@ -337,7 +316,6 @@ { gH323ep.h323Callbacks.onNewCallCreated = h323Callbacks.onNewCallCreated; gH323ep.h323Callbacks.onAlerting = h323Callbacks.onAlerting; - gH323ep.h323Callbacks.onProgress = h323Callbacks.onProgress; gH323ep.h323Callbacks.onIncomingCall = h323Callbacks.onIncomingCall; gH323ep.h323Callbacks.onOutgoingCall = h323Callbacks.onOutgoingCall; gH323ep.h323Callbacks.onCallEstablished = h323Callbacks.onCallEstablished; @@ -386,7 +364,6 @@ } freeContext(&(gH323ep.ctxt)); - freeContext(&(gH323ep.msgctxt)); OO_CLRFLAG(gH323ep.flags, OO_M_ENDPOINTCREATED); } @@ -466,15 +443,6 @@ return OO_OK; } -int ooH323EpTryBeMaster(int m) -{ - if (m) - OO_SETFLAG(gH323ep.flags, OO_M_TRYBEMASTER); - else - OO_CLRFLAG(gH323ep.flags, OO_M_TRYBEMASTER); - return OO_OK; -} - int ooH323EpSetTermType(int value) { gH323ep.termType = value; @@ -658,31 +626,6 @@ stopTransmitChannel, FALSE); } -int ooH323EpAddG726Capability(int cap, int txframes, int rxframes, - OOBOOL silenceSuppression, int dir, - cb_StartReceiveChannel startReceiveChannel, - cb_StartTransmitChannel startTransmitChannel, - cb_StopReceiveChannel stopReceiveChannel, - cb_StopTransmitChannel stopTransmitChannel) -{ - return ooCapabilityAddSimpleCapability(NULL, cap, txframes, rxframes, - silenceSuppression, dir, startReceiveChannel, - startTransmitChannel, stopReceiveChannel, - stopTransmitChannel, FALSE); -} -int ooH323EpAddAMRNBCapability(int cap, int txframes, int rxframes, - OOBOOL silenceSuppression, int dir, - cb_StartReceiveChannel startReceiveChannel, - cb_StartTransmitChannel startTransmitChannel, - cb_StopReceiveChannel stopReceiveChannel, - cb_StopTransmitChannel stopTransmitChannel) -{ - return ooCapabilityAddSimpleCapability(NULL, cap, txframes, rxframes, - silenceSuppression, dir, startReceiveChannel, - startTransmitChannel, stopReceiveChannel, - stopTransmitChannel, FALSE); -} - int ooH323EpAddGSMCapability(int cap, ASN1USINT framesPerPkt, OOBOOL comfortNoise, OOBOOL scrambled, int dir, cb_StartReceiveChannel startReceiveChannel, --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooStackCmds.c 2009-06-03 01:04:44.000000000 +0400 +++ channels/ooh323c/src/ooStackCmds.c 2008-02-07 23:59:47.000000000 +0300 @@ -13,8 +13,6 @@ * maintain this copyright notice. * *****************************************************************************/ -#include -#include #include "ooStackCmds.h" #include "ooh323ep.h" @@ -22,21 +20,18 @@ #include "ooCmdChannel.h" extern OOSOCKET gCmdChan; -extern ast_mutex_t newCallLock; - -static int counter = 1; int ooGenerateOutgoingCallToken (char *callToken, size_t size) { + static int counter = 1; char aCallToken[200]; int ret = 0; - ast_mutex_lock(&newCallLock); + sprintf (aCallToken, "ooh323c_o_%d", counter++); if (counter > OO_MAX_CALL_TOKEN) counter = 1; - ast_mutex_unlock(&newCallLock); if ((strlen(aCallToken)+1) < size) strcpy (callToken, aCallToken); @@ -47,14 +42,6 @@ return ret; } -int isRunning(char *callToken) { - OOH323CallData *call; - - if((call = ooFindCallByToken(callToken))) - if (call->Monitor) - return 1; - return 0; -} OOStkCmdStat ooMakeCall (const char* dest, char* callToken, size_t bufsiz, ooCallOptions *opts) @@ -121,102 +108,18 @@ return OO_STKCMD_SUCCESS; } -OOStkCmdStat ooRunCall - (const char* dest, char* callToken, size_t bufsiz, ooCallOptions *opts) -{ - OOStackCommand cmd; - OOH323CallData *call; - - if(!callToken) - { - return OO_STKCMD_INVALIDPARAM; - } - - if(!(call = ooFindCallByToken(callToken))) { - return OO_STKCMD_INVALIDPARAM; - } - - if(call->CmdChan == 0) - { - if(ooCreateCallCmdConnection(call) != OO_OK) - return OO_STKCMD_CONNECTIONERR; - } - - if(!callToken) - return OO_STKCMD_INVALIDPARAM; - - - memset(&cmd, 0, sizeof(OOStackCommand)); - cmd.type = OO_CMD_MAKECALL; - cmd.param1 = (void*) malloc(strlen(dest)+1); - if(!cmd.param1) - { - return OO_STKCMD_MEMERR; - } - strcpy((char*)cmd.param1, dest); - cmd.plen1 = strlen(dest); - - - cmd.param2 = (void*) malloc(strlen(callToken)+1); - if(!cmd.param2) - { - free(cmd.param1); - return OO_STKCMD_MEMERR; - } - - strcpy((char*)cmd.param2, callToken); - cmd.plen2 = strlen(callToken); - - if(!opts) - { - cmd.param3 = 0; - } - else { - cmd.param3 = (void*) malloc(sizeof(ooCallOptions)); - if(!cmd.param3) - { - free(cmd.param1); - free(cmd.param2); - return OO_STKCMD_MEMERR; - } - memcpy((void*)cmd.param3, opts, sizeof(ooCallOptions)); - cmd.plen3 = sizeof(ooCallOptions); - } - - if(ooWriteCallStackCommand(call, &cmd) != OO_OK) - { - free(cmd.param1); - free(cmd.param2); - if(cmd.param3) free(cmd.param3); - return OO_STKCMD_WRITEERR; - } - - - free(cmd.param1); - free(cmd.param2); - if(cmd.param3) free(cmd.param3); - - return OO_STKCMD_SUCCESS; -} - OOStkCmdStat ooManualRingback(const char *callToken) { OOStackCommand cmd; - OOH323CallData *call; - if(!callToken) { return OO_STKCMD_INVALIDPARAM; } - if(!(call = ooFindCallByToken(callToken))) { - return OO_STKCMD_INVALIDPARAM; - } - - if(call->CmdChan == 0) + if(gCmdChan == 0) { - if(ooCreateCallCmdConnection(call) != OO_OK) + if(ooCreateCmdConnection() != OO_OK) return OO_STKCMD_CONNECTIONERR; } @@ -228,77 +131,28 @@ return OO_STKCMD_MEMERR; } strcpy((char*)cmd.param1, callToken); - cmd.plen1 = strlen(callToken); - - if(ooWriteCallStackCommand(call,&cmd) != OO_OK) - { - free(cmd.param1); - return OO_STKCMD_WRITEERR; - } - - free(cmd.param1); - - return OO_STKCMD_SUCCESS; -} - -OOStkCmdStat ooManualProgress(const char *callToken) -{ - OOStackCommand cmd; - OOH323CallData *call; - - if(!callToken) - { - return OO_STKCMD_INVALIDPARAM; - } - - if(!(call = ooFindCallByToken(callToken))) { - return OO_STKCMD_INVALIDPARAM; - } - - if(call->CmdChan == 0) - { - if(ooCreateCallCmdConnection(call) != OO_OK) - return OO_STKCMD_CONNECTIONERR; - } - - memset(&cmd, 0, sizeof(OOStackCommand)); - cmd.type = OO_CMD_MANUALPROGRESS; - cmd.param1 = (void*) malloc(strlen(callToken)+1); - if(!cmd.param1) - { - return OO_STKCMD_MEMERR; - } - strcpy((char*)cmd.param1, callToken); - cmd.plen1 = strlen(callToken); - if(ooWriteCallStackCommand(call, &cmd) != OO_OK) + if(ooWriteStackCommand(&cmd) != OO_OK) { free(cmd.param1); return OO_STKCMD_WRITEERR; } - free(cmd.param1); - return OO_STKCMD_SUCCESS; } OOStkCmdStat ooAnswerCall(const char *callToken) { OOStackCommand cmd; - OOH323CallData *call; if(!callToken) { return OO_STKCMD_INVALIDPARAM; } - if(!(call = ooFindCallByToken(callToken))) { - return OO_STKCMD_INVALIDPARAM; - } - - if(call->CmdChan == 0) + if(gCmdChan == 0) { - if(ooCreateCallCmdConnection(call) != OO_OK) + if(ooCreateCmdConnection() != OO_OK) return OO_STKCMD_CONNECTIONERR; } @@ -311,38 +165,31 @@ return OO_STKCMD_MEMERR; } strcpy((char*)cmd.param1, callToken); - cmd.plen1 = strlen(callToken); - - if(ooWriteCallStackCommand(call, &cmd) != OO_OK) + + if(ooWriteStackCommand(&cmd) != OO_OK) { free(cmd.param1); return OO_STKCMD_WRITEERR; } - free(cmd.param1); - return OO_STKCMD_SUCCESS; } OOStkCmdStat ooForwardCall(const char* callToken, char *dest) { OOStackCommand cmd; - OOH323CallData *call; if(!callToken || !dest) { return OO_STKCMD_INVALIDPARAM; } - if(!(call = ooFindCallByToken(callToken))) { - return OO_STKCMD_INVALIDPARAM; - } - - if(call->CmdChan == 0) + if(gCmdChan == 0) { - if(ooCreateCallCmdConnection(call) != OO_OK) + if(ooCreateCmdConnection() != OO_OK) return OO_STKCMD_CONNECTIONERR; } + memset(&cmd, 0, sizeof(OOStackCommand)); cmd.type = OO_CMD_FWDCALL; @@ -355,41 +202,31 @@ return OO_STKCMD_MEMERR; } strcpy((char*)cmd.param1, callToken); - cmd.plen1 = strlen(callToken); strcpy((char*)cmd.param2, dest); - cmd.plen2 = strlen(dest); - if(ooWriteCallStackCommand(call, &cmd) != OO_OK) + if(ooWriteStackCommand(&cmd) != OO_OK) { free(cmd.param1); free(cmd.param2); return OO_STKCMD_WRITEERR; } - free(cmd.param1); - free(cmd.param2); return OO_STKCMD_SUCCESS; } -OOStkCmdStat ooHangCall(const char* callToken, OOCallClearReason reason, int q931cause) +OOStkCmdStat ooHangCall(const char* callToken, OOCallClearReason reason) { OOStackCommand cmd; - OOH323CallData *call; - if(!callToken) { return OO_STKCMD_INVALIDPARAM; } - if(!(call = ooFindCallByToken(callToken))) { - return OO_STKCMD_INVALIDPARAM; - } - - if(call->CmdChan == 0) + if(gCmdChan == 0) { - if(ooCreateCallCmdConnection(call) != OO_OK) + if(ooCreateCmdConnection() != OO_OK) return OO_STKCMD_CONNECTIONERR; } @@ -397,31 +234,21 @@ cmd.type = OO_CMD_HANGCALL; cmd.param1 = (void*) malloc(strlen(callToken)+1); cmd.param2 = (void*) malloc(sizeof(OOCallClearReason)); - cmd.param3 = (void*) malloc(sizeof(int)); - if(!cmd.param1 || !cmd.param2 || !cmd.param3) + if(!cmd.param1 || !cmd.param2) { if(cmd.param1) free(cmd.param1); /* Release memory */ if(cmd.param2) free(cmd.param2); - if(cmd.param3) free(cmd.param3); return OO_STKCMD_MEMERR; } strcpy((char*)cmd.param1, callToken); - cmd.plen1 = strlen(callToken); *((OOCallClearReason*)cmd.param2) = reason; - cmd.plen2 = sizeof(OOCallClearReason); - *(int *)cmd.param3 = q931cause; - cmd.plen3 = sizeof(int); - if(ooWriteCallStackCommand(call, &cmd) != OO_OK) + if(ooWriteStackCommand(&cmd) != OO_OK) { free(cmd.param1); free(cmd.param2); - free(cmd.param3); return OO_STKCMD_WRITEERR; } - free(cmd.param1); - free(cmd.param2); - free(cmd.param3); return OO_STKCMD_SUCCESS; } @@ -449,20 +276,15 @@ OOStkCmdStat ooSendDTMFDigit(const char *callToken, const char* dtmf) { OOStackCommand cmd; - OOH323CallData *call; if(!callToken) { return OO_STKCMD_INVALIDPARAM; } - if(!(call = ooFindCallByToken(callToken))) { - return OO_STKCMD_INVALIDPARAM; - } - - if(call->CmdChan == 0) + if(gCmdChan == 0) { - if(ooCreateCallCmdConnection(call) != OO_OK) + if(ooCreateCmdConnection() != OO_OK) return OO_STKCMD_CONNECTIONERR; } @@ -478,18 +300,14 @@ return OO_STKCMD_MEMERR; } strcpy((char*)cmd.param1, callToken); - cmd.plen1 = strlen(callToken); strcpy((char*)cmd.param2, dtmf); - cmd.plen2 = strlen(dtmf); - if(ooWriteCallStackCommand(call,&cmd) != OO_OK) + if(ooWriteStackCommand(&cmd) != OO_OK) { free(cmd.param1); free(cmd.param2); return OO_STKCMD_WRITEERR; } - free(cmd.param1); - free(cmd.param2); return OO_STKCMD_SUCCESS; } --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooUtils.c 2009-05-31 00:14:40.000000000 +0400 +++ channels/ooh323c/src/ooUtils.c 2008-02-07 23:59:47.000000000 +0300 @@ -14,8 +14,6 @@ * *****************************************************************************/ -#include -#include #include "ooUtils.h" const char* ooUtilsGetText (OOUINT32 idx, const char** table, size_t tabsiz) --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooh323.c 2009-06-17 22:11:14.000000000 +0400 +++ channels/ooh323c/src/ooh323.c 2008-05-28 18:45:23.000000000 +0400 @@ -14,9 +14,6 @@ * *****************************************************************************/ -#include -#include - #include "ootypes.h" #include "ooq931.h" #include "ootrace.h" @@ -96,7 +93,6 @@ if(call->callEndReason == OO_REASON_UNKNOWN) call->callEndReason = ooGetCallClearReasonFromCauseAndReasonCode(cause, reasonCode); - call->q931cause = cause; #if 0 if (q931Msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent && q931Msg->userInfo->h323_uu_pdu.h245Tunneling && @@ -764,202 +760,6 @@ } return OO_OK; } - -int ooOnReceivedProgress(OOH323CallData *call, Q931Message *q931Msg) -{ - H225Progress_UUIE *progress=NULL; - H245OpenLogicalChannel* olc; - ASN1OCTET msgbuf[MAXMSGLEN]; - ooLogicalChannel * pChannel = NULL; - H245H2250LogicalChannelParameters * h2250lcp = NULL; - int i=0, ret=0; - - - if(!q931Msg->userInfo) - { - OOTRACEERR3("ERROR:No User-User IE in received Progress message." - " (%s, %s)\n", call->callType, call->callToken); - return OO_FAILED; - } - progress = q931Msg->userInfo->h323_uu_pdu.h323_message_body.u.progress; - if(progress == NULL) - { - OOTRACEERR3("Error: Received Progress message does not have " - "progress UUIE (%s, %s)\n", call->callType, - call->callToken); - /* Mark call for clearing */ - if(call->callState < OO_CALL_CLEAR) - { - call->callEndReason = OO_REASON_INVALIDMESSAGE; - call->callState = OO_CALL_CLEAR; - } - return OO_FAILED; - } - /*Handle fast-start */ - if(OO_TESTFLAG (call->flags, OO_M_FASTSTART) && - !OO_TESTFLAG(call->flags, OO_M_FASTSTARTANSWERED)) - { - if(progress->m.fastStartPresent) - { - /* For printing the decoded message to log, initialize handler. */ - initializePrintHandler(&printHandler, "FastStart Elements"); - - /* Set print handler */ - setEventHandler (call->pctxt, &printHandler); - - for(i=0; i<(int)progress->fastStart.n; i++) - { - olc = NULL; - - olc = (H245OpenLogicalChannel*)memAlloc(call->pctxt, - sizeof(H245OpenLogicalChannel)); - if(!olc) - { - OOTRACEERR3("ERROR:Memory - ooOnReceivedProgress - olc" - "(%s, %s)\n", call->callType, call->callToken); - /*Mark call for clearing */ - if(call->callState < OO_CALL_CLEAR) - { - call->callEndReason = OO_REASON_LOCAL_CLEARED; - call->callState = OO_CALL_CLEAR; - } - return OO_FAILED; - } - memset(olc, 0, sizeof(H245OpenLogicalChannel)); - memcpy(msgbuf, progress->fastStart.elem[i].data, - progress->fastStart.elem[i].numocts); - setPERBuffer(call->pctxt, msgbuf, - progress->fastStart.elem[i].numocts, 1); - ret = asn1PD_H245OpenLogicalChannel(call->pctxt, olc); - if(ret != ASN_OK) - { - OOTRACEERR3("ERROR:Failed to decode fast start olc element " - "(%s, %s)\n", call->callType, call->callToken); - /* Mark call for clearing */ - if(call->callState < OO_CALL_CLEAR) - { - call->callEndReason = OO_REASON_INVALIDMESSAGE; - call->callState = OO_CALL_CLEAR; - } - return OO_FAILED; - } - - dListAppend(call->pctxt, &call->remoteFastStartOLCs, olc); - - pChannel = ooFindLogicalChannelByOLC(call, olc); - if(!pChannel) - { - OOTRACEERR4("ERROR: Logical Channel %d not found, fast start. " - "(%s, %s)\n", - olc->forwardLogicalChannelNumber, call->callType, - call->callToken); - return OO_FAILED; - } - if(pChannel->channelNo != olc->forwardLogicalChannelNumber) - { - OOTRACEINFO5("Remote endpoint changed forwardLogicalChannel" - "Number from %d to %d (%s, %s)\n", - pChannel->channelNo, - olc->forwardLogicalChannelNumber, call->callType, - call->callToken); - pChannel->channelNo = olc->forwardLogicalChannelNumber; - } - if(!strcmp(pChannel->dir, "transmit")) - { - if(olc->forwardLogicalChannelParameters.multiplexParameters.t != - T_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters) - { - OOTRACEERR4("ERROR:Unknown multiplex parameter type for " - "channel %d (%s, %s)\n", - olc->forwardLogicalChannelNumber, call->callType, - call->callToken); - continue; - } - - /* Extract the remote media endpoint address */ - h2250lcp = olc->forwardLogicalChannelParameters.multiplexParameters.u.h2250LogicalChannelParameters; - if(!h2250lcp) - { - OOTRACEERR3("ERROR:Invalid OLC received in fast start. No " - "forward Logical Channel Parameters found. " - "(%s, %s)\n", call->callType, call->callToken); - return OO_FAILED; - } - if(!h2250lcp->m.mediaChannelPresent) - { - OOTRACEERR3("ERROR:Invalid OLC received in fast start. No " - "reverse media channel information found." - "(%s, %s)\n", call->callType, call->callToken); - return OO_FAILED; - } - ret = ooGetIpPortFromH245TransportAddress(call, - &h2250lcp->mediaChannel, pChannel->remoteIP, - &pChannel->remoteMediaPort); - - if(ret != OO_OK) - { - OOTRACEERR3("ERROR:Unsupported media channel address type " - "(%s, %s)\n", call->callType, call->callToken); - return OO_FAILED; - } - - if(!pChannel->chanCap->startTransmitChannel) - { - OOTRACEERR3("ERROR:No callback registered to start transmit " - "channel (%s, %s)\n",call->callType, - call->callToken); - return OO_FAILED; - } - pChannel->chanCap->startTransmitChannel(call, pChannel); - } - /* Mark the current channel as established and close all other - logical channels with same session id and in same direction. - */ - ooOnLogicalChannelEstablished(call, pChannel); - } - finishPrint(); - removeEventHandler(call->pctxt); - OO_SETFLAG(call->flags, OO_M_FASTSTARTANSWERED); - } - - } - - /* Retrieve the H.245 control channel address from the connect msg */ - if(q931Msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent && - q931Msg->userInfo->h323_uu_pdu.h245Tunneling && - progress->m.h245AddressPresent) { - OOTRACEINFO3("Tunneling and h245address provided." - "Giving preference to Tunneling (%s, %s)\n", - call->callType, call->callToken); - } - else if(progress->m.h245AddressPresent) - { - if (OO_TESTFLAG (call->flags, OO_M_TUNNELING)) - { - OO_CLRFLAG (call->flags, OO_M_TUNNELING); - OOTRACEINFO3("Tunneling is disabled for call as H245 address is " - "provided in Progress message (%s, %s)\n", - call->callType, call->callToken); - } - ret = ooH323GetIpPortFromH225TransportAddress(call, - &progress->h245Address, call->remoteIP, - &call->remoteH245Port); - if(ret != OO_OK) - { - OOTRACEERR3("Error: Unknown H245 address type in received " - "Progress message (%s, %s)", call->callType, - call->callToken); - /* Mark call for clearing */ - if(call->callState < OO_CALL_CLEAR) - { - call->callEndReason = OO_REASON_INVALIDMESSAGE; - call->callState = OO_CALL_CLEAR; - } - return OO_FAILED; - } - } - return OO_OK; -} int ooOnReceivedSignalConnect(OOH323CallData* call, Q931Message *q931Msg) @@ -1265,14 +1065,12 @@ /* H225 message callback */ if(gH323ep.h225Callbacks.onReceivedSetup) - ret = gH323ep.h225Callbacks.onReceivedSetup(call, q931Msg); + gH323ep.h225Callbacks.onReceivedSetup(call, q931Msg); /* Free up the mem used by the received message, as it's processing is done. */ - if (ret == OO_OK) { - - ooFreeQ931Message(call->msgctxt, q931Msg); + ooFreeQ931Message(q931Msg); ooSendCallProceeding(call);/* Send call proceeding message*/ @@ -1298,7 +1096,6 @@ else { ret = ooH323CallAdmitted (call); } - } break; @@ -1307,7 +1104,7 @@ call->callType, call->callToken); ooOnReceivedCallProceeding(call, q931Msg); - ooFreeQ931Message(call->msgctxt, q931Msg); + ooFreeQ931Message(q931Msg); break; @@ -1319,19 +1116,7 @@ if(gH323ep.h323Callbacks.onAlerting && call->callStatemsgctxt, q931Msg); - break; - - - case Q931ProgressMsg:/* PROGRESS message received */ - OOTRACEINFO3("H.225 Progress message received (%s, %s)\n", - call->callType, call->callToken); - - ooOnReceivedProgress(call, q931Msg); - - if(gH323ep.h323Callbacks.onProgress && call->callStatemsgctxt, q931Msg); + ooFreeQ931Message(q931Msg); break; @@ -1366,12 +1151,12 @@ if(gH323ep.h323Callbacks.onCallEstablished) gH323ep.h323Callbacks.onCallEstablished(call); } - ooFreeQ931Message(call->msgctxt, q931Msg); + ooFreeQ931Message(q931Msg); break; case Q931InformationMsg: OOTRACEINFO3("H.225 Information msg received (%s, %s)\n", call->callType, call->callToken); - ooFreeQ931Message(call->msgctxt, q931Msg); + ooFreeQ931Message(q931Msg); break; @@ -1381,39 +1166,44 @@ ooOnReceivedReleaseComplete(call, q931Msg); - ooFreeQ931Message(call->msgctxt, q931Msg); + ooFreeQ931Message(q931Msg); break; case Q931FacilityMsg: OOTRACEINFO3("H.225 Facility message Received (%s, %s)\n", call->callType, call->callToken); ooOnReceivedFacility(call, q931Msg); - ooFreeQ931Message(call->msgctxt, q931Msg); + ooFreeQ931Message(q931Msg); + break; + case Q931ProgressMsg: + OOTRACEINFO3("H.225 Progress message received (%s, %s)\n", + call->callType, call->callToken); + ooFreeQ931Message(q931Msg); break; case Q931StatusMsg: OOTRACEINFO3("H.225 Status message received (%s, %s)\n", call->callType, call->callToken); - ooFreeQ931Message(call->msgctxt, q931Msg); + ooFreeQ931Message(q931Msg); break; case Q931StatusEnquiryMsg: OOTRACEINFO3("H.225 Status Inquiry message Received (%s, %s)\n", call->callType, call->callToken); - ooFreeQ931Message(call->msgctxt, q931Msg); + ooFreeQ931Message(q931Msg); break; case Q931SetupAckMsg: OOTRACEINFO3("H.225 Setup Ack message received (%s, %s)\n", call->callType, call->callToken); - ooFreeQ931Message(call->msgctxt, q931Msg); + ooFreeQ931Message(q931Msg); break; case Q931NotifyMsg: OOTRACEINFO3("H.225 Notify message Received (%s, %s)\n", call->callType, call->callToken); - ooFreeQ931Message(call->msgctxt, q931Msg); + ooFreeQ931Message(q931Msg); break; default: OOTRACEWARN3("Invalid H.225 message type received (%s, %s)\n", call->callType, call->callToken); - ooFreeQ931Message(call->msgctxt, q931Msg); + ooFreeQ931Message(q931Msg); } return ret; } @@ -1606,8 +1396,7 @@ (OOH323CallData *call, H225H323_UU_PDU * pH323UUPdu) { H245Message *pmsg; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = call->msgctxt; + OOCTXT *pctxt = &gH323ep.msgctxt; int ret=0,i=0; OOTRACEDBGC3("Checking for tunneled H.245 messages (%s, %s)\n", --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooports.c 2009-05-31 00:21:10.000000000 +0400 +++ channels/ooh323c/src/ooports.c 2008-02-07 23:59:47.000000000 +0300 @@ -14,8 +14,6 @@ * *****************************************************************************/ -#include -#include #include "ooports.h" #include "ooh323ep.h" @@ -23,7 +21,6 @@ /** Global endpoint structure */ extern OOH323EndPoint gH323ep; -extern ast_mutex_t bindPortLock; /* Get the next port of type TCP/UDP/RTP */ int ooGetNextPort (OOH323PortType type) @@ -66,8 +63,6 @@ int initialPort, bindPort, ret; OOIPADDR ipAddrs; - ast_mutex_lock(&bindPortLock); - initialPort = ooGetNextPort (type); bindPort = initialPort; @@ -77,13 +72,12 @@ { if((ret=ooSocketBind(socket, ipAddrs, bindPort))==0) { - ast_mutex_unlock(&bindPortLock); return bindPort; } else { bindPort = ooGetNextPort (type); - if (bindPort == initialPort) { ast_mutex_unlock(&bindPortLock); return OO_FAILED; } + if (bindPort == initialPort) return OO_FAILED; } } } --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooh245.h 2009-05-30 06:40:48.000000000 +0400 +++ channels/ooh323c/src/ooh245.h 2008-02-07 23:59:47.000000000 +0300 @@ -69,7 +69,7 @@ * @return Completion status of operation: 0 (OO_OK) = success, * negative return value is error. */ -EXTERN int ooCreateH245Message(OOH323CallData* call, H245Message **msg, int type); +EXTERN int ooCreateH245Message(H245Message **msg, int type); /** * Frees up the memory used by the H245 message. --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooCalls.h 2009-06-17 22:11:14.000000000 +0400 +++ channels/ooh323c/src/ooCalls.h 2008-02-07 23:59:47.000000000 +0300 @@ -54,7 +54,6 @@ #define OO_M_DISABLEGK ASN1UINTCNT(0x01000000) #define OO_M_MANUALRINGBACK ASN1UINTCNT(0x10000000) -#define OO_M_TRYBEMASTER ASN1UINTCNT(0x00000010) /** * Call states. @@ -68,8 +67,7 @@ OO_CALL_CLEAR, /*!< Call marked for clearing */ OO_CALL_CLEAR_RELEASERECVD, /*!< Release command received. */ OO_CALL_CLEAR_RELEASESENT, /*!< Release sent */ - OO_CALL_CLEARED, /*!< Call cleared */ - OO_CALL_REMOVED /* call removed */ + OO_CALL_CLEARED /*!< Call cleared */ } OOCallState; /** @@ -138,17 +136,9 @@ */ typedef struct OOH323CallData { OOCTXT *pctxt; - OOCTXT *msgctxt; - pthread_t callThread; - ast_mutex_t Lock; - OOBOOL Monitor; - OOSOCKET CmdChan; - OOSOCKET cmdSock; - void* CmdChanLock; char callToken[20]; /* ex: ooh323c_call_1 */ char callType[10]; /* incoming/outgoing */ OOCallMode callMode; - int transfercap; ASN1USINT callReference; char ourCallerId[256]; H225CallIdentifier callIdentifier;/* The call identifier for the active @@ -159,7 +149,6 @@ ASN1UINT flags; OOCallState callState; OOCallClearReason callEndReason; - int q931cause; unsigned h245ConnectionAttempts; OOH245SessionState h245SessionState; int dtmfmode; @@ -296,7 +285,6 @@ typedef struct OOH323CALLBACKS { cb_OnAlerting onNewCallCreated; cb_OnAlerting onAlerting; - cb_OnAlerting onProgress; cb_OnIncomingCall onIncomingCall; cb_OnOutgoingCall onOutgoingCall; cb_OnCallEstablished onCallEstablished; @@ -729,7 +717,7 @@ * * @return Pointer to the call if found, NULL otherwise. */ -EXTERN OOH323CallData* ooFindCallByToken(const char *callToken); +EXTERN OOH323CallData* ooFindCallByToken(char *callToken); /** * This function is used to end a call. Based on what stage of clearance the --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/oochannels.h 2009-05-30 06:40:48.000000000 +0400 +++ channels/ooh323c/src/oochannels.h 2008-02-07 23:59:47.000000000 +0300 @@ -130,8 +130,6 @@ * */ EXTERN int ooMonitorChannels(void); -EXTERN int ooMonitorCmdChannels(void); -EXTERN int ooMonitorCallChannels(OOH323CallData *); /** * This function is called to stop the monitor channels event loop. @@ -140,7 +138,6 @@ * @return OO_OK, on success. OO_FAILED, on failure */ EXTERN int ooStopMonitorCalls(void); -EXTERN int ooStopMonitorCallChannels(OOH323CallData *); /** * This function is used to receive an H.2250 message received on a calls --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooq931.c 2009-06-23 03:09:25.000000000 +0400 +++ channels/ooh323c/src/ooq931.c 2008-05-28 18:45:23.000000000 +0400 @@ -14,9 +14,6 @@ * *****************************************************************************/ -#include -#include - #include "ooq931.h" #include "ootrace.h" #include "ooasn1.h" @@ -36,7 +33,6 @@ /** Global endpoint structure */ extern OOH323EndPoint gH323ep; -extern ast_mutex_t newCallLock; static ASN1OBJID gProtocolID = { 6, { 0, 0, 8, 2250, 0, 4 } @@ -48,8 +44,7 @@ int offset, x; int rv = ASN_OK; char number[128]; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = call->msgctxt; + OOCTXT *pctxt = &gH323ep.msgctxt; dListInit (&msg->ies); /* clear information elements list */ @@ -234,7 +229,7 @@ we just ignore notify message as of now as handling is optional for end point*/ if(msg->messageType != Q931NotifyMsg) - rv = ooDecodeUUIE(pctxt, msg); + rv = ooDecodeUUIE(msg); return rv; } @@ -369,9 +364,9 @@ } } -int ooCreateQ931Message(OOCTXT* pctxt, Q931Message **q931msg, int msgType) +int ooCreateQ931Message(Q931Message **q931msg, int msgType) { - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ + OOCTXT *pctxt = &gH323ep.msgctxt; *q931msg = (Q931Message*)memAllocZ(pctxt, sizeof(Q931Message)); @@ -402,12 +397,10 @@ char aCallToken[200]; int ret = 0; - ast_mutex_lock(&newCallLock); sprintf (aCallToken, "ooh323c_%d", counter++); if (counter > OO_MAX_CALL_TOKEN) counter = 1; - ast_mutex_unlock(&newCallLock); if ((strlen(aCallToken)+1) < size) strcpy (callToken, aCallToken); @@ -486,25 +479,24 @@ } -int ooFreeQ931Message(OOCTXT* pctxt, Q931Message *q931Msg) +int ooFreeQ931Message(Q931Message *q931Msg) { if(!q931Msg) { - /* memReset(&gH323ep.msgctxt); */ - memReset(pctxt); + memReset(&gH323ep.msgctxt); } return OO_OK; } -int ooEncodeUUIE(OOCTXT* pctxt, Q931Message *q931msg) +int ooEncodeUUIE(Q931Message *q931msg) { ASN1OCTET msgbuf[1024]; ASN1OCTET * msgptr=NULL; int len; ASN1BOOL aligned = TRUE; Q931InformationElement* ie=NULL; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - memset(msgbuf, 0, sizeof(msgbuf)); + OOCTXT *pctxt = &gH323ep.msgctxt; + /* memset(msgbuf, 0, sizeof(msgbuf));*/ if(!q931msg) { OOTRACEERR1("ERROR: Invalid Q931 message in add user-user IE\n"); @@ -555,14 +547,14 @@ return OO_OK; } -int ooDecodeUUIE(OOCTXT* pctxt, Q931Message *q931Msg) +int ooDecodeUUIE(Q931Message *q931Msg) { DListNode* curNode; unsigned int i; ASN1BOOL aligned=TRUE; int stat; Q931InformationElement *ie; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ + OOCTXT *pctxt = &gH323ep.msgctxt; if(q931Msg ==NULL) { OOTRACEERR1("Error: ooDecodeUUIE failed - NULL q931 message\n"); @@ -574,7 +566,7 @@ i++, curNode = curNode->next) { ie = (Q931InformationElement*) curNode->data; - if(ie && ie->discriminator == Q931UserUserIE) + if(ie->discriminator == Q931UserUserIE) break; } if(i == q931Msg->ies.count) @@ -610,8 +602,7 @@ (OOH323CallData* call, ASN1OCTET *msgbuf, ASN1UINT msglen) { - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = call->msgctxt; + OOCTXT *pctxt = &gH323ep.msgctxt; Q931Message q931Msg; int ret; @@ -659,8 +650,7 @@ else if(pq931Msg->messageType == Q931CallProceedingMsg){ msgbuf[i++] = OOCallProceeding; } - else if(pq931Msg->messageType == Q931AlertingMsg || - pq931Msg->messageType == Q931ProgressMsg){ + else if(pq931Msg->messageType == Q931AlertingMsg){ msgbuf[i++] = OOAlert; } else if(pq931Msg->messageType == Q931ReleaseCompleteMsg){ @@ -681,7 +671,7 @@ return OO_FAILED; } - stat = ooEncodeUUIE(call->msgctxt, pq931Msg); + stat = ooEncodeUUIE(pq931Msg); if(stat != OO_OK) { OOTRACEERR3("Error:Failed to encode uuie. (%s, %s)\n", call->callType, @@ -839,8 +829,7 @@ int ooSetFastStartResponse(OOH323CallData *pCall, Q931Message *pQ931msg, ASN1UINT *fsCount, ASN1DynOctStr **fsElem) { - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = pCall->msgctxt; + OOCTXT *pctxt = &gH323ep.msgctxt; int ret = 0, i=0, j=0, remoteMediaPort=0, remoteMediaControlPort = 0, dir=0; char remoteMediaIP[20], remoteMediaControlIP[20]; DListNode *pNode = NULL; @@ -1126,7 +1115,7 @@ { OOTRACEERR3("ERROR:Encoding of olc failed for faststart " "(%s, %s)\n", pCall->callType, pCall->callToken); - ooFreeQ931Message(pctxt, pQ931msg); + ooFreeQ931Message(pQ931msg); if(pCall->callState < OO_CALL_CLEAR) { pCall->callEndReason = OO_REASON_LOCAL_CLEARED; @@ -1147,7 +1136,7 @@ { OOTRACEERR3("Error: Failed decoding FastStart Element (%s, %s)\n", pCall->callType, pCall->callToken); - ooFreeQ931Message(pctxt, pQ931msg); + ooFreeQ931Message(pQ931msg); if(pCall->callState < OO_CALL_CLEAR) { pCall->callEndReason = OO_REASON_LOCAL_CLEARED; @@ -1212,12 +1201,11 @@ H225VendorIdentifier *vendor; H225CallProceeding_UUIE *callProceeding; Q931Message *q931msg=NULL; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = call->msgctxt; + OOCTXT *pctxt = &gH323ep.msgctxt; OOTRACEDBGC3("Building CallProceeding (%s, %s)\n", call->callType, call->callToken); - ret = ooCreateQ931Message(pctxt, &q931msg, Q931CallProceedingMsg); + ret = ooCreateQ931Message(&q931msg, Q931CallProceedingMsg); if(ret != OO_OK) { OOTRACEERR1("Error: In allocating memory for - H225 Call " @@ -1300,8 +1288,7 @@ OOTRACEERR3("Error:Failed to enqueue CallProceeding message to outbound queue.(%s, %s)\n", call->callType, call->callToken); } - /* memReset(&gH323ep.msgctxt); */ - memReset(call->msgctxt); + memReset(&gH323ep.msgctxt); return ret; } @@ -1312,10 +1299,9 @@ H225Alerting_UUIE *alerting; H225VendorIdentifier *vendor; Q931Message *q931msg=NULL; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = call->msgctxt; + OOCTXT *pctxt = &gH323ep.msgctxt; - ret = ooCreateQ931Message(pctxt, &q931msg, Q931AlertingMsg); + ret = ooCreateQ931Message(&q931msg, Q931AlertingMsg); if(ret != OO_OK) { OOTRACEERR1("Error: In allocating memory for - H225 " @@ -1430,115 +1416,7 @@ OOTRACEERR3("Error: Failed to enqueue Alerting message to outbound queue. (%s, %s)\n", call->callType, call->callToken); } - /* memReset(&gH323ep.msgctxt); */ - memReset(call->msgctxt); - - return ret; -} - -int ooSendProgress(OOH323CallData *call) -{ - int ret; - H225Progress_UUIE *progress; - H225VendorIdentifier *vendor; - Q931Message *q931msg=NULL; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = call->msgctxt; - - ret = ooCreateQ931Message(pctxt, &q931msg, Q931ProgressMsg); - if(ret != OO_OK) - { - OOTRACEERR1("Error: In allocating memory for - H225 " - "Alerting message\n"); - return OO_FAILED; - } - - q931msg->callReference = call->callReference; - - q931msg->userInfo = (H225H323_UserInformation*)memAlloc(pctxt, - sizeof(H225H323_UserInformation)); - if(!q931msg->userInfo) - { - OOTRACEERR1("ERROR:Memory - ooSendAlerting - userInfo\n"); - return OO_FAILED; - } - memset (q931msg->userInfo, 0, sizeof(H225H323_UserInformation)); - q931msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent=1; - q931msg->userInfo->h323_uu_pdu.h245Tunneling = OO_TESTFLAG(gH323ep.flags, - OO_M_TUNNELING); - q931msg->userInfo->h323_uu_pdu.h323_message_body.t = - T_H225H323_UU_PDU_h323_message_body_progress; - - progress = (H225Progress_UUIE*)memAlloc(pctxt, - sizeof(H225Progress_UUIE)); - if(!progress) - { - OOTRACEERR1("ERROR:Memory - ooSendProgress- alerting\n"); - return OO_FAILED; - } - memset(progress, 0, sizeof(H225Progress_UUIE)); - q931msg->userInfo->h323_uu_pdu.h323_message_body.u.progress = progress; - progress->m.multipleCallsPresent = 1; - progress->m.maintainConnectionPresent = 1; - progress->multipleCalls = FALSE; - progress->maintainConnection = FALSE; - - progress->callIdentifier.guid.numocts = - call->callIdentifier.guid.numocts; - memcpy(progress->callIdentifier.guid.data, - call->callIdentifier.guid.data, - call->callIdentifier.guid.numocts); - progress->protocolIdentifier = gProtocolID; - - /* Pose as Terminal or Gateway */ - if(gH323ep.isGateway) - progress->destinationInfo.m.gatewayPresent = TRUE; - else - progress->destinationInfo.m.terminalPresent = TRUE; - - progress->destinationInfo.m.vendorPresent = 1; - vendor = &progress->destinationInfo.vendor; - if(gH323ep.productID) - { - vendor->m.productIdPresent = 1; - vendor->productId.numocts = ASN1MIN(strlen(gH323ep.productID), - sizeof(vendor->productId.data)); - strncpy(vendor->productId.data, gH323ep.productID, - vendor->productId.numocts); - } - if(gH323ep.versionID) - { - vendor->m.versionIdPresent = 1; - vendor->versionId.numocts = ASN1MIN(strlen(gH323ep.versionID), - sizeof(vendor->versionId.data)); - strncpy(vendor->versionId.data, gH323ep.versionID, - vendor->versionId.numocts); - } - - vendor->vendor.t35CountryCode = gH323ep.t35CountryCode; - vendor->vendor.t35Extension = gH323ep.t35Extension; - vendor->vendor.manufacturerCode = gH323ep.manufacturerCode; - - ret = ooSetFastStartResponse(call, q931msg, - &progress->fastStart.n, &progress->fastStart.elem); - if(ret != ASN_OK) { return ret; } - if(progress->fastStart.n > 0) { - progress->m.fastStartPresent = TRUE; - } - else { - progress->m.fastStartPresent = FALSE; - } - - OOTRACEDBGA3("Built Alerting (%s, %s)\n", call->callType, call->callToken); - - ret = ooSendH225Msg(call, q931msg); - if(ret != OO_OK) - { - OOTRACEERR3("Error: Failed to enqueue Alerting message to outbound queue. (%s, %s)\n", call->callType, call->callToken); - } - - /* memReset(&gH323ep.msgctxt); */ - memReset(call->msgctxt); + memReset(&gH323ep.msgctxt); return ret; } @@ -1549,12 +1427,11 @@ int ret=0; Q931Message *pQ931Msg = NULL; H225Facility_UUIE *facility=NULL; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = call->msgctxt; + OOCTXT *pctxt = &gH323ep.msgctxt; OOTRACEDBGA3("Building Facility message (%s, %s)\n", call->callType, call->callToken); - ret = ooCreateQ931Message(pctxt, &pQ931Msg, Q931FacilityMsg); + ret = ooCreateQ931Message(&pQ931Msg, Q931FacilityMsg); if(ret != OO_OK) { OOTRACEERR3 @@ -1613,8 +1490,7 @@ ("Error:Failed to enqueue Facility message to outbound " "queue.(%s, %s)\n", call->callType, call->callToken); } - /* memReset (&gH323ep.msgctxt); */ - memReset (call->msgctxt); + memReset (&gH323ep.msgctxt); return ret; } @@ -1626,11 +1502,10 @@ enum Q931CauseValues cause = Q931ErrorInCauseIE; unsigned h225ReasonCode = T_H225ReleaseCompleteReason_undefinedReason; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = call->msgctxt; + OOCTXT *pctxt = &gH323ep.msgctxt; OOTRACEDBGA3("Building Release Complete message to send(%s, %s)\n", call->callType, call->callToken); - ret = ooCreateQ931Message(pctxt, &q931msg, Q931ReleaseCompleteMsg); + ret = ooCreateQ931Message(&q931msg, Q931ReleaseCompleteMsg); if(ret != OO_OK) { OOTRACEERR3("Error: In ooCreateQ931Message - H225 Release Complete " @@ -1672,10 +1547,8 @@ /* Get cause value and h225 reason code corresponding to OOCallClearReason*/ ooQ931GetCauseAndReasonCodeFromCallClearReason(call->callEndReason, &cause, &h225ReasonCode); - if (call->q931cause == 0) - call->q931cause = cause; /* Set Cause IE */ - ooQ931SetCauseIE(pctxt, q931msg, call->q931cause, 0, 0); + ooQ931SetCauseIE(q931msg, cause, 0, 0); /* Set H225 releaseComplete reasonCode */ releaseComplete->m.reasonPresent = TRUE; @@ -1706,8 +1579,7 @@ OOTRACEERR3("Error:Failed to enqueue ReleaseComplete message to outbound" " queue.(%s, %s)\n", call->callType, call->callToken); } - /* memReset(&gH323ep.msgctxt); */ - memReset(call->msgctxt); + memReset(&gH323ep.msgctxt); return ret; } @@ -1726,10 +1598,9 @@ H225TransportAddress_ipAddress *h245IpAddr; H225VendorIdentifier *vendor; Q931Message *q931msg=NULL; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = call->msgctxt; + OOCTXT *pctxt = &gH323ep.msgctxt; - ret = ooCreateQ931Message(pctxt, &q931msg, Q931ConnectMsg); + ret = ooCreateQ931Message(&q931msg, Q931ConnectMsg); if(ret != OO_OK) { OOTRACEERR1("Error: In allocating memory for - H225 " @@ -1739,11 +1610,11 @@ q931msg->callReference = call->callReference; /* Set bearer capability */ - if(OO_OK != ooSetBearerCapabilityIE(pctxt, q931msg, Q931CCITTStd, - // Q931TransferUnrestrictedDigital, Q931TransferPacketMode, - // Q931TransferRatePacketMode, Q931UserInfoLayer1G722G725)) - Q931TransferSpeech, Q931TransferCircuitMode, - Q931TransferRate64Kbps, Q931UserInfoLayer1G711ALaw)) + if(OO_OK != ooSetBearerCapabilityIE(q931msg, Q931CCITTStd, + Q931TransferUnrestrictedDigital, Q931TransferPacketMode, + Q931TransferRatePacketMode, Q931UserInfoLayer1G722G725)) + // Q931TransferSpeech, Q931TransferCircuitMode, + // Q931TransferRate64Kbps, Q931UserInfoLayer1G711ULaw)) { OOTRACEERR3("Error: Failed to set bearer capability ie. (%s, %s)\n", call->callType, call->callToken); @@ -1894,12 +1765,10 @@ if(ret != OO_OK) { OOTRACEERR3("Error:Failed to enqueue Connect message to outbound queue.(%s, %s)\n", call->callType, call->callToken); - /* memReset(&gH323ep.msgctxt);*/ - memReset(call->msgctxt); + memReset(&gH323ep.msgctxt); return OO_FAILED; } - /* memReset(&gH323ep.msgctxt); */ - memReset(call->msgctxt); + memReset(&gH323ep.msgctxt); #if 0 if (OO_TESTFLAG (call->flags, OO_M_TUNNELING)) @@ -1992,23 +1861,6 @@ } -int ooH323NewCall(char *callToken) { - OOH323CallData* call; - if(!callToken) - { - OOTRACEERR1("ERROR: Invalid callToken parameter to make call\n"); - return OO_FAILED; - } - call = ooCreateCall("outgoing", callToken); - if (!call) - { - OOTRACEERR1("ERROR: Can't create call %s\n"); - return OO_FAILED; - } - - return OO_OK; -} - int ooH323MakeCall(char *dest, char *callToken, ooCallOptions *opts) { OOCTXT *pctxt; @@ -2028,14 +1880,7 @@ return OO_FAILED; } - /* call = ooCreateCall("outgoing", callToken); */ - call = ooFindCallByToken(callToken); - if (!call) - { - OOTRACEERR1("ERROR: Can't create call %s\n"); - return OO_FAILED; - } - + call = ooCreateCall("outgoing", callToken); pctxt = call->pctxt; if(opts) { @@ -2055,11 +1900,10 @@ OO_CLRFLAG(call->flags, OO_M_DISABLEGK); call->callMode = opts->callMode; - call->transfercap = opts->transfercap; } - ret = ooParseDestination(call, dest, tmp, 24, &call->remoteAliases); + ret = ooParseDestination(call, dest, tmp, 30, &call->remoteAliases); if(ret != OO_OK) { OOTRACEERR2("Error: Failed to parse the destination string %s for " @@ -2097,13 +1941,7 @@ } else { /* Send as H225 message to calling endpoint */ - ast_mutex_lock(&call->Lock); - if (call->callState < OO_CALL_CLEAR) - if ((ret = ooH323CallAdmitted (call)) != OO_OK) { - ast_mutex_unlock(&call->Lock); - return ret; - } - ast_mutex_unlock(&call->Lock); + ret = ooH323CallAdmitted (call); } return OO_OK; @@ -2134,11 +1972,6 @@ } return OO_FAILED; } - - if(gH323ep.h323Callbacks.onOutgoingCall) { - /* Outgoing call callback function */ - gH323ep.h323Callbacks.onOutgoingCall(call); - } ret = ooH323MakeCall_helper(call); } @@ -2179,10 +2012,9 @@ ASN1BOOL aligned = 1; ooAliases *pAlias = NULL; - /* pctxt = &gH323ep.msgctxt; */ - pctxt = call->msgctxt; + pctxt = &gH323ep.msgctxt; - ret = ooCreateQ931Message(pctxt, &q931msg, Q931SetupMsg); + ret = ooCreateQ931Message(&q931msg, Q931SetupMsg); if(ret != OO_OK) { OOTRACEERR1("ERROR:Failed to Create Q931 SETUP Message\n "); @@ -2192,11 +2024,10 @@ q931msg->callReference = call->callReference; /* Set bearer capability */ - if(OO_OK != ooSetBearerCapabilityIE(pctxt, q931msg, Q931CCITTStd, - // Q931TransferUnrestrictedDigital, Q931TransferPacketMode, - call->transfercap, Q931TransferCircuitMode, - // Q931TransferRatePacketMode, Q931UserInfoLayer1G722G725)) - Q931TransferRate64Kbps, Q931UserInfoLayer1G711ALaw)) + if(OO_OK != ooSetBearerCapabilityIE(q931msg, Q931CCITTStd, + Q931TransferUnrestrictedDigital, Q931TransferPacketMode, + Q931TransferRatePacketMode, Q931UserInfoLayer1G722G725)) +// Q931TransferRate64Kbps, Q931UserInfoLayer1G711ULaw)) { OOTRACEERR3("Error: Failed to set bearer capability ie.(%s, %s)\n", call->callType, call->callToken); @@ -2205,13 +2036,13 @@ /* Set calling party number Q931 IE */ if(call->callingPartyNumber) - ooQ931SetCallingPartyNumberIE(pctxt, q931msg, + ooQ931SetCallingPartyNumberIE(q931msg, (const char*)call->callingPartyNumber, 1, 0, 0, 0); /* Set called party number Q931 IE */ if(call->calledPartyNumber) - ooQ931SetCalledPartyNumberIE(pctxt, q931msg, + ooQ931SetCalledPartyNumberIE(q931msg, (const char*)call->calledPartyNumber, 1, 0); else if(call->remoteAliases) { pAlias = call->remoteAliases; @@ -2232,7 +2063,7 @@ return OO_FAILED; } strcpy(call->calledPartyNumber, pAlias->value); - ooQ931SetCalledPartyNumberIE(pctxt, q931msg, + ooQ931SetCalledPartyNumberIE(q931msg, (const char*)call->calledPartyNumber, 1, 0); } @@ -2439,7 +2270,7 @@ { OOTRACEERR3("ERROR:Memory - ooH323MakeCall_helper - olc(%s, %s)" "\n", call->callType, call->callToken); - ooFreeQ931Message(pctxt, q931msg); + ooFreeQ931Message(q931msg); if(call->callState < OO_CALL_CLEAR) { call->callEndReason = OO_REASON_LOCAL_CLEARED; @@ -2459,7 +2290,7 @@ { OOTRACEERR3("ERROR:Encoding of olc failed for faststart(%s, %s)" "\n", call->callType, call->callToken); - ooFreeQ931Message(pctxt, q931msg); + ooFreeQ931Message(q931msg); if(call->callState < OO_CALL_CLEAR) { call->callEndReason = OO_REASON_LOCAL_CLEARED; @@ -2480,7 +2311,7 @@ { OOTRACEERR3("Error: Failed decoding FastStart Element." "(%s, %s)\n", call->callType, call->callToken); - ooFreeQ931Message(pctxt, q931msg); + ooFreeQ931Message(q931msg); if(call->callState < OO_CALL_CLEAR) { call->callEndReason = OO_REASON_LOCAL_CLEARED; @@ -2507,7 +2338,7 @@ { OOTRACEERR3("ERROR:Memory - ooH323MakeCall_helper - olc(%s, %s)" "\n", call->callType, call->callToken); - ooFreeQ931Message(pctxt, q931msg); + ooFreeQ931Message(q931msg); if(call->callState < OO_CALL_CLEAR) { call->callEndReason = OO_REASON_LOCAL_CLEARED; @@ -2527,7 +2358,7 @@ { OOTRACEERR3("ERROR:Encoding of olc failed for faststart(%s, %s)" "\n", call->callType, call->callToken); - ooFreeQ931Message(pctxt, q931msg); + ooFreeQ931Message(q931msg); if(call->callState < OO_CALL_CLEAR) { call->callEndReason = OO_REASON_LOCAL_CLEARED; @@ -2547,7 +2378,7 @@ { OOTRACEERR3("Error: Failed decoding FastStart Element." "(%s, %s)\n", call->callType, call->callToken); - ooFreeQ931Message(pctxt, q931msg); + ooFreeQ931Message(q931msg); if(call->callState < OO_CALL_CLEAR) { call->callEndReason = OO_REASON_LOCAL_CLEARED; @@ -2626,8 +2457,7 @@ { OOTRACEERR3("Error:Failed to enqueue SETUP message to outbound queue. (%s, %s)\n", call->callType, call->callToken); } - /* memReset(&gH323ep.msgctxt);*/ - memReset(call->msgctxt); + memReset(&gH323ep.msgctxt); return ret; } @@ -2639,10 +2469,9 @@ int ret; H225Information_UUIE *information=NULL; Q931Message *q931msg=NULL; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = call->msgctxt; + OOCTXT *pctxt = &gH323ep.msgctxt; - ret = ooCreateQ931Message(pctxt, &q931msg, Q931InformationMsg); + ret = ooCreateQ931Message(&q931msg, Q931InformationMsg); if(ret != OO_OK) { OOTRACEERR3("Error: In allocating memory for - H225 Information message." @@ -2658,8 +2487,7 @@ { OOTRACEERR3("ERROR:Memory - ooQ931SendDTMFAsKeypadIE - userInfo" "(%s, %s)\n", call->callType, call->callToken); - /* memReset(&gH323ep.msgctxt); */ - memReset(call->msgctxt); + memReset(&gH323ep.msgctxt); return OO_FAILED; } q931msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent=1; @@ -2674,8 +2502,7 @@ { OOTRACEERR3("ERROR:Memory - ooQ931SendDTMFAsKeypadIE - information" "(%s, %s)\n", call->callType, call->callToken); - /* memReset(&gH323ep.msgctxt); */ - memReset(call->msgctxt); + memReset(&gH323ep.msgctxt); return OO_FAILED; } q931msg->userInfo->h323_uu_pdu.h323_message_body.u.information = @@ -2689,13 +2516,12 @@ information->protocolIdentifier = gProtocolID; /*Add keypad IE*/ - ret = ooQ931SetKeypadIE(pctxt, q931msg, data); + ret = ooQ931SetKeypadIE(q931msg, data); if(ret != OO_OK) { OOTRACEERR3("Error:Creating keypad IE for (%s, %s)\n", call->callType, call->callToken); - /* memReset(&gH323ep.msgctxt); */ - memReset(call->msgctxt); + memReset(&gH323ep.msgctxt); return OO_FAILED; } @@ -2705,8 +2531,7 @@ OOTRACEERR3("Error:Failed to enqueue Information message to outbound " "queue. (%s, %s)\n", call->callType, call->callToken); } - /* memReset(&gH323ep.msgctxt); */ - memReset(call->msgctxt); + memReset(&gH323ep.msgctxt); return ret; @@ -2761,7 +2586,7 @@ strcpy(call->pCallFwdData->ip, ip); } - ret = ooCreateQ931Message(pctxt, &pQ931Msg, Q931FacilityMsg); + ret = ooCreateQ931Message(&pQ931Msg, Q931FacilityMsg); if(ret != OO_OK) { OOTRACEERR3 @@ -2858,7 +2683,7 @@ return ret; } -int ooH323HangCall(char * callToken, OOCallClearReason reason, int q931cause) +int ooH323HangCall(char * callToken, OOCallClearReason reason) { OOH323CallData *call; @@ -2873,20 +2698,19 @@ if(call->callState < OO_CALL_CLEAR) { call->callEndReason = reason; - call->q931cause = q931cause; call->callState = OO_CALL_CLEAR; } return OO_OK; } int ooSetBearerCapabilityIE - (OOCTXT* pctxt, Q931Message *pmsg, enum Q931CodingStandard codingStandard, + (Q931Message *pmsg, enum Q931CodingStandard codingStandard, enum Q931InformationTransferCapability capability, enum Q931TransferMode transferMode, enum Q931TransferRate transferRate, enum Q931UserInfoLayer1Protocol userInfoLayer1) { unsigned size = 3; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ + OOCTXT *pctxt = &gH323ep.msgctxt; if(pmsg->bearerCapabilityIE) { @@ -2914,10 +2738,10 @@ return OO_OK; } -int ooQ931SetKeypadIE(OOCTXT* pctxt, Q931Message *pmsg, const char* data) +int ooQ931SetKeypadIE(Q931Message *pmsg, const char* data) { unsigned len = 0; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ + OOCTXT *pctxt = &gH323ep.msgctxt; len = strlen(data); pmsg->keypadIE = (Q931InformationElement*) @@ -2938,11 +2762,11 @@ int ooQ931SetCallingPartyNumberIE - (OOCTXT* pctxt, Q931Message *pmsg, const char *number, unsigned plan, unsigned type, + (Q931Message *pmsg, const char *number, unsigned plan, unsigned type, unsigned presentation, unsigned screening) { unsigned len = 0; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ + OOCTXT *pctxt = &gH323ep.msgctxt; if(pmsg->callingPartyNumberIE) { @@ -2969,10 +2793,10 @@ } int ooQ931SetCalledPartyNumberIE - (OOCTXT* pctxt, Q931Message *pmsg, const char *number, unsigned plan, unsigned type) + (Q931Message *pmsg, const char *number, unsigned plan, unsigned type) { unsigned len = 0; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ + OOCTXT *pctxt = &gH323ep.msgctxt; if(pmsg->calledPartyNumberIE) { @@ -2998,10 +2822,10 @@ } int ooQ931SetCauseIE - (OOCTXT* pctxt, Q931Message *pmsg, enum Q931CauseValues cause, unsigned coding, + (Q931Message *pmsg, enum Q931CauseValues cause, unsigned coding, unsigned location) { - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ + OOCTXT *pctxt = &gH323ep.msgctxt; if(pmsg->causeIE){ memFreePtr(pctxt, pmsg->causeIE); @@ -3035,13 +2859,12 @@ ASN1DynOctStr * elem; int ret =0; H225Facility_UUIE *facility=NULL; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = call->msgctxt; + OOCTXT *pctxt = &gH323ep.msgctxt; OOTRACEDBGA4("Building Facility message for tunneling %s (%s, %s)\n", ooGetMsgTypeText(h245MsgType), call->callType, call->callToken); - ret = ooCreateQ931Message(pctxt, &pQ931Msg, Q931FacilityMsg); + ret = ooCreateQ931Message(&pQ931Msg, Q931FacilityMsg); if(ret != OO_OK) { OOTRACEERR3("ERROR: In allocating memory for facility message " @@ -3057,8 +2880,7 @@ { OOTRACEERR3("ERROR:Memory - ooSendAsTunneledMessage - userInfo" " (%s, %s)\n", call->callType, call->callToken); - /* memReset(&gH323ep.msgctxt);*/ - memReset(call->msgctxt); + memReset(&gH323ep.msgctxt); return OO_FAILED; } memset (pQ931Msg->userInfo, 0, sizeof(H225H323_UserInformation)); @@ -3077,8 +2899,7 @@ { OOTRACEERR3("ERROR:Memory - ooSendAsTunneledMessage - facility (%s, %s)" "\n", call->callType, call->callToken); - /* memReset(&gH323ep.msgctxt); */ - memReset(call->msgctxt); + memReset(&gH323ep.msgctxt); return OO_FAILED; } @@ -3130,8 +2951,7 @@ main received H225 message processing is finished. Rule. No reset when tunneling */ - /* memFreePtr(&gH323ep.msgctxt, pQ931Msg); */ - memFreePtr(call->msgctxt, pQ931Msg); + memFreePtr(&gH323ep.msgctxt, pQ931Msg); return ret; } --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/decode.c 2009-05-31 00:15:23.000000000 +0400 +++ channels/ooh323c/src/decode.c 2008-02-07 23:59:47.000000000 +0300 @@ -14,9 +14,6 @@ * *****************************************************************************/ -#include -#include - #include "ooasn1.h" static int decode16BitConstrainedString --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooSocket.c 2009-06-10 12:51:12.000000000 +0400 +++ channels/ooh323c/src/ooSocket.c 2008-07-30 07:07:14.000000000 +0400 @@ -13,9 +13,6 @@ * maintain this copyright notice. * *****************************************************************************/ -#include -#include -#include #include "ooSocket.h" #include "ootrace.h" @@ -306,7 +303,7 @@ if(ret != 0) return ASN_E_INVSOCKET; - host = ast_inet_ntoa(addr.sin_addr); + host = inet_ntoa(addr.sin_addr); if(host && strlen(host) < (unsigned)len) strcpy(ip, host); @@ -341,7 +338,7 @@ if (pNewSocket == 0) return ASN_E_INVPARAM; *pNewSocket = accept (socket, (struct sockaddr *) (void*) &m_addr, - &addr_length); + (socklen_t *) &addr_length); if (*pNewSocket <= 0) return ASN_E_INVSOCKET; if (destAddr != 0) @@ -447,7 +444,7 @@ *remoteport = ntohs(m_addr.sin_port); if(remotehost) { - host = ast_inet_ntoa(m_addr.sin_addr); + host = inet_ntoa(m_addr.sin_addr); if(strlen(host) < (hostBufLen-1)) strcpy(remotehost, host); else @@ -472,28 +469,21 @@ int ooGetLocalIPAddress(char * pIPAddrs) { int ret; - struct hostent phost; - struct hostent* reshost; - int h_errnop; + struct hostent *phost; struct in_addr addr; char hostname[100]; - char buf[2048]; if(pIPAddrs == NULL) return -1; /* Need to find suitable return value */ ret = gethostname(hostname, 100); if(ret == 0) { - if (!gethostbyname_r(hostname, - &phost, buf, sizeof(buf), - &reshost, &h_errnop)) { - if(reshost == NULL) + phost = gethostbyname(hostname); + if(phost == NULL) return -1; /* Need to define a return value if made part of rtsrc */ - memcpy(&addr, &phost.h_addr_list[0], sizeof(struct in_addr)); - strcpy(pIPAddrs, (ast_inet_ntoa(addr) == NULL) ? "127.0.0.1" : ast_inet_ntoa(addr)); - } else { - return -1; - } + memcpy(&addr, phost->h_addr_list[0], sizeof(struct in_addr)); + strcpy(pIPAddrs, inet_ntoa(addr)); + } else{ return -1; @@ -618,7 +608,10 @@ int flags; for (ifName = ifc.ifc_req; (void*)ifName < ifEndList; ifName++) { char *pName=NULL; - char addr[50], mask[50]; + char addr[50]; +#ifdef ifr_netmask + char mask[50]; +#endif pIf = (struct OOInterface*)memAlloc(pctxt, sizeof(struct OOInterface)); pName = (char*)memAlloc(pctxt, strlen(ifName->ifr_name)+1); @@ -660,7 +653,7 @@ memFreePtr(pctxt, pIf); continue; } - strcpy(addr, ast_inet_ntoa(((struct sockaddr_in*)&ifReq.ifr_addr)->sin_addr)); + strcpy(addr, inet_ntoa(((struct sockaddr_in*)&ifReq.ifr_addr)->sin_addr)); OOTRACEDBGA2("\tIP address is %s\n", addr); pIf->addr = (char*)memAlloc(pctxt, strlen(addr)+1); if(!pIf->addr) @@ -683,7 +676,7 @@ memFreePtr(pctxt, pIf); continue; } - strcpy(mask, ast_inet_ntoa(((struct sockaddr_in *)&ifReq.ifr_netmask)->sin_addr)); + strcpy(mask, inet_ntoa(((struct sockaddr_in *)&ifReq.ifr_netmask)->sin_addr)); OOTRACEDBGA2("\tMask is %s\n", mask); pIf->mask = (char*)memAlloc(pctxt, strlen(mask)+1); if(!pIf->mask) --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ootypes.h 2009-05-30 06:40:48.000000000 +0400 +++ channels/ooh323c/src/ootypes.h 2008-05-28 18:45:23.000000000 +0400 @@ -61,7 +61,7 @@ -#define OOH323C_VERSION "v0.8.3m" +#define OOH323C_VERSION "v0.8.3" #ifndef EXTERN #ifdef MAKE_DLL @@ -238,7 +238,6 @@ OOBOOL tunneling; /*!< Use H.245 tunneling */ OOBOOL disableGk; /*!< Disable use of gatekeeper */ OOCallMode callMode; /*!< Type of channel to setup with FastStart */ - int transfercap; /* q931 cap */ }ooCallOptions; --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/dlist.c 2009-05-31 00:15:34.000000000 +0400 +++ channels/ooh323c/src/dlist.c 2008-02-07 23:59:47.000000000 +0300 @@ -14,9 +14,6 @@ * *****************************************************************************/ -#include -#include - #include "ooasn1.h" void dListInit (DList* pList) --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooCmdChannel.c 2009-06-03 23:05:09.000000000 +0400 +++ channels/ooh323c/src/ooCmdChannel.c 2008-12-22 20:01:00.000000000 +0300 @@ -14,8 +14,6 @@ * *****************************************************************************/ -#include -#include #include "ooStackCmds.h" #include "ootrace.h" #include "ooq931.h" @@ -25,12 +23,11 @@ #include "ooCalls.h" #include "ooCmdChannel.h" - /** Global endpoint structure */ extern OOH323EndPoint gH323ep; OOSOCKET gCmdChan = 0; -ast_mutex_t gCmdChanLock; +pthread_mutex_t gCmdChanLock; int ooCreateCmdConnection() { @@ -40,7 +37,7 @@ if ((ret = pipe(thePipe)) == -1) { return OO_FAILED; } - ast_mutex_init(&gCmdChanLock); + pthread_mutex_init(&gCmdChanLock, NULL); gH323ep.cmdSock = dup(thePipe[0]); close(thePipe[0]); @@ -49,29 +46,6 @@ return OO_OK; } -int ooCreateCallCmdConnection(OOH323CallData* call) -{ - int ret = 0; - int thePipe[2]; - - OOTRACEINFO2("INFO: create cmd connect for call: %lx\n", call); - - call->CmdChanLock = malloc(sizeof(ast_mutex_t)); - ast_mutex_init((ast_mutex_t *)call->CmdChanLock); - - - if ((ret = pipe(thePipe)) == -1) { - return OO_FAILED; - } - ast_mutex_lock((ast_mutex_t *)call->CmdChanLock); - call->cmdSock = dup(thePipe[0]); - close(thePipe[0]); - call->CmdChan = dup(thePipe[1]); - close(thePipe[1]); - ast_mutex_unlock((ast_mutex_t *)call->CmdChanLock); - return OO_OK; -} - int ooCloseCmdConnection() { @@ -79,21 +53,7 @@ gH323ep.cmdSock = 0; close(gCmdChan); gCmdChan = 0; - ast_mutex_destroy(&gCmdChanLock); - - return OO_OK; -} -int ooCloseCallCmdConnection(OOH323CallData* call) -{ - ast_mutex_lock(call->CmdChanLock); - close(call->cmdSock); - call->cmdSock = 0; - close(call->CmdChan); - call->CmdChan = 0; - ast_mutex_unlock(call->CmdChanLock); - ast_mutex_destroy((ast_mutex_t *)call->CmdChanLock); - free(call->CmdChanLock); - call->CmdChanLock = NULL; + pthread_mutex_destroy(&gCmdChanLock); return OO_OK; } @@ -101,47 +61,12 @@ int ooWriteStackCommand(OOStackCommand *cmd) { - ast_mutex_lock(&gCmdChanLock); + pthread_mutex_lock(&gCmdChanLock); if (write(gCmdChan, (char*)cmd, sizeof(OOStackCommand)) == -1) { - ast_mutex_unlock(&gCmdChanLock); - return OO_FAILED; - } - ast_mutex_unlock(&gCmdChanLock); - - return OO_OK; -} -int ooWriteCallStackCommand(OOH323CallData* call, OOStackCommand *cmd) -{ - unsigned char buffer[MAXMSGLEN]; - unsigned char* bPoint; - - memcpy(buffer, cmd, sizeof(OOStackCommand)); - bPoint = buffer + sizeof(OOStackCommand); - if (cmd->param1 && cmd->plen1 > 0) { - if (bPoint + cmd->plen1 >= buffer + MAXMSGLEN) - return OO_FAILED; - memcpy(bPoint, cmd->param1, cmd->plen1); - bPoint += cmd->plen1; - } - if (cmd->param2 && cmd->plen2 > 0) { - if (bPoint + cmd->plen2 >= buffer + MAXMSGLEN) - return OO_FAILED; - memcpy(bPoint, cmd->param2, cmd->plen2); - bPoint += cmd->plen2; - } - if (cmd->param3 && cmd->plen3 > 0) { - if (bPoint + cmd->plen3 >= buffer + MAXMSGLEN) - return OO_FAILED; - memcpy(bPoint, cmd->param3, cmd->plen3); - bPoint += cmd->plen3; - } - - ast_mutex_lock((ast_mutex_t *)call->CmdChanLock); - if (write(call->CmdChan, buffer, bPoint - buffer) == -1) { - ast_mutex_unlock((ast_mutex_t *)call->CmdChanLock); + pthread_mutex_unlock(&gCmdChanLock); return OO_FAILED; } - ast_mutex_unlock((ast_mutex_t *)call->CmdChanLock); + pthread_mutex_unlock(&gCmdChanLock); return OO_OK; } @@ -154,9 +79,7 @@ int i, recvLen = 0; OOStackCommand cmd; memset(&cmd, 0, sizeof(OOStackCommand)); - ast_mutex_lock(&gCmdChanLock); recvLen = read(gH323ep.cmdSock, buffer, MAXMSGLEN); - ast_mutex_unlock(&gCmdChanLock); if(recvLen <= 0) { OOTRACEERR1("Error:Failed to read CMD message\n"); @@ -181,19 +104,8 @@ OOTRACEINFO2("Processing MakeCall command %s\n", (char*)cmd.param2); - ooH323NewCall ((char*)cmd.param2); - break; - - case OO_CMD_MANUALPROGRESS: - pCall = ooFindCallByToken((char*)cmd.param1); - if(!pCall) { - OOTRACEINFO2("Call \"%s\" does not exist\n", - (char*)cmd.param1); - OOTRACEINFO1("Call migth be cleared/closed\n"); - } - else { - ooSendProgress(ooFindCallByToken((char*)cmd.param1)); - } + ooH323MakeCall ((char*)cmd.param1, (char*)cmd.param2, + (ooCallOptions*)cmd.param3); break; case OO_CMD_MANUALRINGBACK: @@ -235,10 +147,10 @@ break; case OO_CMD_HANGCALL: - OOTRACEINFO2("Processing Hang call command %s with q931 cause %d\n", + OOTRACEINFO2("Processing Hang call command %s\n", (char*)cmd.param1); ooH323HangCall((char*)cmd.param1, - *(OOCallClearReason*)cmd.param2, *(int *) cmd.param3); + *(OOCallClearReason*)cmd.param2); break; case OO_CMD_SENDDIGIT: @@ -278,133 +190,4 @@ return OO_OK; } -int ooReadAndProcessCallStackCommand(OOH323CallData* call) -{ - OOH323CallData *pCall = NULL; - unsigned char buffer[MAXMSGLEN]; - unsigned char *bPoint; - int i, recvLen = 0; - OOStackCommand cmd; - memset(&cmd, 0, sizeof(OOStackCommand)); - if (call->CmdChanLock) { - ast_mutex_lock((ast_mutex_t *)call->CmdChanLock); - recvLen = read(call->cmdSock, buffer, MAXMSGLEN); - ast_mutex_unlock((ast_mutex_t *)call->CmdChanLock); - } else { - recvLen = read(call->cmdSock, buffer, MAXMSGLEN); - } - if(recvLen <= 0) - { - OOTRACEERR1("Error:Failed to read CMD message\n"); - return OO_FAILED; - } - - bPoint = buffer; - while (bPoint < buffer + recvLen - sizeof(OOStackCommand)) { - - memcpy(&cmd, bPoint, sizeof(OOStackCommand)); - bPoint += sizeof(OOStackCommand); - - if (cmd.plen1 > 0) { - cmd.param1 = malloc(cmd.plen1 + 1); - if (!cmd.param1) - return OO_FAILED; - memset(cmd.param1, 0, cmd.plen1 + 1); - memcpy(cmd.param1, bPoint, cmd.plen1); - bPoint += cmd.plen1; - } - - if (cmd.plen2 > 0) { - cmd.param2 = malloc(cmd.plen2 + 1); - if (!cmd.param2) - return OO_FAILED; - memset(cmd.param2, 0, cmd.plen2 + 1); - memcpy(cmd.param2, bPoint, cmd.plen2); - bPoint += cmd.plen2; - } - - if (cmd.plen3 > 0) { - cmd.param3 = malloc(cmd.plen3 + 1); - if (!cmd.param3) - return OO_FAILED; - memset(cmd.param3, 0, cmd.plen3 + 1); - memcpy(cmd.param3, bPoint, cmd.plen3); - bPoint += cmd.plen3; - } - - if(cmd.type == OO_CMD_NOOP) - continue; - - if(gH323ep.gkClient && gH323ep.gkClient->state != GkClientRegistered) - { - OOTRACEINFO1("Ignoring stack command as Gk Client is not registered" - " yet\n"); - } - else { - switch(cmd.type) { - case OO_CMD_MAKECALL: - OOTRACEINFO2("Processing MakeCall command %s\n", - (char*)cmd.param2); - - ooH323MakeCall ((char*)cmd.param1, (char*)cmd.param2, - (ooCallOptions*)cmd.param3); - break; - - case OO_CMD_MANUALPROGRESS: - ooSendProgress(call); - break; - - case OO_CMD_MANUALRINGBACK: - if(OO_TESTFLAG(gH323ep.flags, OO_M_MANUALRINGBACK)) - { - ooSendAlerting(call); - if(OO_TESTFLAG(gH323ep.flags, OO_M_AUTOANSWER)) { - ooSendConnect(call); - } - } - break; - - case OO_CMD_ANSCALL: - ooSendConnect(call); - break; - - case OO_CMD_FWDCALL: - OOTRACEINFO3("Forwarding call %s to %s\n", (char*)cmd.param1, - (char*)cmd.param2); - ooH323ForwardCall((char*)cmd.param1, (char*)cmd.param2); - break; - - case OO_CMD_HANGCALL: - OOTRACEINFO2("Processing Hang call command %s with q931 cause %d\n", - (char*)cmd.param1); - ooH323HangCall((char*)cmd.param1, - *(OOCallClearReason*)cmd.param2, *(int *) cmd.param3); - break; - - case OO_CMD_SENDDIGIT: - if(call->jointDtmfMode & OO_CAP_DTMF_H245_alphanumeric) { - ooSendH245UserInputIndication_alphanumeric( - call, (const char*)cmd.param2); - } - else if(call->jointDtmfMode & OO_CAP_DTMF_H245_signal) { - ooSendH245UserInputIndication_signal( - call, (const char*)cmd.param2); - } - else { - ooQ931SendDTMFAsKeyPadIE(call, (const char*)cmd.param2); - } - - break; - - default: OOTRACEERR1("ERROR:Unknown command\n"); - } - } - if(cmd.param1) free(cmd.param1); - if(cmd.param2) free(cmd.param2); - if(cmd.param3) free(cmd.param3); - } - - - return OO_OK; -} --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooTimer.c 2009-05-31 00:23:35.000000000 +0400 +++ channels/ooh323c/src/ooTimer.c 2008-02-07 23:59:47.000000000 +0300 @@ -14,9 +14,6 @@ * *****************************************************************************/ -#include -#include - #include "ooDateTime.h" #include "ooTimer.h" #include "ootrace.h" --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooLogChan.c 2009-06-10 12:51:12.000000000 +0400 +++ channels/ooh323c/src/ooLogChan.c 2008-05-28 18:45:23.000000000 +0400 @@ -14,9 +14,6 @@ * *****************************************************************************/ -#include -#include - #include "ooCalls.h" #include "ooh323ep.h" @@ -190,7 +187,7 @@ { OOTRACEDBGC3("ooFindLogicalChannel, checking channel: %d:%s\n", pChannel->sessionID, pChannel->dir); - if(pChannel->sessionID == sessionID || pChannel->sessionID == 0) + if(pChannel->sessionID == sessionID) { if(!strcmp(pChannel->dir, dir)) { --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/printHandler.c 2009-05-31 00:23:04.000000000 +0400 +++ channels/ooh323c/src/printHandler.c 2008-02-07 23:59:47.000000000 +0300 @@ -17,13 +17,10 @@ the fields of an encoded PER message to stdout in a structured output format.. */ -#include -#include - #include -/* #ifdef HAVE_MALLOC_H +#ifdef HAVE_MALLOC_H #include -#endif */ +#endif #include "printHandler.h" #include "ootypes.h" #include "rtctype.h" --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/encode.c 2009-05-31 00:18:38.000000000 +0400 +++ channels/ooh323c/src/encode.c 2008-02-07 23:59:47.000000000 +0300 @@ -14,10 +14,7 @@ * *****************************************************************************/ -#include -#include #include - #include "ooasn1.h" static int encode16BitConstrainedString --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/context.c 2009-05-31 00:15:12.000000000 +0400 +++ channels/ooh323c/src/context.c 2008-02-07 23:59:47.000000000 +0300 @@ -13,12 +13,9 @@ * maintain this copyright notice. * *****************************************************************************/ -#include -#include #include "ooasn1.h" #include -#include int initContext (OOCTXT* pctxt) { @@ -28,9 +25,6 @@ pctxt->pMsgMemHeap = pctxt->pTypeMemHeap; memHeapAddRef (&pctxt->pMsgMemHeap); - - ast_mutex_init(&pctxt->pLock); - return ASN_OK; } @@ -61,8 +55,6 @@ int initSubContext (OOCTXT* pctxt, OOCTXT* psrc) { - /* ast_mutex_lock(&pctxt->pLock); */ - ast_mutex_lock(&psrc->pLock); int stat = ASN_OK; memset (pctxt, 0, sizeof(OOCTXT)); pctxt->pTypeMemHeap = psrc->pTypeMemHeap; @@ -73,15 +65,11 @@ pctxt->buffer.dynamic = TRUE; pctxt->buffer.byteIndex = 0; pctxt->buffer.bitOffset = 8; - - ast_mutex_unlock(&psrc->pLock); - /* ast_mutex_unlock(&pctxt->pLock); */ return stat; } void freeContext (OOCTXT* pctxt) { - ast_mutex_lock(&pctxt->pLock); ASN1BOOL saveBuf = (pctxt->flags & ASN1SAVEBUF) != 0; if (pctxt->buffer.dynamic && pctxt->buffer.data) { @@ -97,36 +85,26 @@ memHeapRelease (&pctxt->pTypeMemHeap); memHeapRelease (&pctxt->pMsgMemHeap); - - ast_mutex_unlock(&pctxt->pLock); - ast_mutex_destroy(&pctxt->pLock); } void copyContext (OOCTXT* pdest, OOCTXT* psrc) { - /* ast_mutex_lock(&pdest->pLock); ast_mutex_lock(&psrc->pLock); */ memcpy (&pdest->buffer, &psrc->buffer, sizeof(ASN1BUFFER)); pdest->flags = psrc->flags; - /* ast_mutex_unlock(&psrc->pLock); ast_mutex_unlock(&pdest->pLock); */ } void setCtxtFlag (OOCTXT* pctxt, ASN1USINT mask) { - ast_mutex_lock(&pctxt->pLock); pctxt->flags |= mask; - ast_mutex_unlock(&pctxt->pLock); } void clearCtxtFlag (OOCTXT* pctxt, ASN1USINT mask) { - ast_mutex_lock(&pctxt->pLock); pctxt->flags &= ~mask; - ast_mutex_unlock(&pctxt->pLock); } int setPERBufferUsingCtxt (OOCTXT* pTarget, OOCTXT* pSource) { - ast_mutex_lock(&pTarget->pLock); ast_mutex_lock(&pSource->pLock); int stat = initContextBuffer (pTarget, pSource->buffer.data, pSource->buffer.size); @@ -135,16 +113,13 @@ pTarget->buffer.bitOffset = pSource->buffer.bitOffset; } - ast_mutex_unlock(&pSource->pLock); ast_mutex_unlock(&pTarget->pLock); return stat; } int setPERBuffer (OOCTXT* pctxt, ASN1OCTET* bufaddr, ASN1UINT bufsiz, ASN1BOOL aligned) { - ast_mutex_lock(&pctxt->pLock); int stat = initContextBuffer (pctxt, bufaddr, bufsiz); - ast_mutex_unlock(&pctxt->pLock); if(stat != ASN_OK) return stat; @@ -153,12 +128,10 @@ OOCTXT* newContext () { - /* OOCTXT* pctxt = (OOCTXT*) ASN1CRTMALLOC0 (sizeof(OOCTXT)); */ - OOCTXT* pctxt = (OOCTXT*) malloc (sizeof(OOCTXT)); + OOCTXT* pctxt = (OOCTXT*) ASN1CRTMALLOC0 (sizeof(OOCTXT)); if (pctxt) { if (initContext(pctxt) != ASN_OK) { - /* ASN1CRTFREE0 (pctxt); */ - free(pctxt); + ASN1CRTFREE0 (pctxt); pctxt = 0; } pctxt->flags |= ASN1DYNCTXT; --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/perutil.c 2009-05-31 00:22:03.000000000 +0400 +++ channels/ooh323c/src/perutil.c 2008-02-07 23:59:47.000000000 +0300 @@ -14,9 +14,6 @@ * *****************************************************************************/ -#include -#include - #include "ooasn1.h" #include "ooper.h" --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ootrace.h 2009-05-30 06:40:48.000000000 +0400 +++ channels/ooh323c/src/ootrace.h 2008-06-04 21:35:29.000000000 +0400 @@ -52,11 +52,10 @@ #define TRACELVL 1 #endif -#define OOTRACEERR1(a) ooTrace(OOTRCLVLERR,a) +#define OOTRACEERR1(a) ooTrace(OOTRCLVLERR,"%s", a) #define OOTRACEERR2(a,b) ooTrace(OOTRCLVLERR,a,b) #define OOTRACEERR3(a,b,c) ooTrace(OOTRCLVLERR,a,b,c) #define OOTRACEERR4(a,b,c,d) ooTrace(OOTRCLVLERR,a,b,c,d) -#define OOTRACEERR5(a,b,c,d,e) ooTrace(OOTRCLVLERR,a,b,c,d,e) #define OOTRACEWARN1(a) ooTrace(OOTRCLVLWARN,a) #define OOTRACEWARN2(a,b) ooTrace(OOTRCLVLWARN,a,b) #define OOTRACEWARN3(a,b,c) ooTrace(OOTRCLVLWARN,a,b,c) @@ -73,7 +72,7 @@ #define OOTRACEDBGA3(a,b,c) ooTrace(OOTRCLVLDBGA,a,b,c) #define OOTRACEDBGA4(a,b,c,d) ooTrace(OOTRCLVLDBGA,a,b,c,d) #define OOTRACEDBGA5(a,b,c,d,e) ooTrace(OOTRCLVLDBGA,a,b,c,d,e) -#define OOTRACEDBGB1(a) ooTrace(OOTRCLVLDBGB,a) +#define OOTRACEDBGB1(a) ooTrace(OOTRCLVLDBGB,"%s",a) #define OOTRACEDBGB2(a,b) ooTrace(OOTRCLVLDBGB,a,b) #define OOTRACEDBGB3(a,b,c) ooTrace(OOTRCLVLDBGB,a,b,c) #define OOTRACEDBGB4(a,b,c,d) ooTrace(OOTRCLVLDBGB,a,b,c,d) @@ -130,7 +129,7 @@ * * @return - none */ -EXTERN void ooTrace(OOUINT32 traceLevel, const char * fmtspec, ...); +EXTERN void ooTrace(OOUINT32 traceLevel, const char * fmtspec, ...)__attribute__((format(printf, 2, 3))); /** * Helper function for the trace function. This function performs actual --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooh245.c 2009-06-17 22:11:14.000000000 +0400 +++ channels/ooh323c/src/ooh245.c 2008-02-07 23:59:47.000000000 +0300 @@ -13,8 +13,7 @@ * maintain this copyright notice. * *****************************************************************************/ -#include -#include + #include "ooh245.h" #include "ooCalls.h" #include "printHandler.h" @@ -35,10 +34,9 @@ 6, { 0, 0, 8, 245, 0, 8 } }; -int ooCreateH245Message(OOH323CallData* call, H245Message **pph245msg, int type) +int ooCreateH245Message(H245Message **pph245msg, int type) { - /* OOCTXT* pctxt = &gH323ep.msgctxt; */ - OOCTXT* pctxt = call->msgctxt; + OOCTXT* pctxt = &gH323ep.msgctxt; *pph245msg = (H245Message*) memAlloc (pctxt, sizeof(H245Message)); @@ -123,8 +121,7 @@ OOTRACEDBGC1("msgCtxt Reset?"); if (0 != pmsg) { if(!OO_TESTFLAG (call->flags, OO_M_TUNNELING)){ - /* memReset (&gH323ep.msgctxt); */ - memReset (call->msgctxt); + memReset (&gH323ep.msgctxt); OOTRACEDBGC3(" Done (%s, %s)\n", call->callType, call->callToken); return OO_OK; } @@ -169,8 +166,7 @@ int stat=0; ASN1OCTET* encodePtr=NULL; H245MultimediaSystemControlMessage *multimediaMsg; - /* OOCTXT *pctxt = &gH323ep.msgctxt; */ - OOCTXT *pctxt = call->msgctxt; + OOCTXT *pctxt = &gH323ep.msgctxt; multimediaMsg = &(ph245Msg->h245Msg); if(!msgbuf || size<200) @@ -202,15 +198,13 @@ setPERBuffer (pctxt, msgbuf+i, (size-i), TRUE); - /* stat = asn1PE_H245MultimediaSystemControlMessage (&gH323ep.msgctxt, */ - stat = asn1PE_H245MultimediaSystemControlMessage (call->msgctxt, + stat = asn1PE_H245MultimediaSystemControlMessage (&gH323ep.msgctxt, multimediaMsg); if (stat != ASN_OK) { OOTRACEERR3 ("ERROR: H245 Message encoding failed (%s, %s)\n", call->callType, call->callToken); - /* OOTRACEERR1 (errGetText (&gH323ep.msgctxt)); */ - OOTRACEERR1 (errGetText (call->msgctxt)); + OOTRACEERR1 (errGetText (&gH323ep.msgctxt)); return OO_FAILED; } @@ -339,7 +333,7 @@ return OO_OK; } - ret = ooCreateH245Message(call, &ph245msg, + ret = ooCreateH245Message(&ph245msg, T_H245MultimediaSystemControlMessage_request); if(ret == OO_FAILED) @@ -351,8 +345,7 @@ /* Set request type as TerminalCapabilitySet */ request = ph245msg->h245Msg.u.request; - /* pctxt = &gH323ep.msgctxt; */ - pctxt = call->msgctxt; + pctxt = &gH323ep.msgctxt; ph245msg->msgType = OOTerminalCapabilitySet; memset(request, 0, sizeof(H245RequestMessage)); if(request == NULL) @@ -702,7 +695,7 @@ { H245MasterSlaveDetermination *masterSlave; H245MasterSlaveDeterminationAck *masterSlaveAck; - ASN1UINT statusDeterminationNumber, moduloDiff; + ASN1UINT statusDeterminationNumber; switch(msgType) { @@ -711,16 +704,7 @@ call->callType, call->callToken); masterSlave = (H245MasterSlaveDetermination*)pmsg; - - if(call->masterSlaveState != OO_MasterSlave_DetermineSent && - OO_TESTFLAG(gH323ep.flags, OO_M_TRYBEMASTER)) - { - ooSendMasterSlaveDeterminationAck(call, "slave"); - call->masterSlaveState = OO_MasterSlave_Master; - OOTRACEINFO3("MasterSlaveDetermination done - Master(%s, %s)\n", - call->callType, call->callToken); - return OO_OK; - } + if(masterSlave->terminalType < gH323ep.termType) { ooSendMasterSlaveDeterminationAck(call, "slave"); @@ -746,17 +730,10 @@ if(call->masterSlaveState == OO_MasterSlave_DetermineSent) statusDeterminationNumber = call->statusDeterminationNumber; else - if (OO_TESTFLAG(gH323ep.flags, OO_M_TRYBEMASTER)) - statusDeterminationNumber = masterSlave->statusDeterminationNumber - 1; - else - statusDeterminationNumber = ooGenerateStatusDeterminationNumber(); - - moduloDiff = (masterSlave->statusDeterminationNumber - statusDeterminationNumber) - &0xffffff; + statusDeterminationNumber = ooGenerateStatusDeterminationNumber(); - /* if(masterSlave->statusDeterminationNumber > - statusDeterminationNumber) */ - if (moduloDiff < 0x800000 && moduloDiff != 0) + if(masterSlave->statusDeterminationNumber < + statusDeterminationNumber) { ooSendMasterSlaveDeterminationAck(call, "slave"); call->masterSlaveState = OO_MasterSlave_Master; @@ -764,9 +741,8 @@ call->callType, call->callToken); return OO_OK; } - /* if(masterSlave->statusDeterminationNumber < - statusDeterminationNumber) */ - if (moduloDiff > 0x800000) + if(masterSlave->statusDeterminationNumber > + statusDeterminationNumber) { ooSendMasterSlaveDeterminationAck(call, "master"); call->masterSlaveState = OO_MasterSlave_Slave; @@ -774,9 +750,8 @@ call->callType, call->callToken); return OO_OK; } - /* if(masterSlave->statusDeterminationNumber == - statusDeterminationNumber) */ - if (moduloDiff == 0 || moduloDiff == 0x800000) + if(masterSlave->statusDeterminationNumber == + statusDeterminationNumber) { ooSendMasterSlaveDeterminationReject (call); @@ -841,8 +816,7 @@ int ret; H245Message* ph245msg=NULL; H245RequestMessage *request; - /* OOCTXT *pctxt=&gH323ep.msgctxt; */ - OOCTXT *pctxt=call->msgctxt; + OOCTXT *pctxt=&gH323ep.msgctxt; H245MasterSlaveDetermination* pMasterSlave; /* Check whether Master Slave Determination already in progress */ @@ -853,7 +827,7 @@ return OO_OK; } - ret = ooCreateH245Message(call, &ph245msg, + ret = ooCreateH245Message(&ph245msg, T_H245MultimediaSystemControlMessage_request); if(ret != OO_OK) { @@ -899,10 +873,9 @@ int ret=0; H245ResponseMessage * response=NULL; H245Message *ph245msg=NULL; - /* OOCTXT *pctxt=&gH323ep.msgctxt; */ - OOCTXT *pctxt=call->msgctxt; + OOCTXT *pctxt=&gH323ep.msgctxt; - ret = ooCreateH245Message(call, &ph245msg, + ret = ooCreateH245Message(&ph245msg, T_H245MultimediaSystemControlMessage_response); if(ret != OO_OK) { @@ -945,11 +918,10 @@ int ret=0; H245ResponseMessage* response=NULL; H245Message *ph245msg=NULL; - /* OOCTXT *pctxt=&gH323ep.msgctxt; */ - OOCTXT *pctxt=call->msgctxt; + OOCTXT *pctxt=&gH323ep.msgctxt; ret = ooCreateH245Message - (call, &ph245msg, T_H245MultimediaSystemControlMessage_response); + (&ph245msg, T_H245MultimediaSystemControlMessage_response); if (ret != OO_OK) { OOTRACEERR3("Error:H245 message creation failed for - MasterSlave " @@ -991,11 +963,10 @@ int ret=0; H245IndicationMessage* indication=NULL; H245Message *ph245msg=NULL; - /* OOCTXT *pctxt=&gH323ep.msgctxt; */ - OOCTXT *pctxt=call->msgctxt; + OOCTXT *pctxt=&gH323ep.msgctxt; ret = ooCreateH245Message - (call, &ph245msg, T_H245MultimediaSystemControlMessage_indication); + (&ph245msg, T_H245MultimediaSystemControlMessage_indication); if (ret != OO_OK) { OOTRACEERR3("Error:H245 message creation failed for - MasterSlave " @@ -1197,7 +1168,7 @@ return OO_FAILED; } /* Generate an Ack for the open channel request */ - ret = ooCreateH245Message(call, &ph245msg, + ret = ooCreateH245Message(&ph245msg, T_H245MultimediaSystemControlMessage_response); if(ret != OO_OK) { @@ -1212,8 +1183,7 @@ ph245msg->msgType = OOOpenLogicalChannelAck; ph245msg->logicalChannelNo = olc->forwardLogicalChannelNumber; response = ph245msg->h245Msg.u.response; - /* pctxt = &gH323ep.msgctxt; */ - pctxt = call->msgctxt; + pctxt = &gH323ep.msgctxt; memset(response, 0, sizeof(H245ResponseMessage)); response->t = T_H245ResponseMessage_openLogicalChannelAck; response->u.openLogicalChannelAck = (H245OpenLogicalChannelAck*) @@ -1322,11 +1292,10 @@ int ret=0; H245ResponseMessage* response=NULL; H245Message *ph245msg=NULL; - /* OOCTXT *pctxt=&gH323ep.msgctxt; */ - OOCTXT *pctxt=call->msgctxt; + OOCTXT *pctxt=&gH323ep.msgctxt; ret = ooCreateH245Message - (call, &ph245msg, T_H245MultimediaSystemControlMessage_response); + (&ph245msg, T_H245MultimediaSystemControlMessage_response); if (ret != OO_OK) { OOTRACEERR3("Error:H245 message creation failed for - OpenLogicalChannel" @@ -1598,7 +1567,7 @@ H245CommandMessage * command; OOCTXT *pctxt; H245Message *ph245msg=NULL; - ret = ooCreateH245Message(call, &ph245msg, + ret = ooCreateH245Message(&ph245msg, T_H245MultimediaSystemControlMessage_command); if(ret != OO_OK) { @@ -1609,8 +1578,7 @@ ph245msg->msgType = OOEndSessionCommand; command = ph245msg->h245Msg.u.command; - /* pctxt = &gH323ep.msgctxt; */ - pctxt = call->msgctxt; + pctxt = &gH323ep.msgctxt; memset(command, 0, sizeof(H245CommandMessage)); command->t = T_H245CommandMessage_endSessionCommand; command->u.endSessionCommand = (H245EndSessionCommand*) ASN1MALLOC(pctxt, @@ -1760,7 +1728,7 @@ H245RequestMessage *request; H245CloseLogicalChannel* clc; - ret = ooCreateH245Message(call, &ph245msg, + ret = ooCreateH245Message(&ph245msg, T_H245MultimediaSystemControlMessage_request); if(ret != OO_OK) { @@ -1770,8 +1738,7 @@ } ph245msg->msgType = OOCloseLogicalChannel; ph245msg->logicalChannelNo = logicalChan->channelNo; - /* pctxt = &gH323ep.msgctxt; */ - pctxt = call->msgctxt; + pctxt = &gH323ep.msgctxt; request = ph245msg->h245Msg.u.request; request->t = T_H245RequestMessage_closeLogicalChannel; @@ -1828,7 +1795,7 @@ H245RequestMessage *request; H245RequestChannelClose *rclc; - ret = ooCreateH245Message(call, &ph245msg, + ret = ooCreateH245Message(&ph245msg, T_H245MultimediaSystemControlMessage_request); if(ret != OO_OK) { @@ -1839,8 +1806,7 @@ } ph245msg->msgType = OORequestChannelClose; ph245msg->logicalChannelNo = logicalChan->channelNo; - /* pctxt = &gH323ep.msgctxt; */ - pctxt = call->msgctxt; + pctxt = &gH323ep.msgctxt; request = ph245msg->h245Msg.u.request; request->t = T_H245RequestMessage_requestChannelClose; @@ -1882,7 +1848,7 @@ OOCTXT *pctxt; H245IndicationMessage *indication; - ret = ooCreateH245Message(call, &ph245msg, + ret = ooCreateH245Message(&ph245msg, T_H245MultimediaSystemControlMessage_indication); if(ret != OO_OK) { @@ -1893,8 +1859,7 @@ } ph245msg->msgType = OORequestChannelCloseRelease; ph245msg->logicalChannelNo = channelNum; - /* pctxt = &gH323ep.msgctxt; */ - pctxt = call->msgctxt; + pctxt = &gH323ep.msgctxt; indication = ph245msg->h245Msg.u.indication; indication->t = T_H245IndicationMessage_requestChannelCloseRelease; indication->u.requestChannelCloseRelease = (H245RequestChannelCloseRelease*) @@ -1954,7 +1919,7 @@ return OO_FAILED; } } - ret = ooCreateH245Message(call, &ph245msg, + ret = ooCreateH245Message(&ph245msg, T_H245MultimediaSystemControlMessage_response); if(ret != OO_OK) { @@ -1962,8 +1927,7 @@ "failed (%s, %s)\n", call->callType, call->callToken); return OO_FAILED; } - /* pctxt = &gH323ep.msgctxt; */ - pctxt = call->msgctxt; + pctxt = &gH323ep.msgctxt; ph245msg->msgType = OORequestChannelCloseAck; ph245msg->logicalChannelNo = rclc->forwardLogicalChannelNumber; response = ph245msg->h245Msg.u.response; @@ -2091,7 +2055,7 @@ return OO_FAILED; } - ret = ooCreateH245Message(call, &ph245msg, + ret = ooCreateH245Message(&ph245msg, T_H245MultimediaSystemControlMessage_response); if(ret != OO_OK) { @@ -2100,8 +2064,7 @@ call->callToken); return OO_FAILED; } - /* pctxt = &gH323ep.msgctxt; */ - pctxt = call->msgctxt; + pctxt = &gH323ep.msgctxt; ph245msg->msgType = OOCloseLogicalChannelAck; ph245msg->logicalChannelNo = clc->forwardLogicalChannelNumber; response = ph245msg->h245Msg.u.response; @@ -2564,7 +2527,7 @@ H245Message *ph245msg=NULL; H245ResponseMessage * response=NULL; OOCTXT *pctxt=NULL; - int ret = ooCreateH245Message(call, &ph245msg, + int ret = ooCreateH245Message(&ph245msg, T_H245MultimediaSystemControlMessage_response); if(ret != OO_OK) { @@ -2575,8 +2538,7 @@ ph245msg->msgType = OOTerminalCapabilitySetReject; response = ph245msg->h245Msg.u.response; memset(response, 0, sizeof(H245ResponseMessage)); - /* pctxt = &gH323ep.msgctxt; */ - pctxt = call->msgctxt; + pctxt = &gH323ep.msgctxt; response->t = T_H245ResponseMessage_terminalCapabilitySetReject; response->u.terminalCapabilitySetReject = (H245TerminalCapabilitySetReject*) @@ -2608,7 +2570,7 @@ H245Message *ph245msg=NULL; H245ResponseMessage * response=NULL; OOCTXT *pctxt=NULL; - int ret = ooCreateH245Message(call, &ph245msg, + int ret = ooCreateH245Message(&ph245msg, T_H245MultimediaSystemControlMessage_response); if(ret != OO_OK) { @@ -2619,8 +2581,7 @@ ph245msg->msgType = OOTerminalCapabilitySetAck; response = ph245msg->h245Msg.u.response; memset(response, 0, sizeof(H245ResponseMessage)); - /* pctxt = &gH323ep.msgctxt; */ - pctxt = call->msgctxt; + pctxt = &gH323ep.msgctxt; response->t = T_H245ResponseMessage_terminalCapabilitySetAck; response->u.terminalCapabilitySetAck = (H245TerminalCapabilitySetAck*) @@ -2651,11 +2612,10 @@ int ret=0; H245IndicationMessage* indication=NULL; H245Message *ph245msg=NULL; - /* OOCTXT *pctxt=&gH323ep.msgctxt; */ - OOCTXT *pctxt=call->msgctxt; + OOCTXT *pctxt=&gH323ep.msgctxt; ret = ooCreateH245Message - (call, &ph245msg, T_H245MultimediaSystemControlMessage_indication); + (&ph245msg, T_H245MultimediaSystemControlMessage_indication); if (ret != OO_OK) { OOTRACEERR3("Error:H245 message creation failed for - Terminal" @@ -2702,11 +2662,10 @@ int ret=0; H245IndicationMessage* indication=NULL; H245Message *ph245msg=NULL; - /* OOCTXT *pctxt=&gH323ep.msgctxt; */ - OOCTXT *pctxt=call->msgctxt; + OOCTXT *pctxt=&gH323ep.msgctxt; ret = ooCreateH245Message - (call, &ph245msg, T_H245MultimediaSystemControlMessage_indication); + (&ph245msg, T_H245MultimediaSystemControlMessage_indication); if (ret != OO_OK) { OOTRACEERR3("Error:H245 message creation failed for - H245UserInput" @@ -2762,11 +2721,10 @@ int ret=0; H245IndicationMessage* indication=NULL; H245Message *ph245msg=NULL; - /* OOCTXT *pctxt=&gH323ep.msgctxt; */ - OOCTXT *pctxt=call->msgctxt; + OOCTXT *pctxt=&gH323ep.msgctxt; ret = ooCreateH245Message - (call, &ph245msg, T_H245MultimediaSystemControlMessage_indication); + (&ph245msg, T_H245MultimediaSystemControlMessage_indication); if (ret != OO_OK) { OOTRACEERR3("Error:H245 message creation failed for - H245UserInput" @@ -2902,7 +2860,6 @@ */ OOTRACEINFO3("Looking for matching capabilities. (%s, %s)\n", call->callType, call->callToken); -/* May */ if(call->masterSlaveState == OO_MasterSlave_Master) { for(k=0; kcapPrefs.index; k++) @@ -2967,19 +2924,17 @@ case OO_G711ALAW56K: case OO_G711ULAW64K: case OO_G711ULAW56K: - case OO_G726: - case OO_AMRNB: + /*case OO_G726:*/ case OO_G728: case OO_G729: case OO_G729A: - case OO_G729B: case OO_G7231: case OO_GSMFULLRATE: - case OO_GSMHALFRATE: - case OO_GSMENHANCEDFULLRATE: case OO_H263VIDEO: ooOpenChannel(call, epCap); break; + case OO_GSMHALFRATE: + case OO_GSMENHANCEDFULLRATE: default: @@ -3008,7 +2963,7 @@ ooGetCapTypeText(epCap->cap), call->callType, call->callToken); - ret = ooCreateH245Message(call, &ph245msg, + ret = ooCreateH245Message(&ph245msg, T_H245MultimediaSystemControlMessage_request); if(ret != OO_OK) { @@ -3025,8 +2980,7 @@ call->logicalChanNoCur = call->logicalChanNoBase; request = ph245msg->h245Msg.u.request; - /* pctxt = &gH323ep.msgctxt; */ - pctxt = call->msgctxt; + pctxt = &gH323ep.msgctxt; memset(request, 0, sizeof(H245RequestMessage)); request->t = T_H245RequestMessage_openLogicalChannel; --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ootrace.c 2009-05-31 00:19:24.000000000 +0400 +++ channels/ooh323c/src/ootrace.c 2008-06-04 21:35:29.000000000 +0400 @@ -14,8 +14,6 @@ * *****************************************************************************/ -#include -#include #include #include #include @@ -72,7 +70,7 @@ #else struct tm *ptime; - char dateString[10]; + char dateString[15]; time_t t = time(NULL); ptime = localtime(&t); strftime(timeString, 100, "%H:%M:%S", ptime); @@ -102,7 +100,7 @@ if(printDate) { printDate = 0; - strftime(dateString, 10, "%D", ptime); + strftime(dateString, 15, "%m/%d/%Y", ptime); fprintf(gH323ep.fptraceFile, "---------Date %s---------\n", dateString); } --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/eventHandler.c 2009-05-31 00:22:13.000000000 +0400 +++ channels/ooh323c/src/eventHandler.c 2008-02-07 23:59:47.000000000 +0300 @@ -14,9 +14,6 @@ * *****************************************************************************/ -#include -#include - #include "eventHandler.h" void setEventHandler (OOCTXT* pctxt, EventHandler* pHandler) --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooh323ep.h 2009-06-17 22:11:14.000000000 +0400 +++ channels/ooh323c/src/ooh323ep.h 2008-06-04 21:35:29.000000000 +0400 @@ -26,12 +26,12 @@ #include "ooq931.h" #define DEFAULT_TRACEFILE "trace.log" -#define DEFAULT_TERMTYPE 60 -#define DEFAULT_PRODUCTID "ooh323" +#define DEFAULT_TERMTYPE 50 +#define DEFAULT_PRODUCTID "objsys" #define DEFAULT_CALLERID "objsyscall" -#define DEFAULT_T35COUNTRYCODE 184 +#define DEFAULT_T35COUNTRYCODE 1 #define DEFAULT_T35EXTENSION 0 -#define DEFAULT_MANUFACTURERCODE 39 +#define DEFAULT_MANUFACTURERCODE 71 #define DEFAULT_H245CONNECTION_RETRYTIMEOUT 2 #define DEFAULT_CALLESTB_TIMEOUT 60 #define DEFAULT_MSD_TIMEOUT 30 @@ -58,8 +58,8 @@ * @{ */ /* Default port ranges */ -#define TCPPORTSSTART 12000 /*!< Starting TCP port number */ -#define TCPPORTSEND 62230 /*!< Ending TCP port number */ +#define TCPPORTSSTART 12030 /*!< Starting TCP port number */ +#define TCPPORTSEND 12230 /*!< Ending TCP port number */ #define UDPPORTSSTART 13030 /*!< Starting UDP port number */ #define UDPPORTSEND 13230 /*!< Ending UDP port number */ #define RTPPORTSSTART 14030 /*!< Starting RTP port number */ @@ -172,9 +172,6 @@ */ EXTERN int ooH323EpSetAsGateway(); -EXTERN int ooH323EpSetVersionInfo(int t35countrycode, int t35extensions, int manufacturer, - char* vendor, char* version); - /** * This function is used to assign a local ip address to be used for call * signalling. @@ -381,13 +378,6 @@ EXTERN int ooH323EpDisableH245Tunneling(void); /** - * This function is used to setup/clear TryBeMaster flag - * - * @return OO_OK, on success. OO_FAILED, on failure. - */ -EXTERN int ooH323EpTryBeMaster(int); - -/** * This function is used to enable GkRouted calls. * * @return OO_OK, on success. OO_FAILED, on failure. --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooGkClient.c 2009-05-31 00:15:00.000000000 +0400 +++ channels/ooh323c/src/ooGkClient.c 2008-05-28 18:45:23.000000000 +0400 @@ -20,9 +20,6 @@ * This file contains functions to support RAS protocol. * */ -#include -#include - #include "ooGkClient.h" #include "ootypes.h" #include "ootrace.h" --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/memheap.h 2009-05-30 06:40:48.000000000 +0400 +++ channels/ooh323c/src/memheap.h 2008-02-07 23:59:47.000000000 +0300 @@ -50,7 +50,6 @@ ASN1UINT defBlkSize; ASN1UINT refCnt; ASN1UINT flags; - ast_mutex_t pLock; } OSMemHeap; /* see rtMemDefs.c file */ --- ../../asterisk-addons-1.6.1.0/channels/ooh323c/src/ooCapability.c 2009-06-15 00:26:49.000000000 +0400 +++ channels/ooh323c/src/ooCapability.c 2008-06-04 21:35:29.000000000 +0400 @@ -13,9 +13,6 @@ * maintain this copyright notice. * *****************************************************************************/ -#include -#include - #include "ooCapability.h" #include "ootrace.h" #include "ooCalls.h" @@ -612,17 +609,12 @@ case OO_G711ALAW56K: case OO_G711ULAW64K: case OO_G711ULAW56K: + /*case OO_G726:*/ case OO_G728: case OO_G729: case OO_G729A: - case OO_G729B: case OO_G7231: return ooCapabilityCreateSimpleCapability(epCap, pctxt, dir); - case OO_G726: - case OO_AMRNB: - return ooCapabilityCreateNonStandardCapability(epCap, pctxt, dir); - case OO_GSMHALFRATE: - case OO_GSMENHANCEDFULLRATE: case OO_GSMFULLRATE: return ooCapabilityCreateGSMFullRateCapability(epCap, pctxt, dir); default: @@ -782,16 +774,8 @@ "pAudio/pGSMCap\n"); return NULL; } - switch (epCap->cap) { - case OO_GSMHALFRATE: - pAudio->t = T_H245AudioCapability_gsmHalfRate; - break; - case OO_GSMENHANCEDFULLRATE: - pAudio->t = T_H245AudioCapability_gsmEnhancedFullRate; - break; - default: - pAudio->t = T_H245AudioCapability_gsmFullRate; - } + + pAudio->t = T_H245AudioCapability_gsmFullRate; pAudio->u.gsmFullRate = pGSMCap; if(dir & OORX) pGSMCap->audioUnitSize = ((OOGSMCapParams*)epCap->params)->rxframes*OO_GSMFRAMESIZE; @@ -856,6 +840,13 @@ else pAudio->u.g711Ulaw64k = params->txframes; return pAudio; + /*case OO_G726: + pAudio->t = T_H245AudioCapability_g726; + if(dir & OORX) + pAudio->u.g726 = params->rxframes; + else + pAudio->u.g726 = params->txframes; + return pAudio;*/ case OO_G728: pAudio->t = T_H245AudioCapability_g728; if(dir & OORX) @@ -877,13 +868,6 @@ else pAudio->u.g729AnnexA = params->txframes; return pAudio; - case OO_G729B: - pAudio->t = T_H245AudioCapability_g729wAnnexB; - if(dir & OORX) - pAudio->u.g729AnnexA = params->rxframes; - else - pAudio->u.g729AnnexA = params->txframes; - return pAudio; case OO_G7231: pAudio->t = T_H245AudioCapability_g7231; pAudio->u.g7231 = (H245AudioCapability_g7231*)memAlloc(pctxt, @@ -907,76 +891,6 @@ } return NULL; } -/* This is used for g726, AMRNB */ -struct H245AudioCapability* ooCapabilityCreateNonStandardCapability - (ooH323EpCapability *epCap, OOCTXT* pctxt, int dir) -{ - H245AudioCapability *pAudio=NULL; - OOCapParams *params; - if(!epCap || !epCap->params) - { - OOTRACEERR1("Error:Invalid capability parameters to " - "ooCapabilityCreateSimpleCapability.\n"); - return NULL; - } - params =(OOCapParams*)epCap->params; - pAudio = (H245AudioCapability*)memAlloc(pctxt, - sizeof(H245AudioCapability)); - if(!pAudio) - { - OOTRACEERR1("ERROR:Memory - ooCapabilityCreateSimpleCapability - pAudio\n"); - return NULL; - } - - - switch(epCap->cap) - { - case OO_AMRNB: - case OO_G726: - pAudio->t = T_H245AudioCapability_nonStandard; - pAudio->u.nonStandard = (H245NonStandardParameter*)memAlloc(pctxt, - sizeof(H245NonStandardParameter)); - if(!pAudio->u.nonStandard) - { - OOTRACEERR1("Error:Memory - ooCapabilityCreateSimpleCapability - g726\n"); - memFreePtr(pctxt, pAudio); - return NULL; - } - - pAudio->u.nonStandard->nonStandardIdentifier.t=T_H245NonStandardIdentifier_h221NonStandard; - pAudio->u.nonStandard->nonStandardIdentifier.u.h221NonStandard = - (H245NonStandardIdentifier_h221NonStandard *) memAlloc(pctxt, - sizeof(H245NonStandardIdentifier_h221NonStandard)); - if (!pAudio->u.nonStandard->nonStandardIdentifier.u.h221NonStandard) { - OOTRACEERR2("Error:Memory - ooCapabilityCreateSimpleCapability - %d\n", epCap->cap); - memFreePtr(pctxt, pAudio); - return NULL; - } - - pAudio->u.nonStandard->nonStandardIdentifier.u.h221NonStandard->t35CountryCode = - gH323ep.t35CountryCode; - pAudio->u.nonStandard->nonStandardIdentifier.u.h221NonStandard->t35Extension = - gH323ep.t35Extension; - pAudio->u.nonStandard->nonStandardIdentifier.u.h221NonStandard->manufacturerCode = - gH323ep.manufacturerCode; - - switch (epCap->cap) { - case OO_G726: - pAudio->u.nonStandard->data.data = "G.726-32k"; - pAudio->u.nonStandard->data.numocts = sizeof("G.726-32k")-1; - break; - case OO_AMRNB: - pAudio->u.nonStandard->data.data = "AMRNB"; - pAudio->u.nonStandard->data.numocts = sizeof("AMRNB")-1; - } - return pAudio; - - default: - OOTRACEERR2("ERROR: Don't know how to create audio capability %d\n", - epCap->cap); - } - return NULL; -} /* Used for g711 ulaw/alaw, g728, g729, g729a, g7231 */ ASN1BOOL ooCapabilityCheckCompatibility_Simple @@ -1021,15 +935,10 @@ cap = OO_G729A; noofframes = audioCap->u.g729AnnexA; break; - case T_H245AudioCapability_g729wAnnexB: - cap = OO_G729B; - noofframes = audioCap->u.g729wAnnexB; - break; case T_H245AudioCapability_g7231: cap = OO_G7231; noofframes = audioCap->u.g7231->maxAl_sduAudioFrames; break; - default: return FALSE; } @@ -1069,47 +978,6 @@ return FALSE; } -/* Used for g726, AMRNB */ -ASN1BOOL ooCapabilityCheckCompatibility_NonStandard - (OOH323CallData *call, ooH323EpCapability* epCap, - H245AudioCapability* audioCap, int dir) -{ - int noofframes=0, cap; - - OOTRACEDBGC2("Comparing channel with codec type: %d\n", audioCap->t); - - if (audioCap->t == T_H245AudioCapability_nonStandard && - audioCap->u.nonStandard && - audioCap->u.nonStandard->nonStandardIdentifier.t == - T_H245NonStandardIdentifier_h221NonStandard) { - switch (audioCap->u.nonStandard->data.numocts) { - case sizeof("G.726-32k")-1: - if (!strncmp(audioCap->u.nonStandard->data.data, "G.726-32k", - audioCap->u.nonStandard->data.numocts)) - cap = OO_G726; - else - return FALSE; - break; - case sizeof("AMRNB")-1: - if (!strncmp(audioCap->u.nonStandard->data.data, "AMRNB", - audioCap->u.nonStandard->data.numocts)) - cap = OO_AMRNB; - else - return FALSE; - break; - default: - return FALSE; - } - } else - return FALSE; - - OOTRACEDBGC3("Comparing codecs: current=%d, requested=%d\n", - epCap->cap, cap); - if(cap != epCap->cap) { return FALSE; } - - return TRUE; - -} OOBOOL ooCapabilityCheckCompatibility_GSM @@ -1135,8 +1003,6 @@ return FALSE; } - if(cap != epCap->cap) { return FALSE; } - /* can we receive this capability */ if(dir & OORX) { @@ -1336,13 +1202,8 @@ case T_H245AudioCapability_g728: case T_H245AudioCapability_g729: case T_H245AudioCapability_g729AnnexA: - case T_H245AudioCapability_g729wAnnexB: case T_H245AudioCapability_g7231: return ooCapabilityCheckCompatibility_Simple(call, epCap, audioCap, dir); - case T_H245AudioCapability_nonStandard: - return ooCapabilityCheckCompatibility_NonStandard(call, epCap, audioCap, dir); - case T_H245AudioCapability_gsmHalfRate: - case T_H245AudioCapability_gsmEnhancedFullRate: case T_H245AudioCapability_gsmFullRate: return ooCapabilityCheckCompatibility_GSM(call, epCap, audioCap, dir); default: @@ -1363,7 +1224,7 @@ videoCap, dir); default: OOTRACEDBGC3("ooCapabilityCheckCompatibility_Video - Unsupported video " - "capability. (%s, $s)\n", call->callType, call->callToken); + "capability. (%s, %s)\n", call->callType, call->callToken); } return FALSE; } @@ -1390,7 +1251,7 @@ case T_H245DataType_data: default: OOTRACEDBGC3("ooCapabilityCheckCompatibility - Unsupported " - "capability. (%s, $s)\n", call->callType, call->callToken); + "capability. (%s, %s)\n", call->callType, call->callToken); } return FALSE; @@ -1419,10 +1280,10 @@ case OO_G711ALAW56K: case OO_G711ULAW64K: case OO_G711ULAW56K: + /*case OO_G726:*/ case OO_G728: case OO_G729: case OO_G729A: - case OO_G729B: case OO_G7231: if(((OOCapParams*)txCap->params)->txframes <= ((OOCapParams*)rxCap->params)->rxframes) @@ -1624,15 +1485,10 @@ framesPerPkt = audioCap->u.g729AnnexA; cap = OO_G729A; break; - case T_H245AudioCapability_g729wAnnexB: - framesPerPkt = audioCap->u.g729wAnnexB; - cap = OO_G729B; - break; case T_H245AudioCapability_g7231: framesPerPkt = audioCap->u.g7231->maxAl_sduAudioFrames; cap = OO_G7231; break; - default: return NULL; } @@ -1745,135 +1601,6 @@ return NULL; } -/* used for g726, AMRNB */ -ooH323EpCapability* ooIsAudioDataTypeNonStandardSupported - (OOH323CallData *call, H245AudioCapability* audioCap, int dir) -{ - int cap; - ooH323EpCapability *cur=NULL, *epCap=NULL; - OOCapParams * params= NULL; - - if (audioCap->t == T_H245AudioCapability_nonStandard && - audioCap->u.nonStandard && - audioCap->u.nonStandard->nonStandardIdentifier.t == - T_H245NonStandardIdentifier_h221NonStandard) { - switch (audioCap->u.nonStandard->data.numocts) { - case sizeof("G.726-32k")-1: - if (!strncmp(audioCap->u.nonStandard->data.data, "G.726-32k", - audioCap->u.nonStandard->data.numocts)) - cap = OO_G726; - else - return NULL; - break; - case sizeof("AMRNB")-1: - if (!strncmp(audioCap->u.nonStandard->data.data, "AMRNB", - audioCap->u.nonStandard->data.numocts)) - cap = OO_AMRNB; - else - return NULL; - break; - default: - return NULL; - } - } else - return NULL; - - OOTRACEDBGC4("Determined Simple audio data type to be of type %s. Searching" - " for matching capability.(%s, %s)\n", - ooGetCapTypeText(cap), call->callType, call->callToken); - - /* If we have call specific caps, we use them; otherwise use general - endpoint caps - */ - if(call->ourCaps) - cur = call->ourCaps; - else - cur = gH323ep.myCaps; - - while(cur) - { - OOTRACEDBGC4("Local cap being compared %s. (%s, %s)\n", - ooGetCapTypeText(cur->cap),call->callType, call->callToken); - - if(cur->cap == cap && (cur->dir & dir)) - break; - cur = cur->next; - } - - if(!cur) return NULL; - - OOTRACEDBGC4("Found matching simple audio capability type %s. Comparing" - " other parameters. (%s, %s)\n", ooGetCapTypeText(cap), - call->callType, call->callToken); - - /* can we receive this capability */ - if(dir & OORX) - { - OOTRACEDBGC4("We can receive Simple capability %s. (%s, %s)\n", - ooGetCapTypeText(cur->cap), call->callType, - call->callToken); - epCap = (ooH323EpCapability*)memAlloc(call->pctxt, - sizeof(ooH323EpCapability)); - params=(OOCapParams*)memAlloc(call->pctxt,sizeof(OOCapParams)); - if(!epCap || !params) - { - OOTRACEERR3("Error:Memory - ooIsAudioDataTypeSimpleSupported - " - "epCap/params (%s, %s)\n", call->callType, - call->callToken); - return NULL; - } - epCap->params = params; - epCap->cap = cur->cap; - epCap->dir = cur->dir; - epCap->capType = cur->capType; - epCap->startReceiveChannel = cur->startReceiveChannel; - epCap->startTransmitChannel= cur->startTransmitChannel; - epCap->stopReceiveChannel = cur->stopReceiveChannel; - epCap->stopTransmitChannel = cur->stopTransmitChannel; - epCap->next = NULL; - memcpy(epCap->params, cur->params, sizeof(OOCapParams)); - OOTRACEDBGC4("Returning copy of matched receive capability %s. " - "(%s, %s)\n", - ooGetCapTypeText(cur->cap), call->callType, - call->callToken); - return epCap; - } - - /* Can we transmit compatible stream */ - if(dir & OOTX) - { - OOTRACEDBGC4("We can transmit Simple capability %s. (%s, %s)\n", - ooGetCapTypeText(cur->cap), call->callType, - call->callToken); - epCap = (ooH323EpCapability*)memAlloc(call->pctxt, - sizeof(ooH323EpCapability)); - params =(OOCapParams*)memAlloc(call->pctxt,sizeof(OOCapParams)); - if(!epCap || !params) - { - OOTRACEERR3("Error:Memory - ooIsAudioDataTypeSimpleSupported - " - "epCap/params (%s, %s)\n", call->callType, - call->callToken); - return NULL; - } - epCap->params = params; - epCap->cap = cur->cap; - epCap->dir = cur->dir; - epCap->capType = cur->capType; - epCap->startReceiveChannel = cur->startReceiveChannel; - epCap->startTransmitChannel= cur->startTransmitChannel; - epCap->stopReceiveChannel = cur->stopReceiveChannel; - epCap->stopTransmitChannel = cur->stopTransmitChannel; - epCap->next = NULL; - memcpy(epCap->params, cur->params, sizeof(OOCapParams)); - OOTRACEDBGC4("Returning copy of matched transmit capability %s." - "(%s, %s)\n", - ooGetCapTypeText(cur->cap), call->callType, - call->callToken); - return epCap; - } - return NULL; -} - ooH323EpCapability* ooIsAudioDataTypeSupported @@ -1890,11 +1617,8 @@ case T_H245AudioCapability_g728: case T_H245AudioCapability_g729: case T_H245AudioCapability_g729AnnexA: - case T_H245AudioCapability_g729wAnnexB: case T_H245AudioCapability_g7231: return ooIsAudioDataTypeSimpleSupported(call, audioCap, dir); - case T_H245AudioCapability_nonStandard: - return ooIsAudioDataTypeNonStandardSupported(call, audioCap, dir); case T_H245AudioCapability_gsmFullRate: case T_H245AudioCapability_gsmHalfRate: case T_H245AudioCapability_gsmEnhancedFullRate: @@ -2310,26 +2034,6 @@ return ooCapabilityAddSimpleCapability(call, OO_G726, txframes, rxframes, FALSE, dir, NULL, NULL, NULL, NULL, TRUE); */ - case T_H245AudioCapability_nonStandard: - if (audioCap->u.nonStandard && - audioCap->u.nonStandard->nonStandardIdentifier.t == - T_H245NonStandardIdentifier_h221NonStandard && - audioCap->u.nonStandard->data.numocts == sizeof("G.726-32k")-1 && - !strncmp(audioCap->u.nonStandard->data.data, "G.726-32k", - audioCap->u.nonStandard->data.numocts)) - return ooCapabilityAddSimpleCapability(call, OO_G726, 20, - 240, FALSE, dir, NULL, NULL, NULL, NULL, TRUE); - - if (audioCap->u.nonStandard && - audioCap->u.nonStandard->nonStandardIdentifier.t == - T_H245NonStandardIdentifier_h221NonStandard && - audioCap->u.nonStandard->data.numocts == sizeof("AMRNB")-1 && - !strncmp(audioCap->u.nonStandard->data.data, "AMRNB", - audioCap->u.nonStandard->data.numocts)) - return ooCapabilityAddSimpleCapability(call, OO_AMRNB, 4, - 4, FALSE, dir, NULL, NULL, NULL, NULL, TRUE); - break; - case T_H245AudioCapability_g728: if(dir&OOTX) txframes = audioCap->u.g728; else if(dir&OORX) rxframes = audioCap->u.g728; @@ -2360,16 +2064,6 @@ return ooCapabilityAddSimpleCapability(call, OO_G729A, txframes, rxframes, FALSE, dir, NULL, NULL, NULL, NULL, TRUE); - case T_H245AudioCapability_g729wAnnexB: - if(dir&OOTX) txframes = audioCap->u.g729wAnnexB; - else if(dir&OORX) rxframes = audioCap->u.g729wAnnexB; - else{ - txframes = audioCap->u.g729wAnnexB; - rxframes = audioCap->u.g729wAnnexB; - } - return ooCapabilityAddSimpleCapability(call, OO_G729B, txframes, - rxframes, FALSE, dir, NULL, NULL, NULL, NULL, TRUE); - case T_H245AudioCapability_g7231: if(dir&OOTX) txframes = audioCap->u.g7231->maxAl_sduAudioFrames; else if(dir&OORX) rxframes = audioCap->u.g7231->maxAl_sduAudioFrames; @@ -2616,7 +2310,7 @@ { static const char *capTypes[]={ "unknown", - "OO_G726", + "OO_NONSTANDARD", "OO_G711ALAW64K", "OO_G711ALAW56K", "OO_G711ULAW64K", @@ -2628,8 +2322,8 @@ "OO_G728", "OO_G729", "OO_G729ANNEXA", - "OO_AMRNB", - "OO_UNUSED", + "OO_IS11172AUDIO", + "OO_IS13818AUDIO", "OO_G729WANNEXB", "OO_G729ANNEXAWANNEXB", "OO_G7231ANNEXC",