[svn-commits] russell: branch russell/chan_refcount r82402 - in /team/russell/chan_refcount...
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Fri Sep 14 16:06:20 CDT 2007
Author: russell
Date: Fri Sep 14 16:06:19 2007
New Revision: 82402
URL: http://svn.digium.com/view/asterisk?view=rev&rev=82402
Log:
sync with trunk
Added:
team/russell/chan_refcount/channels/chan_usbradio.c
- copied unchanged from r82401, trunk/channels/chan_usbradio.c
team/russell/chan_refcount/channels/xpmr/
- copied from r82401, trunk/channels/xpmr/
team/russell/chan_refcount/channels/xpmr/sinetabx.h
- copied unchanged from r82401, trunk/channels/xpmr/sinetabx.h
team/russell/chan_refcount/channels/xpmr/xpmr.c
- copied unchanged from r82401, trunk/channels/xpmr/xpmr.c
team/russell/chan_refcount/channels/xpmr/xpmr.h
- copied unchanged from r82401, trunk/channels/xpmr/xpmr.h
team/russell/chan_refcount/channels/xpmr/xpmr_coef.h
- copied unchanged from r82401, trunk/channels/xpmr/xpmr_coef.h
Modified:
team/russell/chan_refcount/ (props changed)
team/russell/chan_refcount/CHANGES
team/russell/chan_refcount/apps/app_queue.c
team/russell/chan_refcount/build_tools/menuselect-deps.in
team/russell/chan_refcount/cdr/cdr_csv.c
team/russell/chan_refcount/channels/chan_jingle.c
team/russell/chan_refcount/channels/chan_skinny.c
team/russell/chan_refcount/channels/chan_zap.c
team/russell/chan_refcount/configs/skinny.conf.sample
team/russell/chan_refcount/configure
team/russell/chan_refcount/configure.ac
team/russell/chan_refcount/doc/CODING-GUIDELINES
team/russell/chan_refcount/include/asterisk/autoconfig.h.in
team/russell/chan_refcount/include/asterisk/res_odbc.h
team/russell/chan_refcount/main/astobj2.c
team/russell/chan_refcount/makeopts.in
team/russell/chan_refcount/pbx/pbx_spool.c
team/russell/chan_refcount/res/res_odbc.c
Propchange: team/russell/chan_refcount/
------------------------------------------------------------------------------
Binary property 'branch-1.4-blocked' - no diff available.
Propchange: team/russell/chan_refcount/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Propchange: team/russell/chan_refcount/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Fri Sep 14 16:06:19 2007
@@ -1,1 +1,1 @@
-/trunk:1-82338
+/trunk:1-82401
Modified: team/russell/chan_refcount/CHANGES
URL: http://svn.digium.com/view/asterisk/team/russell/chan_refcount/CHANGES?view=diff&rev=82402&r1=82401&r2=82402
==============================================================================
--- team/russell/chan_refcount/CHANGES (original)
+++ team/russell/chan_refcount/CHANGES Fri Sep 14 16:06:19 2007
@@ -1,4 +1,4 @@
--------------------------------------------------------------------------------
+------------------------------------------------------------------------------
--- Functionality changes since Asterisk 1.4-beta was branched ----------------
-------------------------------------------------------------------------------
@@ -50,6 +50,7 @@
* New CLI command "core show settings"
* Added 'core show channels count' CLI command.
* Added the ability to set the core debug and verbose values on a per-file basis.
+ * Added 'queue pause member' and 'queue unpause member' CLI commands
SIP changes
-----------
Modified: team/russell/chan_refcount/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/team/russell/chan_refcount/apps/app_queue.c?view=diff&rev=82402&r1=82401&r2=82402
==============================================================================
--- team/russell/chan_refcount/apps/app_queue.c (original)
+++ team/russell/chan_refcount/apps/app_queue.c Fri Sep 14 16:06:19 2007
@@ -1893,6 +1893,7 @@
manager_event(EVENT_FLAG_AGENT, "AgentCalled",
"Queue: %s\r\n"
"AgentCalled: %s\r\n"
+ "AgentName: %s\r\n"
"ChannelCalling: %s\r\n"
"DestinationChannel: %s\r\n"
"CallerIDNum: %s\r\n"
@@ -1901,7 +1902,7 @@
"Extension: %s\r\n"
"Priority: %d\r\n"
"%s",
- qe->parent->name, tmp->interface, qe->chan->name, tmp->chan->name,
+ qe->parent->name, tmp->interface, tmp->member->membername, qe->chan->name, tmp->chan->name,
tmp->chan->cid.cid_num ? tmp->chan->cid.cid_num : "unknown",
tmp->chan->cid.cid_name ? tmp->chan->cid.cid_name : "unknown",
qe->chan->context, qe->chan->exten, qe->chan->priority,
@@ -3239,7 +3240,7 @@
dump_queue_members(q);
if(mem->realtime)
- update_realtime_member_field(mem, queuename, "paused", paused ? "1" : "0");
+ update_realtime_member_field(mem, q->name, "paused", paused ? "1" : "0");
ast_queue_log(q->name, "NONE", mem->membername, (paused ? "PAUSE" : "UNPAUSE"), "%s", S_OR(reason, ""));
@@ -4482,6 +4483,7 @@
if (ast_strlen_zero(memberfilter) || !strcmp(mem->interface, memberfilter)) {
astman_append(s, "Event: QueueMember\r\n"
"Queue: %s\r\n"
+ "Name: %s\r\n"
"Location: %s\r\n"
"Membership: %s\r\n"
"Penalty: %d\r\n"
@@ -4491,7 +4493,7 @@
"Paused: %d\r\n"
"%s"
"\r\n",
- q->name, mem->interface, mem->dynamic ? "dynamic" : "static",
+ q->name, mem->membername, mem->interface, mem->dynamic ? "dynamic" : "static",
mem->penalty, mem->calls, (int)mem->lastcall, mem->status, mem->paused, idText);
}
ao2_ref(mem, -1);
@@ -4814,6 +4816,76 @@
return NULL;
}
+static char *complete_queue_pause_member(const char *line, const char *word, int pos, int state)
+{
+ /* 0 - queue; 1 - pause; 2 - member; 3 - <interface>; 4 - queue; 5 - <queue>; 6 - reason; 7 - <reason> */
+ switch (pos) {
+ case 3: /* Don't attempt to complete name of interface (infinite possibilities) */
+ return NULL;
+ case 4: /* only one possible match, "queue" */
+ return state == 0 ? ast_strdup("queue") : NULL;
+ case 5: /* <queue> */
+ return complete_queue(line, word, pos, state);
+ case 6: /* "reason" */
+ return state == 0 ? ast_strdup("reason") : NULL;
+ case 7: /* Can't autocomplete a reason, since it's 100% customizeable */
+ return NULL;
+ default:
+ return NULL;
+ }
+}
+
+static char *handle_queue_pause_member(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+{
+ char *queuename, *interface, *reason;
+ int paused;
+
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "queue {pause|unpause} member";
+ e->usage =
+ "Usage: queue {pause|unpause} member <member> [queue <queue> [reason <reason>]]\n"
+ " Pause or unpause a queue member. Not specifying a particular queue\n"
+ " will pause or unpause a member across all queues to which the member\n"
+ " belongs.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return complete_queue_pause_member(a->line, a-> word, a->pos, a->n);
+ }
+
+ if (a->argc < 4 || a->argc == 5 || a->argc == 7 || a->argc > 8) {
+ return CLI_SHOWUSAGE;
+ } else if (a->argc >= 5 && strcmp(a->argv[4], "queue")) {
+ return CLI_SHOWUSAGE;
+ } else if (a->argc == 8 && strcmp(a->argv[6], "reason")) {
+ return CLI_SHOWUSAGE;
+ }
+
+
+ interface = a->argv[3];
+ queuename = a->argc >= 6 ? a->argv[5] : NULL;
+ reason = a->argc == 8 ? a->argv[7] : NULL;
+ paused = !strcasecmp(a->argv[1], "pause");
+
+ if(set_member_paused(queuename, interface, reason, paused) == RESULT_SUCCESS) {
+ ast_cli(a->fd, "%spaused interface '%s'", paused ? "" : "un", interface);
+ if(!ast_strlen_zero(queuename))
+ ast_cli(a->fd, " in queue '%s'", queuename);
+ if(!ast_strlen_zero(reason))
+ ast_cli(a->fd, " for reason '%s'", reason);
+ ast_cli(a->fd, "\n");
+ return CLI_SUCCESS;
+ } else {
+ ast_cli(a->fd, "Unable to %spause interface '%s'", paused ? "" : "un", interface);
+ if(!ast_strlen_zero(queuename))
+ ast_cli(a->fd, " in queue '%s'", queuename);
+ if(!ast_strlen_zero(reason))
+ ast_cli(a->fd, " for reason '%s'", reason);
+ ast_cli(a->fd, "\n");
+ return CLI_FAILURE;
+ }
+}
+
static const char queue_show_usage[] =
"Usage: queue show\n"
" Provides summary information on a specified queue.\n";
@@ -4823,6 +4895,12 @@
static const char qrm_cmd_usage[] =
"Usage: queue remove member <channel> from <queue>\n";
+
+static const char qpm_cmd_usage[] =
+"Usage: queue pause member <channel> in <queue> reason <reason>\n";
+
+static const char qum_cmd_usage[] =
+"Usage: queue unpause member <channel> in <queue> reason <reason>\n";
static struct ast_cli_entry cli_queue[] = {
{ { "queue", "show", NULL },
@@ -4836,6 +4914,8 @@
{ { "queue", "remove", "member", NULL },
handle_queue_remove_member, "Removes a channel from a specified queue",
qrm_cmd_usage, complete_queue_remove_member, NULL },
+
+ NEW_CLI(handle_queue_pause_member, "Pause or unpause a queue member"),
};
static int unload_module(void)
Modified: team/russell/chan_refcount/build_tools/menuselect-deps.in
URL: http://svn.digium.com/view/asterisk/team/russell/chan_refcount/build_tools/menuselect-deps.in?view=diff&rev=82402&r1=82401&r2=82402
==============================================================================
--- team/russell/chan_refcount/build_tools/menuselect-deps.in (original)
+++ team/russell/chan_refcount/build_tools/menuselect-deps.in Fri Sep 14 16:06:19 2007
@@ -29,6 +29,7 @@
SSL=@PBX_OPENSSL@
CRYPTO=@PBX_CRYPTO@
TONEZONE=@PBX_TONEZONE@
+USB=@PBX_USB@
UNIXODBC=@PBX_UNIXODBC@
VORBIS=@PBX_VORBIS@
VPBAPI=@PBX_VPB@
Modified: team/russell/chan_refcount/cdr/cdr_csv.c
URL: http://svn.digium.com/view/asterisk/team/russell/chan_refcount/cdr/cdr_csv.c?view=diff&rev=82402&r1=82401&r2=82402
==============================================================================
--- team/russell/chan_refcount/cdr/cdr_csv.c (original)
+++ team/russell/chan_refcount/cdr/cdr_csv.c Fri Sep 14 16:06:19 2007
@@ -48,6 +48,7 @@
#include "asterisk/options.h"
#include "asterisk/logger.h"
#include "asterisk/utils.h"
+#include "asterisk/lock.h"
#define CSV_LOG_DIR "/cdr-csv"
#define CSV_MASTER "/Master.csv"
@@ -92,8 +93,8 @@
static char *name = "csv";
-static FILE *mf = NULL;
-
+AST_MUTEX_DEFINE_STATIC(mf_lock);
+AST_MUTEX_DEFINE_STATIC(acf_lock);
static int load_config(int reload)
{
@@ -263,18 +264,26 @@
return -1;
}
snprintf(tmp, sizeof(tmp), "%s/%s/%s.csv", (char *)ast_config_AST_LOG_DIR,CSV_LOG_DIR, acc);
+
+ ast_mutex_lock(&acf_lock);
f = fopen(tmp, "a");
- if (!f)
- return -1;
+ if (!f) {
+ ast_mutex_unlock(&acf_lock);
+ ast_log(LOG_ERROR, "Unable to open file %s : %s\n", tmp, strerror(errno));
+ return -1;
+ }
fputs(s, f);
fflush(f);
fclose(f);
+ ast_mutex_unlock(&acf_lock);
+
return 0;
}
static int csv_log(struct ast_cdr *cdr)
{
+ FILE *mf = NULL;
/* Make sure we have a big enough buf */
char buf[1024];
char csvmaster[PATH_MAX];
@@ -288,16 +297,19 @@
/* because of the absolutely unconditional need for the
highest reliability possible in writing billing records,
we open write and close the log file each time */
+ ast_mutex_lock(&mf_lock);
mf = fopen(csvmaster, "a");
- if (!mf) {
- ast_log(LOG_ERROR, "Unable to re-open master file %s : %s\n", csvmaster, strerror(errno));
- }
if (mf) {
fputs(buf, mf);
fflush(mf); /* be particularly anal here */
fclose(mf);
mf = NULL;
- }
+ ast_mutex_unlock(&mf_lock);
+ } else {
+ ast_mutex_unlock(&mf_lock);
+ ast_log(LOG_ERROR, "Unable to re-open master file %s : %s\n", csvmaster, strerror(errno));
+ }
+
if (!ast_strlen_zero(cdr->accountcode)) {
if (writefile(buf, cdr->accountcode))
ast_log(LOG_WARNING, "Unable to write CSV record to account file '%s' : %s\n", cdr->accountcode, strerror(errno));
@@ -308,8 +320,6 @@
static int unload_module(void)
{
- if (mf)
- fclose(mf);
ast_cdr_unregister(name);
return 0;
}
@@ -324,8 +334,6 @@
res = ast_cdr_register(name, ast_module_info->description, csv_log);
if (res) {
ast_log(LOG_ERROR, "Unable to register CSV CDR handling\n");
- if (mf)
- fclose(mf);
}
return res;
}
Modified: team/russell/chan_refcount/channels/chan_jingle.c
URL: http://svn.digium.com/view/asterisk/team/russell/chan_refcount/channels/chan_jingle.c?view=diff&rev=82402&r1=82401&r2=82402
==============================================================================
--- team/russell/chan_refcount/channels/chan_jingle.c (original)
+++ team/russell/chan_refcount/channels/chan_jingle.c Fri Sep 14 16:06:19 2007
@@ -513,11 +513,11 @@
static int jingle_handle_dtmf(struct jingle *client, ikspak *pak)
{
struct jingle_pvt *tmp;
- iks *dtmfnode = NULL;
+ iks *dtmfnode = NULL, *dtmfchild = NULL;
char *dtmf;
/* Make sure our new call doesn't exist yet */
for (tmp = client->p; tmp; tmp = tmp->next) {
- if (iks_find_with_attrib(pak->x, GOOGLE_NODE, GOOGLE_SID, tmp->sid))
+ if (iks_find_with_attrib(pak->x, GOOGLE_NODE, GOOGLE_SID, tmp->sid) || iks_find_with_attrib(pak->x, JINGLE_NODE, JINGLE_SID, tmp->sid))
break;
}
@@ -545,6 +545,22 @@
f.subclass = dtmf[0];
ast_queue_frame(tmp->owner, &f);
ast_verbose("JINGLE! DTMF-relay event received: %c\n", f.subclass);
+ }
+ }
+ } else if ((dtmfnode = iks_find_with_attrib(pak->x, JINGLE_NODE, "action", "session-info"))) {
+ if((dtmfchild = iks_find(dtmfnode, "dtmf"))) {
+ if((dtmf = iks_find_attrib(dtmfchild, "code"))) {
+ if(iks_find_with_attrib(dtmfnode, "dtmf", "action", "button-up")) {
+ struct ast_frame f = {AST_FRAME_DTMF_END, };
+ f.subclass = dtmf[0];
+ ast_queue_frame(tmp->owner, &f);
+ ast_verbose("JINGLE! DTMF-relay event received: %c\n", f.subclass);
+ } else if(iks_find_with_attrib(dtmfnode, "dtmf", "action", "button-down")) {
+ struct ast_frame f = {AST_FRAME_DTMF_BEGIN, };
+ f.subclass = dtmf[0];
+ ast_queue_frame(tmp->owner, &f);
+ ast_verbose("JINGLE! DTMF-relay event received: %c\n", f.subclass);
+ }
}
}
}
@@ -1230,9 +1246,9 @@
iks_insert_node(jingle, dtmf);
ast_mutex_lock(&p->lock);
- if (ast->dtmff.frametype == AST_FRAME_DTMF_BEGIN) {
+ if (ast->dtmff.frametype == AST_FRAME_DTMF_BEGIN || duration == 0) {
iks_insert_attrib(dtmf, "action", "button-down");
- } else if (ast->dtmff.frametype == AST_FRAME_DTMF_END) {
+ } else if (ast->dtmff.frametype == AST_FRAME_DTMF_END || duration != 0) {
iks_insert_attrib(dtmf, "action", "button-up");
}
iks_send(client->connection->p, iq);
@@ -1442,7 +1458,7 @@
ast_debug(3, "Candidate Added!\n");
} else if (iks_find_with_attrib(pak->x, GOOGLE_NODE, "type", GOOGLE_ACCEPT)) {
jingle_is_answered(client, pak);
- } else if (iks_find_with_attrib(pak->x, GOOGLE_NODE, "type", "session-info")) {
+ } else if (iks_find_with_attrib(pak->x, GOOGLE_NODE, "type", "session-info") || iks_find_with_attrib(pak->x, JINGLE_NODE, "action", "session-info")) {
jingle_handle_dtmf(client, pak);
} else if (iks_find_with_attrib(pak->x, GOOGLE_NODE, "type", "terminate")) {
jingle_hangup_farend(client, pak);
@@ -1647,6 +1663,7 @@
ASTOBJ_WRLOCK(member);
member->connection = iterator;
iks_filter_add_rule(iterator->f, jingle_parser, member, IKS_RULE_TYPE, IKS_PAK_IQ, IKS_RULE_NS, JINGLE_NS, IKS_RULE_DONE);
+ iks_filter_add_rule(iterator->f, jingle_parser, member, IKS_RULE_TYPE, IKS_PAK_IQ, IKS_RULE_NS, JINGLE_DTMF_NS, IKS_RULE_DONE);
ASTOBJ_UNLOCK(member);
ASTOBJ_CONTAINER_LINK(&jingles, member);
ASTOBJ_UNLOCK(iterator);
Modified: team/russell/chan_refcount/channels/chan_skinny.c
URL: http://svn.digium.com/view/asterisk/team/russell/chan_refcount/channels/chan_skinny.c?view=diff&rev=82402&r1=82401&r2=82402
==============================================================================
--- team/russell/chan_refcount/channels/chan_skinny.c (original)
+++ team/russell/chan_refcount/channels/chan_skinny.c Fri Sep 14 16:06:19 2007
@@ -964,6 +964,7 @@
static char regexten[AST_MAX_EXTENSION];
static int amaflags = 0;
static int callnums = 1;
+static int canreinvite = 0;
#define SKINNY_DEVICE_UNKNOWN -1
#define SKINNY_DEVICE_NONE 0
@@ -1151,6 +1152,7 @@
int immediate;
int hookstate;
int nat;
+ int canreinvite;
struct ast_codec_pref prefs;
struct skinny_subchannel *sub;
@@ -1250,7 +1252,7 @@
.fixup = skinny_fixup,
.send_digit_begin = skinny_senddigit_begin,
.send_digit_end = skinny_senddigit_end,
-/* .bridge = ast_rtp_bridge, */
+ .bridge = ast_rtp_bridge,
};
static int skinny_extensionstate_cb(char *context, char* exten, int state, void *data);
@@ -2150,24 +2152,107 @@
static enum ast_rtp_get_result skinny_get_rtp_peer(struct ast_channel *c, struct ast_rtp **rtp)
{
struct skinny_subchannel *sub = NULL;
-
- if (!(sub = c->tech_pvt) || !(sub->rtp))
+ struct skinny_line *l;
+ enum ast_rtp_get_result res = AST_RTP_TRY_NATIVE;
+
+ if (skinnydebug)
+ ast_verbose("skinny_get_rtp_peer() Channel = %s\n", c->name);
+
+
+ if (!(sub = c->tech_pvt))
return AST_RTP_GET_FAILED;
+ ast_mutex_lock(&sub->lock);
+
+ if (!(sub->rtp)){
+ ast_mutex_unlock(&sub->lock);
+ return AST_RTP_GET_FAILED;
+ }
+
*rtp = sub->rtp;
- return AST_RTP_TRY_NATIVE;
+ l = sub->parent;
+
+ if (!l->canreinvite || l->nat){
+ res = AST_RTP_TRY_PARTIAL;
+ if (skinnydebug)
+ ast_verbose("skinny_get_rtp_peer() Using AST_RTP_TRY_PARTIAL \n");
+ }
+
+ ast_mutex_unlock(&sub->lock);
+
+ return res;
+
}
static int skinny_set_rtp_peer(struct ast_channel *c, struct ast_rtp *rtp, struct ast_rtp *vrtp, struct ast_rtp *trtp, int codecs, int nat_active)
{
struct skinny_subchannel *sub;
+ struct skinny_line *l;
+ struct skinny_device *d;
+ struct skinnysession *s;
+ struct ast_format_list fmt;
+ struct sockaddr_in us;
+ struct sockaddr_in them;
+ struct skinny_req *req;
+
sub = c->tech_pvt;
- if (sub) {
- /* transmit_modify_with_sdp(sub, rtp); @@FIXME@@ if needed */
+
+ if (c->_state != AST_STATE_UP)
return 0;
- }
- return -1;
+
+ if (!sub) {
+ return -1;
+ }
+
+ l = sub->parent;
+ d = l->parent;
+ s = d->session;
+
+ if (rtp){
+ ast_rtp_get_peer(rtp, &them);
+
+ /* Shutdown any early-media or previous media on re-invite */
+ if (!(req = req_alloc(sizeof(struct stop_media_transmission_message), STOP_MEDIA_TRANSMISSION_MESSAGE)))
+ return -1;
+
+ req->data.stopmedia.conferenceId = htolel(sub->callid);
+ req->data.stopmedia.passThruPartyId = htolel(sub->callid);
+ transmit_response(s, req);
+
+ if (skinnydebug)
+ ast_verbose("Peerip = %s:%d\n", ast_inet_ntoa(them.sin_addr), ntohs(them.sin_port));
+
+ if (!(req = req_alloc(sizeof(struct start_media_transmission_message), START_MEDIA_TRANSMISSION_MESSAGE)))
+ return -1;
+
+ fmt = ast_codec_pref_getsize(&l->prefs, ast_best_codec(l->capability));
+
+ if (skinnydebug)
+ ast_verbose("Setting payloadType to '%d' (%d ms)\n", fmt.bits, fmt.cur_ms);
+
+ req->data.startmedia.conferenceId = htolel(sub->callid);
+ req->data.startmedia.passThruPartyId = htolel(sub->callid);
+ if (!(l->canreinvite) || (l->nat)){
+ ast_rtp_get_us(rtp, &us);
+ req->data.startmedia.remoteIp = htolel(d->ourip.s_addr);
+ req->data.startmedia.remotePort = htolel(ntohs(us.sin_port));
+ } else {
+ req->data.startmedia.remoteIp = htolel(them.sin_addr.s_addr);
+ req->data.startmedia.remotePort = htolel(ntohs(them.sin_port));
+ }
+ req->data.startmedia.packetSize = htolel(fmt.cur_ms);
+ req->data.startmedia.payloadType = htolel(codec_ast2skinny(fmt.bits));
+ req->data.startmedia.qualifier.precedence = htolel(127);
+ req->data.startmedia.qualifier.vad = htolel(0);
+ req->data.startmedia.qualifier.packets = htolel(0);
+ req->data.startmedia.qualifier.bitRate = htolel(0);
+ transmit_response(s, req);
+
+ return 0;
+ }
+ /* Need a return here to break the bridge */
+ return 0;
}
static struct ast_rtp_protocol skinny_rtp = {
@@ -2676,6 +2761,8 @@
ast_parse_allow_disallow(&d->prefs, &d->capability, v->value, 0);
} else if (!strcasecmp(v->name, "version")) {
ast_copy_string(d->version_id, v->value, sizeof(d->version_id));
+ } else if (!strcasecmp(v->name, "canreinvite")) {
+ canreinvite = ast_true(v->value);
} else if (!strcasecmp(v->name, "nat")) {
nat = ast_true(v->value);
} else if (!strcasecmp(v->name, "callerid")) {
@@ -2808,6 +2895,7 @@
/* ASSUME we're onhook at this point */
l->hookstate = SKINNY_ONHOOK;
l->nat = nat;
+ l->canreinvite = canreinvite;
l->next = d->lines;
d->lines = l;
@@ -4423,10 +4511,8 @@
return 0;
}
- if (skinnydebug) {
+ if (skinnydebug)
ast_verbose("ipaddr = %s:%d\n", ast_inet_ntoa(sin.sin_addr), ntohs(sin.sin_port));
- ast_verbose("ourip = %s:%d\n", ast_inet_ntoa(d->ourip), ntohs(us.sin_port));
- }
if (!(req = req_alloc(sizeof(struct start_media_transmission_message), START_MEDIA_TRANSMISSION_MESSAGE)))
return -1;
Modified: team/russell/chan_refcount/channels/chan_zap.c
URL: http://svn.digium.com/view/asterisk/team/russell/chan_refcount/channels/chan_zap.c?view=diff&rev=82402&r1=82401&r2=82402
==============================================================================
--- team/russell/chan_refcount/channels/chan_zap.c (original)
+++ team/russell/chan_refcount/channels/chan_zap.c Fri Sep 14 16:06:19 2007
@@ -10138,7 +10138,7 @@
pri->pvts[chanpos]->logicalspan, pri->pvts[chanpos]->prioffset, pri->span, (int)e->hangup.aoc_units, (e->hangup.aoc_units == 1) ? "" : "s");
#ifdef SUPPORT_USERUSER
- if (!ast_strlen_zero(e->hangup.useruserinfo)) {
+ if (pri->pvts[chanpos]->owner && !ast_strlen_zero(e->hangup.useruserinfo)) {
pbx_builtin_setvar_helper(pri->pvts[chanpos]->owner, "USERUSERINFO", e->hangup.useruserinfo);
}
#endif
Modified: team/russell/chan_refcount/configs/skinny.conf.sample
URL: http://svn.digium.com/view/asterisk/team/russell/chan_refcount/configs/skinny.conf.sample?view=diff&rev=82402&r1=82401&r2=82402
==============================================================================
--- team/russell/chan_refcount/configs/skinny.conf.sample (original)
+++ team/russell/chan_refcount/configs/skinny.conf.sample Fri Sep 14 16:06:19 2007
@@ -61,6 +61,7 @@
;device=SEP00D0BA847E6B
;version=P002G204 ; Thanks critch
;context=did
+;canreinvite=yes ; Allow media to go directly between two RTP endpoints.
;line => 120 ; Dial(Skinny/120 at florian)
Modified: team/russell/chan_refcount/configure
URL: http://svn.digium.com/view/asterisk/team/russell/chan_refcount/configure?view=diff&rev=82402&r1=82401&r2=82402
==============================================================================
--- team/russell/chan_refcount/configure (original)
+++ team/russell/chan_refcount/configure Fri Sep 14 16:06:19 2007
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.ac Revision: 79972 .
+# From configure.ac Revision: 81873 .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61.
#
@@ -873,6 +873,10 @@
TONEZONE_INCLUDE
TONEZONE_DIR
PBX_TONEZONE
+USB_LIB
+USB_INCLUDE
+USB_DIR
+PBX_USB
VORBIS_LIB
VORBIS_INCLUDE
VORBIS_DIR
@@ -1566,6 +1570,7 @@
--with-termcap=PATH use Termcap files in PATH
--with-tinfo=PATH use Term Info files in PATH
--with-tonezone=PATH use tonezone files in PATH
+ --with-usb=PATH use usb files in PATH
--with-vorbis=PATH use Vorbis files in PATH
--with-vpb=PATH use Voicetronix API files in PATH
--with-z=PATH use zlib files in PATH
@@ -8742,6 +8747,34 @@
fi
PBX_TONEZONE=0
+
+
+
+
+
+
+USB_DESCRIP="usb"
+USB_OPTION="usb"
+
+# Check whether --with-usb was given.
+if test "${with_usb+set}" = set; then
+ withval=$with_usb;
+case ${withval} in
+ n|no)
+ USE_USB=no
+ ;;
+ y|ye|yes)
+ ac_mandatory_list="${ac_mandatory_list} USB"
+ ;;
+ *)
+ USB_DIR="${withval}"
+ ac_mandatory_list="${ac_mandatory_list} USB"
+ ;;
+esac
+
+fi
+
+PBX_USB=0
@@ -37225,6 +37258,397 @@
cat >>confdefs.h <<_ACEOF
#define HAVE_TONEZONE_VERSION 80
+_ACEOF
+
+ fi
+ fi
+fi
+
+
+
+if test "x${PBX_USB}" != "x1" -a "${USE_USB}" != "no"; then
+ pbxlibdir=""
+ if test "x${USB_DIR}" != "x"; then
+ if test -d ${USB_DIR}/lib; then
+ pbxlibdir="-L${USB_DIR}/lib"
+ else
+ pbxlibdir="-L${USB_DIR}"
+ fi
+ fi
+ pbxfuncname="usb_init"
+ if test "x${pbxfuncname}" = "x" ; then # empty lib, assume only headers
+ AST_USB_FOUND=yes
+ else
+ as_ac_Lib=`echo "ac_cv_lib_usb_${pbxfuncname}" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for ${pbxfuncname} in -lusb" >&5
+echo $ECHO_N "checking for ${pbxfuncname} in -lusb... $ECHO_C" >&6; }
+if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lusb ${pbxlibdir} $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ${pbxfuncname} ();
+int
+main ()
+{
+return ${pbxfuncname} ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_Lib=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Lib=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+ac_res=`eval echo '${'$as_ac_Lib'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Lib'}'` = yes; then
+ AST_USB_FOUND=yes
+else
+ AST_USB_FOUND=no
+fi
+
+ fi
+
+ if test "${AST_USB_FOUND}" = "yes"; then
+ USB_LIB="-lusb "
+ USB_HEADER_FOUND="1"
+ if test "x${USB_DIR}" != "x"; then
+ USB_LIB="${pbxlibdir} ${USB_LIB}"
+ USB_INCLUDE="-I${USB_DIR}/include"
+ saved_cppflags="${CPPFLAGS}"
+ CPPFLAGS="${CPPFLAGS} -I${USB_DIR}/include"
+ if test "xusb.h" != "x" ; then
+ as_ac_Header=`echo "ac_cv_header_${USB_DIR}/include/usb.h" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for ${USB_DIR}/include/usb.h" >&5
+echo $ECHO_N "checking for ${USB_DIR}/include/usb.h... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking ${USB_DIR}/include/usb.h usability" >&5
+echo $ECHO_N "checking ${USB_DIR}/include/usb.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <${USB_DIR}/include/usb.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking ${USB_DIR}/include/usb.h presence" >&5
+echo $ECHO_N "checking ${USB_DIR}/include/usb.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <${USB_DIR}/include/usb.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: ${USB_DIR}/include/usb.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: ${USB_DIR}/include/usb.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: ${USB_DIR}/include/usb.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: ${USB_DIR}/include/usb.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: ${USB_DIR}/include/usb.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: ${USB_DIR}/include/usb.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: ${USB_DIR}/include/usb.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: ${USB_DIR}/include/usb.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: ${USB_DIR}/include/usb.h: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for ${USB_DIR}/include/usb.h" >&5
+echo $ECHO_N "checking for ${USB_DIR}/include/usb.h... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ USB_HEADER_FOUND=1
+else
+ USB_HEADER_FOUND=0
+fi
+
+
+ fi
+ CPPFLAGS="${saved_cppflags}"
+ else
+ if test "xusb.h" != "x" ; then
+ if test "${ac_cv_header_usb_h+set}" = set; then
+ { echo "$as_me:$LINENO: checking for usb.h" >&5
+echo $ECHO_N "checking for usb.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_usb_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_usb_h" >&5
+echo "${ECHO_T}$ac_cv_header_usb_h" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking usb.h usability" >&5
+echo $ECHO_N "checking usb.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <usb.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking usb.h presence" >&5
+echo $ECHO_N "checking usb.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <usb.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: usb.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: usb.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: usb.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: usb.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: usb.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: usb.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: usb.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: usb.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: usb.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: usb.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: usb.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: usb.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: usb.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: usb.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: usb.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: usb.h: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for usb.h" >&5
+echo $ECHO_N "checking for usb.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_usb_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_usb_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_usb_h" >&5
+echo "${ECHO_T}$ac_cv_header_usb_h" >&6; }
+
+fi
+if test $ac_cv_header_usb_h = yes; then
+ USB_HEADER_FOUND=1
+else
+ USB_HEADER_FOUND=0
+fi
+
+
+ fi
+ fi
+ if test "x${USB_HEADER_FOUND}" = "x0" ; then
+ USB_LIB=""
+ USB_INCLUDE=""
+ else
+ if test "x${pbxfuncname}" = "x" ; then # only checking headers -> no library
+ USB_LIB=""
+ fi
+ PBX_USB=1
+ # XXX don't know how to evaluate the description (third argument) in AC_DEFINE_UNQUOTED
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_USB 1
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_USB_VERSION
_ACEOF
fi
@@ -41691,6 +42115,10 @@
TONEZONE_INCLUDE!$TONEZONE_INCLUDE$ac_delim
TONEZONE_DIR!$TONEZONE_DIR$ac_delim
PBX_TONEZONE!$PBX_TONEZONE$ac_delim
+USB_LIB!$USB_LIB$ac_delim
+USB_INCLUDE!$USB_INCLUDE$ac_delim
+USB_DIR!$USB_DIR$ac_delim
+PBX_USB!$PBX_USB$ac_delim
VORBIS_LIB!$VORBIS_LIB$ac_delim
VORBIS_INCLUDE!$VORBIS_INCLUDE$ac_delim
VORBIS_DIR!$VORBIS_DIR$ac_delim
@@ -41724,10 +42152,6 @@
GSM_INTERNAL!$GSM_INTERNAL$ac_delim
KDEINIT!$KDEINIT$ac_delim
KDEDIR!$KDEDIR$ac_delim
-NETSNMP_CONFIG!$NETSNMP_CONFIG$ac_delim
-PG_CONFIG!$PG_CONFIG$ac_delim
-PTLIB_CONFIG!$PTLIB_CONFIG$ac_delim
-PWLIBDIR!$PWLIBDIR$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -41769,6 +42193,10 @@
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
+NETSNMP_CONFIG!$NETSNMP_CONFIG$ac_delim
+PG_CONFIG!$PG_CONFIG$ac_delim
+PTLIB_CONFIG!$PTLIB_CONFIG$ac_delim
+PWLIBDIR!$PWLIBDIR$ac_delim
PWLIB_INCDIR!$PWLIB_INCDIR$ac_delim
PWLIB_LIBDIR!$PWLIB_LIBDIR$ac_delim
PWLIB_PLATFORM!$PWLIB_PLATFORM$ac_delim
@@ -41793,7 +42221,7 @@
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 22; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 26; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
Modified: team/russell/chan_refcount/configure.ac
URL: http://svn.digium.com/view/asterisk/team/russell/chan_refcount/configure.ac?view=diff&rev=82402&r1=82401&r2=82402
==============================================================================
--- team/russell/chan_refcount/configure.ac (original)
+++ team/russell/chan_refcount/configure.ac Fri Sep 14 16:06:19 2007
@@ -220,6 +220,7 @@
AST_EXT_LIB_SETUP([TERMCAP], [Termcap], [termcap])
AST_EXT_LIB_SETUP([TINFO], [Term Info], [tinfo])
AST_EXT_LIB_SETUP([TONEZONE], [tonezone], [tonezone])
+AST_EXT_LIB_SETUP([USB], [usb], [usb])
AST_EXT_LIB_SETUP([VORBIS], [Vorbis], [vorbis])
AST_EXT_LIB_SETUP([VPB], [Voicetronix API], [vpb])
AST_EXT_LIB_SETUP([ZLIB], [zlib], [z])
@@ -996,6 +997,8 @@
# other case, old tonezone (0.80)
AST_EXT_LIB_CHECK([TONEZONE], [tonezone], [tone_zone_find], [zaptel/zaptel.h], [${tonezone_extra}], [80])
+AST_EXT_LIB_CHECK([USB], [usb], [usb_init], [usb.h], [])
+
AST_EXT_LIB_CHECK([VORBIS], [vorbis], [vorbis_info_init], [vorbis/codec.h], [-lm -lvorbisenc])
AC_LANG_PUSH(C++)
Modified: team/russell/chan_refcount/doc/CODING-GUIDELINES
[... 144 lines stripped ...]
More information about the svn-commits
mailing list