Idefisk
Tools
Tutorials
Reviews
VoIP Providers
Archives
AsteriskGuru Archives
Mailing List Archives
FAQ
Search
Memberlist
Usergroups
Register
Profile
Log in to check your private messages
Log in
[svn-commits] rmudgett: branch group/issue14292 r197687 - /t
AsteriskGuru Archives Forum Index
->
Asterisk-CVS
View previous topic
::
View next topic
Author
Message
svn-commits at lists.digi
Guest
Posted: Thu May 28, 2009 4:06 pm
Post subject: [svn-commits] rmudgett: branch group/issue14292 r197687 - /t
Author: rmudgett
Date: Thu May 28 12:00:03 2009
New Revision: 197687
URL:
http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=197687
Log:
* Collected non-call associated libpri subcommand processing into
dahdi_pri_handle_noncall_subcmds().
* Cleaned up ccbsnr_remote_user_free().
Modified:
team/group/issue14292/channels/chan_dahdi.c
Modified: team/group/issue14292/channels/chan_dahdi.c
URL:
http://svn.asterisk.org/svn-view/asterisk/team/group/issue14292/channels/chan_dahdi.c?view=diff&rev=197687&r1=197686&r2=197687
==============================================================================
--- team/group/issue14292/channels/chan_dahdi.c (original)
+++ team/group/issue14292/channels/chan_dahdi.c Thu May 28 12:00:03 2009
@@ -2045,13 +2045,11 @@
{
struct ast_channel *ast;
struct ccbsnr_link *ccbsnr;
- int state = AST_STATE_DOWN;
struct dahdi_pvt *dummy;
ast_verb(3, "ccbsnr_remote_user_free: handle %x\n", handle);
ast_mutex_lock(&ccbsnr_lock);
-
ccbsnr = ccbsnr_list;
while (ccbsnr) {
if (ccbsnr->handle == handle) {
@@ -2061,56 +2059,45 @@
}
ast_mutex_unlock(&ccbsnr_lock);
- if (!(ccbsnr)) {
+ if (!ccbsnr) {
ast_log(LOG_ERROR, "DAHDI: CCBS/CCBR reference not found!\n");
return;
}
- ast = ast_channel_alloc(0, state, 0, 0, "", "", "", 0, 0);
- if (!ast) {
- ast_log(LOG_ERROR, "Unable to allocate channel!\n");
- return;
- }
-
- ast->tech = &dahdi_tech;
- dummy = ast_calloc(1,sizeof(*dummy));
+/* XXX Not sure that a dummy pvt structure is needed since is was not needed for mISDN */
+ dummy = ast_calloc(1, sizeof(*dummy));
if (!dummy) {
ast_log(LOG_ERROR, "Unable to allocate dummy:struct dahdi_pvt!\n");
return;
}
ast_mutex_init(&dummy->lock);
dummy->dummychannel = 1;
+
+ ast = ast_channel_alloc(0, AST_STATE_DOWN, ccbsnr->callernum, ccbsnr->callername,
+ NULL, ccbsnr->callingnum, ccbsnr->context, 0, "CCBSNR/%x", handle);
+ if (!ast) {
+ ast_free(dummy);
+ ast_log(LOG_ERROR, "Unable to allocate channel!\n");
+ return;
+ }
+
+ ast->tech = &dahdi_tech;
ast->tech_pvt = dummy;
- ast_string_field_build(ast, name, "CCBSNR/%x", ccbsnr->handle);
-
- ast_verb(3, "ccbsnr_remote_user_free: ast=%p name=%s ast->_softhangup=%x ast->tech%p\n",
- ast, ast->name, ast->_softhangup, ast->tech);
-
- ast->_softhangup = 0;
- memset(&ast->whentohangup, 0, sizeof(ast->whentohangup));
ast->priority = ccbsnr->priority;
-
- if (ast->cid.cid_num) {
- ast_free(ast->cid.cid_num);
- }
- ast->cid.cid_num = ast_strdup(ccbsnr->callernum);
-
if (ast->cid.cid_dnid) {
ast_free(ast->cid.cid_dnid);
}
- ast->cid.cid_name = ast_strdup(ccbsnr->callername);
-
- ast_copy_string(ast->context, ccbsnr->context, sizeof(ast->context));
- ast_copy_string(ast->exten, ccbsnr->callingnum, sizeof(ast->exten));
-
- ast_setstate(ast, state);
- ast_verb(3, "ccbsnr_remote_user_free: ast_pbx_start:ast %p cc-req(%d)\n",
- ast, ccbsnr->type);
-
+ ast->cid.cid_dnid = ast_strdup(ccbsnr->callingnum);
+
+ ast_verb(3, "ccbsnr_remote_user_free: ast_pbx_start:ast %p name=%s cc-req(%d)\n",
+ ast, ast->name, ccbsnr->type);
if (ast_pbx_start(ast)) {
int ccbs_span;
struct dahdi_pri *ccbs_pri;
+
+ ast_log(LOG_ERROR, "DAHDI: CCBS/CCNR: Unable to start pbx!\n");
+ ast_channel_release(ast);
pri_call_set_cc_operation(ccbsnr->call, PRI_CC_CANCEL);
@@ -2125,9 +2112,6 @@
pri_rel(ccbs_pri);
ccbsnr->call = NULL;
ccbsnr_del_link(ccbsnr->handle);
-
- ast_log(LOG_ERROR, "DAHDI: CCBS/CCNR: Unable to start pbx!\n");
-
return;
} else {
ast_verb(3,
@@ -14126,15 +14110,161 @@
ast_channel_queue_redirecting_update(owner, &redirecting);
}
break;
+ case PRI_SUBCMD_CC_RINGOUT_INV:
+ ast_verb(3, "cc-ringout INV on channel %d/%d, span %d\n",
+ pri->pvts[chanpos]->logicalspan, pri->pvts[chanpos]->prioffset,
+ pri->span);
+ break;
default:
ast_log(LOG_WARNING,
- "Unknown subcommand %d in %s event on channel %d/%d on span %d.\n",
+ "Unknown subcommand(%d) in %s event on channel %d/%d on span %d.\n",
subcmd->cmd, pri_event2str(event_id), PRI_SPAN(channel),
PRI_CHANNEL(channel), pri->span);
break;
}
}
//ast_mutex_unlock(&pri->pvts[chanpos]->lock);
+}
+#endif /* defined(HAVE_PRI) */
+
+#if defined(HAVE_PRI)
+/*!
+ * \internal
+ * \brief Handle the non-call associated PRI subcommand events.
+ * \since 1.6.3
+ *
+ * \param pri DAHDI PRI control structure.
+ * \param cref Non-call call reference.
+ * \param event_id PRI event id
+ * \param channel PRI encoded span/channel
+ * \param subcmds Subcommands to process if any. (Could be NULL).
+ *
+ * \return Nothing
+ */
+static void dahdi_pri_handle_noncall_subcmds(struct dahdi_pri *pri, int cref, int event_id, int channel, const struct pri_subcommands *subcmds)
+{
+ int index;
+ unsigned int handle;
+ unsigned int state;
+ int no_path_reservation;
+ int retain_service;
+ struct ccbsnr_link *cclink;
+ struct ast_channel *peer;
+
+ if (!subcmds) {
+ return;
+ }
+ for (index = 0; index < subcmds->counter_subcmd; ++index) {
+ const struct pri_subcommand *subcmd = &subcmds->subcmd[index];
+
+ switch (subcmd->cmd) {
+ case PRI_SUBCMD_CC_EXECPOSIBLE_INV:
+ ast_verb(4,
+ "cc-execpossible INV cref %d channel %d/%d, span %d\n", cref,
+ PRI_SPAN(channel), PRI_CHANNEL(channel), pri->span);
+
+ handle = CCBS_HANDLE(PRI_SPAN(channel), cref);
+ state = 0;
+ ast_verb(4, "cc-execpossible: handle=%x\n", handle);
+ if (ccbsnr_get_link(handle, &state) != NULL) {
+ if (state == CC_INVOKED_A_RET) {
+ ast_verb(4, "DAHDI ccbsnr_remote_user_free: state '%d'\n",
+ state);
+ ccbsnr_remote_user_free(handle);
+ }
+ } else {
+ ast_verb(3,
+ "cc-execpossible: List-obj not found - handle=%x state=%d\n",
+ handle, state);
+ }
+ break;
+ case PRI_SUBCMD_CC_CCBSREQUEST_RR:
+ no_path_reservation = subcmd->cc_ccbs_rr.cc_request_res.no_path_reservation;
+ retain_service = subcmd->cc_ccbs_rr.cc_request_res.retain_service;
+
+ ast_verb(4,
+ "ccbs-request RR no-path-reservation '%d' retain-service '%d' on channel %d/%d on span %d\n",
+ no_path_reservation, retain_service,
+ PRI_SPAN(channel), PRI_CHANNEL(channel), pri->span);
+ handle = CCBS_HANDLE(PRI_SPAN(channel), cref);
+ cclink = ccbsnr_select_link(handle);
+ if (cclink) {
+ struct ast_channel *peer;
+
+ peer = cclink->peer;
+ cclink->peer = NULL;
+ ast_verb(4, "peer on CCBS-List-Obj (%p))\n", peer);
+
+ if (peer) {
+ ast_verb(4,
+ "fac-ev:PRI_CC_CCBSREQUEST:set per peer %p state ACTIVATED\n",
+ peer);
+ pbx_builtin_setvar_helper(peer, "CCBSNRREQSTATE", "ACTIVATED");
+ } else {
+ ast_verb(4,
+ "PRI_EVENT_ANSWER: No peer on CCBS-List-Obj found\n");
+ }
+ } else {
+ ast_verb(3,
+ "CCBS-List-Obj not found: channel(0x%x) span(%d) explicit(%d) channel(%d)\n",
+ channel, PRI_SPAN(channel), PRI_EXPLICIT(channel),
+ PRI_CHANNEL(channel));
+ }
+ break;
+ case PRI_SUBCMD_CC_CCNRREQUEST_RR:
+ no_path_reservation = subcmd->cc_ccnr_rr.cc_request_res.no_path_reservation;
+ retain_service = subcmd->cc_ccnr_rr.cc_request_res.retain_service;
+
+ ast_verb(3,
+ "ccnr-request RR no-path-reservation '%d' retain-service '%d' on channel %d/%d on span %d\n",
+ no_path_reservation, retain_service,
+ PRI_SPAN(channel), PRI_CHANNEL(channel), pri->span);
+ handle = CCBS_HANDLE(PRI_SPAN(channel), cref);
+ cclink = ccbsnr_select_link(handle);
+ if (cclink) {
+ peer = cclink->peer;
+ cclink->peer = NULL;
+ ast_verb(4, "peer on CCBS-List-Obj (%p))\n", peer);
+
+ if (peer) {
+ ast_verb(4,
+ "fac-ev:PRI_CC_CCBSREQUEST:set per peer %p state ACTIVATED\n",
+ peer);
+ pbx_builtin_setvar_helper(peer, "CCBSNRREQSTATE", "ACTIVATED");
+ } else {
+ ast_verb(3, "PRI_EVENT_ANSWER: No peer on CCBS-List-Obj found\n");
+ }
+ } else {
+ ast_verb(3,
+ "CCBS-List-Obj not found: channel(0x%x) span(%d) explicit(%d) channel(%d)\n",
+ channel, PRI_SPAN(channel), PRI_EXPLICIT(channel),
+ PRI_CHANNEL(channel));
+ }
+ break;
+ case PRI_SUBCMD_CC_ERROR:
+ ast_verb(4,
+ "cc-error RR value '%d' on channel %d/%d on span %d\n",
+ subcmd->cc_error.error_value, PRI_SPAN(channel), PRI_CHANNEL(channel),
+ pri->span);
+ break;
+ case PRI_SUBCMD_CC_CANCEL_INV:
+ ast_verb(4,
+ "cc-cancel INV numberA '%s' numberB '%s' on channel %d/%d on span %d\n",
+ subcmd->cc_cancel_inv.cc_optional_arg.number_A,
+ subcmd->cc_cancel_inv.cc_optional_arg.number_B,
+ PRI_SPAN(channel), PRI_CHANNEL(channel), pri->span);
+ break;
+ default:
+ ast_log(LOG_WARNING,
+ "Unknown non-call subcommand(%d) in %s event on channel %d/%d on span %d.\n",
+ subcmd->cmd, pri_event2str(event_id), PRI_SPAN(channel),
+ PRI_CHANNEL(channel), pri->span);
+ break;
+ }
+ }
+
+ /* NOTE: PRI_CHANNEL(channel) is always going to be zero in this function. */
+ /*! \todo BUGBUG dahdi_pri_handle_noncall_subcmds() not written */
}
#endif /* defined(HAVE_PRI) */
@@ -15064,47 +15194,8 @@
PRI_EXPLICIT(e->facility.channel), PRI_CHANNEL(e->facility.channel));
if (PRI_CHANNEL(e->facility.channel) == 0) {
/* No channel Connection */
- unsigned int handle;
- int i;
-
- for (i = 0; i < e->facility.subcmds->counter_subcmd; i++) {
- struct pri_subcommand *subcmd = &e->facility.subcmds->subcmd[i];
-
- switch (subcmd->cmd) {
- case PRI_SUBCMD_CC_EXECPOSIBLE_INV:
- {
- int cr = e->facility.cref;
- unsigned int state;
-
- ast_verb(4,
- "Facility cc-execposible INV cr %d channel %d/%d, span %d\n",
- cr, PRI_SPAN(e->facility.channel), PRI_CHANNEL(e->facility.channel), pri->span);
-
- handle = CCBS_HANDLE(PRI_SPAN(e->facility.channel), cr);
- state = 0;
- ast_verb(4,
- "Facility cc-execposible: handle=%x\n", handle);
- if (ccbsnr_get_link(handle, &state) != NULL) {
- if (state == CC_INVOKED_A_RET) {
- ast_verb(4,
- "DAHDI ccbsnr_remote_user_free: state '%d'\n",
- state);
- ccbsnr_remote_user_free(handle);
- }
- } else {
- ast_verb(3,
- "Facility cc-execposible: List-obj not found - handle=%x state=%d\n",
- handle, state);
- }
- break;
- }
- default:
- ast_log(LOG_WARNING,
- "Illegal subcommand %d in facility request on channel %d/%d span %d\n",
- subcmd->cmd, PRI_SPAN(e->facility.channel), PRI_CHANNEL(e->facility.channel), pri->span);
- break;
- }
- }
+ dahdi_pri_handle_noncall_subcmds(pri, e->facility.cref, e->e,
+ e->facility.channel, e->facility.subcmds);
break;
}
@@ -15129,95 +15220,11 @@
ast_verb(4,
"PRI_EVENT_ANSWER e->answer.channel(0x%x) span(%d) explicit(%d) channel(%d)\n",
e->answer.channel, PRI_SPAN(e->answer.channel),
- PRI_EXPLICIT(e->answer.channel), e->answer.channel);
- if (e->answer.channel == 0) {
+ PRI_EXPLICIT(e->answer.channel), PRI_CHANNEL(e->answer.channel));
+ if (PRI_CHANNEL(e->answer.channel) == 0) {
/* No channel Connection */
- int i;
-
- for (i = 0; i < e->answer.subcmds->counter_subcmd; i++) {
- struct ccbsnr_link *cclink;
- unsigned int handle;
- int cr = e->answer.cref;
- struct pri_subcommand *subcmd = &e->answer.subcmds->subcmd[i];
-
- switch (subcmd->cmd) {
- case PRI_SUBCMD_CC_CCBSREQUEST_RR:
- {
- int no_path_reservation = subcmd->cc_ccbs_rr.cc_request_res.no_path_reservation;
- int retain_service = subcmd->cc_ccbs_rr.cc_request_res.retain_service;
-
- ast_verb(4,
- "Answer ccbs-request RR no-path-reservation '%d' retain-service '%d' on channel %d/%d on span %d\n",
- no_path_reservation, retain_service,
- PRI_SPAN(e->answer.channel), PRI_CHANNEL(e->answer.channel), pri->span);
- handle = CCBS_HANDLE(PRI_SPAN(e->answer.channel),cr);
- cclink = ccbsnr_select_link(handle);
- if (cclink) {
- struct ast_channel *peer;
-
- peer = cclink->peer;
- cclink->peer = NULL;
- ast_verb(4,
- "PRI_EVENT_ANSWER: peer on CCBS-List-Obj (%p))\n",
- peer);
-
- if (peer) {
- ast_verb(4,
- "fac-ev:PRI_CC_CCBSREQUEST:set per peer %p state ACTIVATED\n",
- peer);
- pbx_builtin_setvar_helper(peer, "CCBSNRREQSTATE", "ACTIVATED");
- } else {
- ast_verb(4,
- "PRI_EVENT_ANSWER: No peer on CCBS-List-Obj found\n");
- }
- } else {
- ast_verb(3,
- "PRI_EVENT_ANSWER: CCBS-List-Obj not found: e->answer.channel(0x%x) span(%d) explicit(%d) channel(%d)\n",
- e->answer.channel, PRI_SPAN(e->answer.channel), PRI_EXPLICIT(e->answer.channel), e->answer.channel);
- }
- break;
- }
-
- case PRI_SUBCMD_CC_CCNRREQUEST_RR:
- {
- int no_path_reservation = subcmd->cc_ccnr_rr.cc_request_res.no_path_reservation;
- int retain_service = subcmd->cc_ccnr_rr.cc_request_res.retain_service;
-
- ast_verb(3,
- "Answer ccnr-request RR no-path-reservation '%d' retain-service '%d' on channel %d/%d on span %d\n",
- no_path_reservation, retain_service,
- PRI_SPAN(e->answer.channel), PRI_CHANNEL(e->answer.channel), pri->span);
- handle = CCBS_HANDLE(PRI_SPAN(e->answer.channel),cr);
- cclink = ccbsnr_select_link(handle);
- if (cclink) {
- struct ast_channel *peer;
- peer = cclink->peer;
- cclink->peer = NULL;
- ast_verb(4,
- "PRI_EVENT_ANSWER: peer on CCBS-List-Obj (%p))\n", peer);
-
- if (peer) {
- ast_verb(4,
- "fac-ev:PRI_CC_CCBSREQUEST:set per peer %p state ACTIVATED\n",
- peer);
- pbx_builtin_setvar_helper(peer, "CCBSNRREQSTATE", "ACTIVATED");
- } else {
- ast_verb(3, "PRI_EVENT_ANSWER: No peer on CCBS-List-Obj found\n");
- }
- } else {
- ast_verb(3,
- "PRI_EVENT_ANSWER: CCBS-List-Obj not found: e->answer.channel(0x%x) span(%d) explicit(%d) channel(%d)\n",
- e->answer.channel, PRI_SPAN(e->answer.channel), PRI_EXPLICIT(e->answer.channel), e->answer.channel);
- }
- break;
- }
-
- default:
- ast_log(LOG_WARNING, "Illegal subcommand %d in answer on channel %d/%d span %d\n",
- subcmd->cmd, PRI_SPAN(e->answer.channel), PRI_CHANNEL(e->answer.channel), pri->span);
- break;
- }
- }
+ dahdi_pri_handle_noncall_subcmds(pri, e->answer.cref, e->e,
+ e->answer.channel, e->answer.subcmds);
break;
}
@@ -15304,41 +15311,18 @@
pri->span, e->hangup.cause);
if (PRI_CHANNEL(e->hangup.channel) == 0) {
/* No channel Connection */
- int errorvalue = 0;
struct ccbsnr_link *cclink;
unsigned int handle;
int cr;
unsigned int state;
- int i;
-
- for (i = 0; i < e->hangup.subcmds->counter_subcmd; i++) {
- struct pri_subcommand *subcmd = &e->hangup.subcmds->subcmd[i];
-
- switch (subcmd->cmd) {
- case PRI_SUBCMD_CC_ERROR:
- errorvalue = subcmd->cc_error.error_value;
- ast_verb(4,
- "Hangup cc-error RR value '%d' on channel %d/%d on span %d\n",
- errorvalue, PRI_SPAN(e->hangup.channel), PRI_CHANNEL(e->hangup.channel), pri->span);
- break;
- case PRI_SUBCMD_CC_CANCEL_INV:
- ast_verb(4,
- "Hangup cc-cancel INV numberA '%s' numberB '%s' on channel %d/%d on span %d\n",
- subcmd->cc_cancel_inv.cc_optional_arg.number_A,
- subcmd->cc_cancel_inv.cc_optional_arg.number_B,
- PRI_SPAN(e->hangup.channel), PRI_CHANNEL(e->hangup.channel), pri->span);
- break;
- default:
- ast_log(LOG_WARNING, "Illegal subcommand %d in hangup on channel %d/%d span %d\n",
- subcmd->cmd, PRI_SPAN(e->hangup.channel), PRI_CHANNEL(e->hangup.channel), pri->span);
- break;
- }
- }
+
+ dahdi_pri_handle_noncall_subcmds(pri, e->hangup.cref, e->e,
+ e->hangup.channel, e->hangup.subcmds);
cr = e->hangup.cref;
state = 0;
- handle = CCBS_HANDLE(PRI_SPAN(e->hangup.channel),cr);
+ handle = CCBS_HANDLE(PRI_SPAN(e->hangup.channel), cr);
cclink = ccbsnr_get_link(handle, &state);
if (cclink) {
switch (state) {
@@ -15346,8 +15330,11 @@
case CC_WAIT_USER_A_ANSWER_N:
case CC_INVOKED_A_RET:
ast_verb(4,
- "PRI_EVENT_HANGUP: CCBS-List-Obj 0x%p: handle %x e->hangup.channel(0x%x) span(%d) explicit(%d) channel(%d) error(%d) peer=%p\n",
- cclink, handle, e->hangup.channel, PRI_SPAN(e->hangup.channel), PRI_EXPLICIT(e->hangup.channel), PRI_CHANNEL(e->hangup.channel), errorvalue, cclink->peer);
+ "PRI_EVENT_HANGUP: CCBS-List-Obj 0x%p: handle %x e->hangup.channel(0x%x) span(%d) explicit(%d) channel(%d) peer=%p\n",
+ cclink, handle, e->hangup.channel,
+ PRI_SPAN(e->hangup.channel),
+ PRI_EXPLICIT(e->hangup.channel),
+ PRI_CHANNEL(e->hangup.channel), cclink->peer);
pri_hangup(pri->pri, cclink->call, e->hangup.cause);
cclink->call = NULL;
@@ -15359,9 +15346,12 @@
}
} else {
ast_verb(4, "PRI_EVENT_HANGUP: CCBS-List-Obj not found: e->hangup.channel(0x%x) span(%d) explicit(%d) channel(%d)\n",
- e->hangup.channel, PRI_SPAN(e->hangup.channel), PRI_EXPLICIT(e->hangup.channel), PRI_CHANNEL(e->hangup.channel));
+ e->hangup.channel, PRI_SPAN(e->hangup.channel),
+ PRI_EXPLICIT(e->hangup.channel),
+ PRI_CHANNEL(e->hangup.channel));
ast_verb(3, "Hangup on bad channel %d/%d on span %d\n",
- PRI_SPAN(e->hangup.channel), PRI_CHANNEL(e->hangup.channel), pri->span);
+ PRI_SPAN(e->hangup.channel), PRI_CHANNEL(e->hangup.channel),
+ pri->span);
}
break;
}
@@ -15373,8 +15363,6 @@
} else {
chanpos = pri_fixup_principle(pri, chanpos, e->hangup.call);
if (chanpos > -1) {
- int i;
-
ast_mutex_lock(&pri->pvts[chanpos]->lock);
dahdi_pri_handle_subcmds(pri, chanpos, e->e, e->hangup.channel,
e->hangup.subcmds);
@@ -15431,21 +15419,6 @@
ast_mutex_lock(&pri->pvts[chanpos]->lock);
}
#endif
- for (i = 0; i < e->hangup.subcmds->counter_subcmd; i++) {
- struct pri_subcommand *subcmd = &e->hangup.subcmds->subcmd[i];
-
- switch (subcmd->cmd) {
- case PRI_SUBCMD_CC_RINGOUT_INV:
- ast_verb(3, "Facility cc-suspend INV on channel %d/%d, span %d\n",
- pri->pvts[chanpos]->logicalspan, pri->pvts[chanpos]->prioffset, pri->span);
- break;
-
- default:
- ast_log(LOG_WARNING, "Illegal subcommand %d in hangup on channel %d/%d not in use on span %d\n",
- subcmd->cmd, PRI_SPAN(e->hangup.channel), PRI_CHANNEL(e->hangup.channel), pri->span);
- break;
- }
- }
ast_mutex_unlock(&pri->pvts[chanpos]->lock);
} else {
_______________________________________________
--Bandwidth and Colocation Provided by
http://www.api-digital.com--
svn-commits mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/svn-commits
Back to top
Display posts from previous:
All Posts
1 Day
7 Days
2 Weeks
1 Month
3 Months
6 Months
1 Year
Oldest First
Newest First
AsteriskGuru Archives Forum Index
->
Asterisk-CVS
All times are GMT
Page
1
of
1
Jump to:
Select a forum
Asterisk Mailing Lists
----------------
Asterisk-Users
Asterisk-Dev
Asterisk-CVS
Asterisk-Biz
Asterisk-Doc
Asterisk-BSD
Asterisk-Announce
Asterisk Call Centers
Asterisk-Video
Asterisk-Speech-Rec
Bristuff-Users
You
cannot
post new topics in this forum
You
cannot
reply to topics in this forum
You
cannot
edit your posts in this forum
You
cannot
delete your posts in this forum
You
cannot
vote in polls in this forum
Powered by
phpBB
© 2001, 2005 phpBB Group