Spacing changes only
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@180259 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
529951d632
commit
e2aa86b3e0
|
@ -23,7 +23,7 @@
|
|||
/*! \file
|
||||
*
|
||||
* \brief Common implementation-independent jitterbuffer stuff.
|
||||
*
|
||||
*
|
||||
* \author Slav Klenov <slav@securax.org>
|
||||
*
|
||||
*
|
||||
|
@ -110,7 +110,7 @@ static void jb_force_resynch_adaptive(void *jb);
|
|||
static void jb_empty_and_reset_adaptive(void *jb);
|
||||
|
||||
/* Available jb implementations */
|
||||
static struct ast_jb_impl avail_impl[] =
|
||||
static struct ast_jb_impl avail_impl[] =
|
||||
{
|
||||
{
|
||||
.name = "fixed",
|
||||
|
@ -183,12 +183,13 @@ static void jb_choose_impl(struct ast_channel *chan)
|
|||
struct ast_jb_conf *jbconf = &jb->conf;
|
||||
struct ast_jb_impl *test_impl;
|
||||
int i, avail_impl_count = ARRAY_LEN(avail_impl);
|
||||
|
||||
|
||||
jb->impl = &avail_impl[default_impl];
|
||||
|
||||
if (ast_strlen_zero(jbconf->impl))
|
||||
|
||||
if (ast_strlen_zero(jbconf->impl)) {
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
for (i = 0; i < avail_impl_count; i++) {
|
||||
test_impl = &avail_impl[i];
|
||||
if (!strcasecmp(jbconf->impl, test_impl->name)) {
|
||||
|
@ -229,14 +230,14 @@ int ast_jb_do_usecheck(struct ast_channel *c0, struct ast_channel *c1)
|
|||
}
|
||||
ast_set_flag(jb0, JB_TIMEBASE_INITIALIZED);
|
||||
}
|
||||
|
||||
|
||||
if (!c0_jb_created) {
|
||||
jb_choose_impl(c0);
|
||||
}
|
||||
|
||||
inuse = 1;
|
||||
}
|
||||
|
||||
|
||||
/* Determine whether audio going to c1 needs a jitter buffer */
|
||||
if (((!c1_wants_jitter && c0_creates_jitter) || (c1_force_jb && c0_creates_jitter)) && c1_jb_enabled) {
|
||||
ast_set_flag(jb1, JB_USE);
|
||||
|
@ -248,7 +249,7 @@ int ast_jb_do_usecheck(struct ast_channel *c0, struct ast_channel *c1)
|
|||
}
|
||||
ast_set_flag(jb1, JB_TIMEBASE_INITIALIZED);
|
||||
}
|
||||
|
||||
|
||||
if (!c1_jb_created) {
|
||||
jb_choose_impl(c1);
|
||||
}
|
||||
|
@ -269,32 +270,32 @@ int ast_jb_get_when_to_wakeup(struct ast_channel *c0, struct ast_channel *c1, in
|
|||
int c1_jb_is_created = ast_test_flag(jb1, JB_CREATED);
|
||||
int wait, wait0, wait1;
|
||||
struct timeval tv_now;
|
||||
|
||||
|
||||
if (time_left == 0) {
|
||||
/* No time left - the bridge will be retried */
|
||||
/* TODO: Test disable this */
|
||||
/*return 0;*/
|
||||
}
|
||||
|
||||
|
||||
if (time_left < 0) {
|
||||
time_left = INT_MAX;
|
||||
}
|
||||
|
||||
|
||||
gettimeofday(&tv_now, NULL);
|
||||
|
||||
|
||||
wait0 = (c0_use_jb && c0_jb_is_created) ? jb0->next - get_now(jb0, &tv_now) : time_left;
|
||||
wait1 = (c1_use_jb && c1_jb_is_created) ? jb1->next - get_now(jb1, &tv_now) : time_left;
|
||||
|
||||
|
||||
wait = wait0 < wait1 ? wait0 : wait1;
|
||||
wait = wait < time_left ? wait : time_left;
|
||||
|
||||
|
||||
if (wait == INT_MAX) {
|
||||
wait = -1;
|
||||
} else if (wait < 1) {
|
||||
/* don't let wait=0, because this can cause the pbx thread to loop without any sleeping at all */
|
||||
wait = 1;
|
||||
}
|
||||
|
||||
|
||||
return wait;
|
||||
}
|
||||
|
||||
|
@ -306,7 +307,7 @@ int ast_jb_put(struct ast_channel *chan, struct ast_frame *f)
|
|||
void *jbobj = jb->jbobj;
|
||||
struct ast_frame *frr;
|
||||
long now = 0;
|
||||
|
||||
|
||||
if (!ast_test_flag(jb, JB_USE))
|
||||
return -1;
|
||||
|
||||
|
@ -315,7 +316,7 @@ int ast_jb_put(struct ast_channel *chan, struct ast_frame *f)
|
|||
jb_framelog("JB_PUT {now=%ld}: Received DTMF frame. Force resynching jb...\n", now);
|
||||
jbimpl->force_resync(jbobj);
|
||||
}
|
||||
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -350,7 +351,7 @@ int ast_jb_put(struct ast_channel *chan, struct ast_frame *f)
|
|||
jb_framelog("JB_PUT {now=%ld}: Dropped frame with ts=%ld and len=%ld\n", now, frr->ts, frr->len);
|
||||
ast_frfree(frr);
|
||||
/*return -1;*/
|
||||
/* TODO: Check this fix - should return 0 here, because the dropped frame shouldn't
|
||||
/* TODO: Check this fix - should return 0 here, because the dropped frame shouldn't
|
||||
be delivered at all */
|
||||
return 0;
|
||||
}
|
||||
|
@ -372,10 +373,10 @@ void ast_jb_get_and_deliver(struct ast_channel *c0, struct ast_channel *c1)
|
|||
int c0_jb_is_created = ast_test_flag(jb0, JB_CREATED);
|
||||
int c1_use_jb = ast_test_flag(jb1, JB_USE);
|
||||
int c1_jb_is_created = ast_test_flag(jb1, JB_CREATED);
|
||||
|
||||
|
||||
if (c0_use_jb && c0_jb_is_created)
|
||||
jb_get_and_deliver(c0);
|
||||
|
||||
|
||||
if (c1_use_jb && c1_jb_is_created)
|
||||
jb_get_and_deliver(c1);
|
||||
}
|
||||
|
@ -389,19 +390,19 @@ static void jb_get_and_deliver(struct ast_channel *chan)
|
|||
struct ast_frame *f, finterp;
|
||||
long now;
|
||||
int interpolation_len, res;
|
||||
|
||||
|
||||
now = get_now(jb, NULL);
|
||||
jb->next = jbimpl->next(jbobj);
|
||||
if (now < jb->next) {
|
||||
jb_framelog("\tJB_GET {now=%ld}: now < next=%ld\n", now, jb->next);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
while (now >= jb->next) {
|
||||
interpolation_len = ast_codec_interp_len(jb->last_format);
|
||||
|
||||
|
||||
res = jbimpl->get(jbobj, &f, now, interpolation_len);
|
||||
|
||||
|
||||
switch (res) {
|
||||
case JB_IMPL_OK:
|
||||
/* deliver the frame */
|
||||
|
@ -439,7 +440,7 @@ static void jb_get_and_deliver(struct ast_channel *chan)
|
|||
ast_assert("JB type unknown" == NULL);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
jb->next = jbimpl->next(jbobj);
|
||||
}
|
||||
}
|
||||
|
@ -462,10 +463,10 @@ static int create_jb(struct ast_channel *chan, struct ast_frame *frr)
|
|||
ast_log(LOG_WARNING, "Failed to create jitterbuffer on channel '%s'\n", chan->name);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
now = get_now(jb, NULL);
|
||||
res = jbimpl->put_first(jbobj, frr, now);
|
||||
|
||||
|
||||
/* The result of putting the first frame should not differ from OK. However, its possible
|
||||
some implementations (i.e. adaptive's when resynch_threshold is specified) to drop it. */
|
||||
if (res != JB_IMPL_OK) {
|
||||
|
@ -475,30 +476,30 @@ static int create_jb(struct ast_channel *chan, struct ast_frame *frr)
|
|||
return -1;
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
/* Init next */
|
||||
jb->next = jbimpl->next(jbobj);
|
||||
|
||||
|
||||
/* Init last format for a first time. */
|
||||
jb->last_format = frr->subclass;
|
||||
|
||||
|
||||
/* Create a frame log file */
|
||||
if (ast_test_flag(jbconf, AST_JB_LOG)) {
|
||||
char safe_logfile[30] = "/tmp/logfile-XXXXXX";
|
||||
int safe_fd;
|
||||
snprintf(name2, sizeof(name2), "%s", chan->name);
|
||||
tmp = strchr(name2, '/');
|
||||
if (tmp)
|
||||
if ((tmp = strchr(name2, '/'))) {
|
||||
*tmp = '#';
|
||||
|
||||
}
|
||||
|
||||
bridged = ast_bridged_channel(chan);
|
||||
/* We should always have bridged chan if a jitterbuffer is in use */
|
||||
ast_assert(bridged != NULL);
|
||||
|
||||
snprintf(name1, sizeof(name1), "%s", bridged->name);
|
||||
tmp = strchr(name1, '/');
|
||||
if (tmp)
|
||||
if ((tmp = strchr(name1, '/'))) {
|
||||
*tmp = '#';
|
||||
}
|
||||
|
||||
snprintf(logfile_pathname, sizeof(logfile_pathname),
|
||||
"/tmp/ast_%s_jb_%s--%s.log", jbimpl->name, name1, name2);
|
||||
|
@ -510,20 +511,22 @@ static int create_jb(struct ast_channel *chan, struct ast_frame *frr)
|
|||
ast_log(LOG_ERROR, "Failed to create frame log file with pathname '%s': %s\n", logfile_pathname, strerror(errno));
|
||||
}
|
||||
|
||||
if (res == JB_IMPL_OK)
|
||||
if (res == JB_IMPL_OK) {
|
||||
jb_framelog("JB_PUT_FIRST {now=%ld}: Queued frame with ts=%ld and len=%ld\n",
|
||||
now, frr->ts, frr->len);
|
||||
else
|
||||
} else {
|
||||
jb_framelog("JB_PUT_FIRST {now=%ld}: Dropped frame with ts=%ld and len=%ld\n",
|
||||
now, frr->ts, frr->len);
|
||||
}
|
||||
}
|
||||
|
||||
ast_verb(3, "%s jitterbuffer created on channel %s\n", jbimpl->name, chan->name);
|
||||
|
||||
|
||||
/* Free the frame if it has not been queued in the jb */
|
||||
if (res != JB_IMPL_OK)
|
||||
if (res != JB_IMPL_OK) {
|
||||
ast_frfree(frr);
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -539,16 +542,16 @@ void ast_jb_destroy(struct ast_channel *chan)
|
|||
fclose(jb->logfile);
|
||||
jb->logfile = NULL;
|
||||
}
|
||||
|
||||
|
||||
if (ast_test_flag(jb, JB_CREATED)) {
|
||||
/* Remove and free all frames still queued in jb */
|
||||
while (jbimpl->remove(jbobj, &f) == JB_IMPL_OK) {
|
||||
ast_frfree(f);
|
||||
}
|
||||
|
||||
|
||||
jbimpl->destroy(jbobj);
|
||||
jb->jbobj = NULL;
|
||||
|
||||
|
||||
ast_clear_flag(jb, JB_CREATED);
|
||||
|
||||
ast_verb(3, "%s jitterbuffer destroyed on channel %s\n", jbimpl->name, chan->name);
|
||||
|
@ -574,12 +577,13 @@ int ast_jb_read_conf(struct ast_jb_conf *conf, const char *varname, const char *
|
|||
int prefixlen = sizeof(AST_JB_CONF_PREFIX) - 1;
|
||||
const char *name;
|
||||
int tmp;
|
||||
|
||||
if (strncasecmp(AST_JB_CONF_PREFIX, varname, prefixlen))
|
||||
|
||||
if (strncasecmp(AST_JB_CONF_PREFIX, varname, prefixlen)) {
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
name = varname + prefixlen;
|
||||
|
||||
|
||||
if (!strcasecmp(name, AST_JB_CONF_ENABLE)) {
|
||||
ast_set2_flag(conf, ast_true(value), AST_JB_ENABLED);
|
||||
} else if (!strcasecmp(name, AST_JB_CONF_FORCE)) {
|
||||
|
@ -598,7 +602,7 @@ int ast_jb_read_conf(struct ast_jb_conf *conf, const char *varname, const char *
|
|||
} else {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -648,7 +652,7 @@ static void * jb_create_fixed(struct ast_jb_conf *general_config, long resynch_t
|
|||
static void jb_destroy_fixed(void *jb)
|
||||
{
|
||||
struct fixed_jb *fixedjb = (struct fixed_jb *) jb;
|
||||
|
||||
|
||||
/* destroy the jb */
|
||||
fixed_jb_destroy(fixedjb);
|
||||
}
|
||||
|
@ -658,9 +662,9 @@ static int jb_put_first_fixed(void *jb, struct ast_frame *fin, long now)
|
|||
{
|
||||
struct fixed_jb *fixedjb = (struct fixed_jb *) jb;
|
||||
int res;
|
||||
|
||||
|
||||
res = fixed_jb_put_first(fixedjb, fin, fin->len, fin->ts, now);
|
||||
|
||||
|
||||
return fixed_to_abstract_code[res];
|
||||
}
|
||||
|
||||
|
@ -669,9 +673,9 @@ static int jb_put_fixed(void *jb, struct ast_frame *fin, long now)
|
|||
{
|
||||
struct fixed_jb *fixedjb = (struct fixed_jb *) jb;
|
||||
int res;
|
||||
|
||||
|
||||
res = fixed_jb_put(fixedjb, fin, fin->len, fin->ts, now);
|
||||
|
||||
|
||||
return fixed_to_abstract_code[res];
|
||||
}
|
||||
|
||||
|
@ -681,10 +685,10 @@ static int jb_get_fixed(void *jb, struct ast_frame **fout, long now, long interp
|
|||
struct fixed_jb *fixedjb = (struct fixed_jb *) jb;
|
||||
struct fixed_jb_frame frame;
|
||||
int res;
|
||||
|
||||
|
||||
res = fixed_jb_get(fixedjb, &frame, now, interpl);
|
||||
*fout = frame.data;
|
||||
|
||||
|
||||
return fixed_to_abstract_code[res];
|
||||
}
|
||||
|
||||
|
@ -692,7 +696,7 @@ static int jb_get_fixed(void *jb, struct ast_frame **fout, long now, long interp
|
|||
static long jb_next_fixed(void *jb)
|
||||
{
|
||||
struct fixed_jb *fixedjb = (struct fixed_jb *) jb;
|
||||
|
||||
|
||||
return fixed_jb_next(fixedjb);
|
||||
}
|
||||
|
||||
|
@ -702,10 +706,10 @@ static int jb_remove_fixed(void *jb, struct ast_frame **fout)
|
|||
struct fixed_jb *fixedjb = (struct fixed_jb *) jb;
|
||||
struct fixed_jb_frame frame;
|
||||
int res;
|
||||
|
||||
|
||||
res = fixed_jb_remove(fixedjb, &frame);
|
||||
*fout = frame.data;
|
||||
|
||||
|
||||
return fixed_to_abstract_code[res];
|
||||
}
|
||||
|
||||
|
@ -713,7 +717,7 @@ static int jb_remove_fixed(void *jb, struct ast_frame **fout)
|
|||
static void jb_force_resynch_fixed(void *jb)
|
||||
{
|
||||
struct fixed_jb *fixedjb = (struct fixed_jb *) jb;
|
||||
|
||||
|
||||
fixed_jb_set_force_resynch(fixedjb);
|
||||
}
|
||||
|
||||
|
@ -741,7 +745,7 @@ static void *jb_create_adaptive(struct ast_jb_conf *general_config, long resynch
|
|||
jbconf.max_contig_interp = 10;
|
||||
jb_setconf(adaptivejb, &jbconf);
|
||||
}
|
||||
|
||||
|
||||
return adaptivejb;
|
||||
}
|
||||
|
||||
|
@ -749,7 +753,7 @@ static void *jb_create_adaptive(struct ast_jb_conf *general_config, long resynch
|
|||
static void jb_destroy_adaptive(void *jb)
|
||||
{
|
||||
jitterbuf *adaptivejb = (jitterbuf *) jb;
|
||||
|
||||
|
||||
jb_destroy(adaptivejb);
|
||||
}
|
||||
|
||||
|
@ -764,9 +768,9 @@ static int jb_put_adaptive(void *jb, struct ast_frame *fin, long now)
|
|||
{
|
||||
jitterbuf *adaptivejb = (jitterbuf *) jb;
|
||||
int res;
|
||||
|
||||
|
||||
res = jb_put(adaptivejb, fin, JB_TYPE_VOICE, fin->len, fin->ts, now);
|
||||
|
||||
|
||||
return adaptive_to_abstract_code[res];
|
||||
}
|
||||
|
||||
|
@ -776,10 +780,10 @@ static int jb_get_adaptive(void *jb, struct ast_frame **fout, long now, long int
|
|||
jitterbuf *adaptivejb = (jitterbuf *) jb;
|
||||
jb_frame frame;
|
||||
int res;
|
||||
|
||||
|
||||
res = jb_get(adaptivejb, &frame, now, interpl);
|
||||
*fout = frame.data;
|
||||
|
||||
|
||||
return adaptive_to_abstract_code[res];
|
||||
}
|
||||
|
||||
|
@ -787,7 +791,7 @@ static int jb_get_adaptive(void *jb, struct ast_frame **fout, long now, long int
|
|||
static long jb_next_adaptive(void *jb)
|
||||
{
|
||||
jitterbuf *adaptivejb = (jitterbuf *) jb;
|
||||
|
||||
|
||||
return jb_next(adaptivejb);
|
||||
}
|
||||
|
||||
|
@ -797,10 +801,10 @@ static int jb_remove_adaptive(void *jb, struct ast_frame **fout)
|
|||
jitterbuf *adaptivejb = (jitterbuf *) jb;
|
||||
jb_frame frame;
|
||||
int res;
|
||||
|
||||
|
||||
res = jb_getall(adaptivejb, &frame);
|
||||
*fout = frame.data;
|
||||
|
||||
|
||||
return adaptive_to_abstract_code[res];
|
||||
}
|
||||
|
||||
|
|
103
main/acl.c
103
main/acl.c
|
@ -61,36 +61,37 @@ static void score_address(const struct sockaddr_in *sin, struct in_addr *best_ad
|
|||
address = ast_inet_ntoa(sin->sin_addr);
|
||||
|
||||
/* RFC 1700 alias for the local network */
|
||||
if (address[0] == '0')
|
||||
if (address[0] == '0') {
|
||||
score = -25;
|
||||
/* RFC 1700 localnet */
|
||||
else if (strncmp(address, "127", 3) == 0)
|
||||
} else if (strncmp(address, "127", 3) == 0) {
|
||||
score = -20;
|
||||
/* RFC 1918 non-public address space */
|
||||
else if (strncmp(address, "10.", 3) == 0)
|
||||
} else if (strncmp(address, "10.", 3) == 0) {
|
||||
score = -5;
|
||||
/* RFC 1918 non-public address space */
|
||||
else if (strncmp(address, "172", 3) == 0) {
|
||||
} else if (strncmp(address, "172", 3) == 0) {
|
||||
/* 172.16.0.0 - 172.19.255.255, but not 172.160.0.0 - 172.169.255.255 */
|
||||
if (address[4] == '1' && address[5] >= '6' && address[6] == '.')
|
||||
if (address[4] == '1' && address[5] >= '6' && address[6] == '.') {
|
||||
score = -5;
|
||||
/* 172.20.0.0 - 172.29.255.255, but not 172.200.0.0 - 172.255.255.255 nor 172.2.0.0 - 172.2.255.255 */
|
||||
else if (address[4] == '2' && address[6] == '.')
|
||||
} else if (address[4] == '2' && address[6] == '.') {
|
||||
score = -5;
|
||||
/* 172.30.0.0 - 172.31.255.255 */
|
||||
else if (address[4] == '3' && address[5] <= '1')
|
||||
} else if (address[4] == '3' && address[5] <= '1') {
|
||||
score = -5;
|
||||
/* All other 172 addresses are public */
|
||||
else
|
||||
} else {
|
||||
score = 0;
|
||||
/* RFC 2544 Benchmark test range */
|
||||
} else if (strncmp(address, "198.1", 5) == 0 && address[5] >= '8' && address[6] == '.')
|
||||
}
|
||||
/* RFC 2544 Benchmark test range (198.18.0.0 - 198.19.255.255, but not 198.180.0.0 - 198.199.255.255) */
|
||||
} else if (strncmp(address, "198.1", 5) == 0 && address[5] >= '8' && address[6] == '.') {
|
||||
score = -10;
|
||||
/* RFC 1918 non-public address space */
|
||||
else if (strncmp(address, "192.168", 7) == 0)
|
||||
} else if (strncmp(address, "192.168", 7) == 0) {
|
||||
score = -5;
|
||||
/* RFC 3330 Zeroconf network */
|
||||
else if (strncmp(address, "169.254", 7) == 0)
|
||||
} else if (strncmp(address, "169.254", 7) == 0) {
|
||||
/*!\note Better score than a test network, but not quite as good as RFC 1918
|
||||
* address space. The reason is that some Linux distributions automatically
|
||||
* configure a Zeroconf address before trying DHCP, so we want to prefer a
|
||||
|
@ -98,11 +99,12 @@ static void score_address(const struct sockaddr_in *sin, struct in_addr *best_ad
|
|||
*/
|
||||
score = -10;
|
||||
/* RFC 3330 Test network */
|
||||
else if (strncmp(address, "192.0.2.", 8) == 0)
|
||||
} else if (strncmp(address, "192.0.2.", 8) == 0) {
|
||||
score = -15;
|
||||
/* Every other address should be publically routable */
|
||||
else
|
||||
} else {
|
||||
score = 0;
|
||||
}
|
||||
|
||||
if (score > *best_score) {
|
||||
*best_score = score;
|
||||
|
@ -149,8 +151,9 @@ static int get_local_address(struct in_addr *ourip)
|
|||
score_address(sin, &best_addr, &best_score);
|
||||
res = 0;
|
||||
|
||||
if (best_score == 0)
|
||||
if (best_score == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif /* BSD_OR_LINUX */
|
||||
|
@ -189,21 +192,23 @@ static int get_local_address(struct in_addr *ourip)
|
|||
score_address(sa, &best_addr, &best_score);
|
||||
res = 0;
|
||||
|
||||
if (best_score == 0)
|
||||
if (best_score == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
free(buf);
|
||||
#endif /* SOLARIS */
|
||||
|
||||
|
||||
close(s);
|
||||
}
|
||||
#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__linux__) || defined(__Darwin__)
|
||||
freeifaddrs(ifaphead);
|
||||
#endif /* BSD_OR_LINUX */
|
||||
|
||||
if (res == 0 && ourip)
|
||||
if (res == 0 && ourip) {
|
||||
memcpy(ourip, &best_addr, sizeof(*ourip));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
#endif /* HAVE_GETIFADDRS */
|
||||
|
@ -250,16 +255,18 @@ struct ast_ha *ast_duplicate_ha_list(struct ast_ha *original)
|
|||
|
||||
while (start) {
|
||||
current = ast_duplicate_ha(start); /* Create copy of this object */
|
||||
if (prev)
|
||||
prev->next = current; /* Link previous to this object */
|
||||
if (prev) {
|
||||
prev->next = current; /* Link previous to this object */
|
||||
}
|
||||
|
||||
if (!ret)
|
||||
ret = current; /* Save starting point */
|
||||
if (!ret) {
|
||||
ret = current; /* Save starting point */
|
||||
}
|
||||
|
||||
start = start->next; /* Go to next object */
|
||||
prev = current; /* Save pointer to this object */
|
||||
start = start->next; /* Go to next object */
|
||||
prev = current; /* Save pointer to this object */
|
||||
}
|
||||
return ret; /* Return start of list */
|
||||
return ret; /* Return start of list */
|
||||
}
|
||||
|
||||
struct ast_ha *ast_append_ha(const char *sense, const char *stuff, struct ast_ha *path, int *error)
|
||||
|
@ -277,12 +284,11 @@ struct ast_ha *ast_append_ha(const char *sense, const char *stuff, struct ast_ha
|
|||
path = path->next;
|
||||
}
|
||||
|
||||
ha = ast_malloc(sizeof(*ha));
|
||||
if (!ha)
|
||||
if (!(ha = ast_malloc(sizeof(*ha)))) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
nm = strchr(tmp, '/');
|
||||
if (!nm) {
|
||||
if (!(nm = strchr(tmp, '/'))) {
|
||||
/* assume /32. Yes, htonl does not do anything for this particular mask
|
||||
but we better use it to show we remember about byte order */
|
||||
ha->netmask.s_addr = htonl(0xFFFFFFFF);
|
||||
|
@ -291,20 +297,22 @@ struct ast_ha *ast_append_ha(const char *sense, const char *stuff, struct ast_ha
|
|||
nm++;
|
||||
|
||||
if (!strchr(nm, '.')) {
|
||||
if ((sscanf(nm, "%d", &x) == 1) && (x >= 0) && (x <= 32))
|
||||
if ((sscanf(nm, "%d", &x) == 1) && (x >= 0) && (x <= 32)) {
|
||||
ha->netmask.s_addr = htonl(0xFFFFFFFF << (32 - x));
|
||||
else {
|
||||
} else {
|
||||
ast_log(LOG_WARNING, "Invalid CIDR in %s\n", stuff);
|
||||
ast_free(ha);
|
||||
if (error)
|
||||
if (error) {
|
||||
*error = 1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
} else if (!inet_aton(nm, &ha->netmask)) {
|
||||
ast_log(LOG_WARNING, "Invalid mask in %s\n", stuff);
|
||||
ast_free(ha);
|
||||
if (error)
|
||||
if (error) {
|
||||
*error = 1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
@ -312,8 +320,9 @@ struct ast_ha *ast_append_ha(const char *sense, const char *stuff, struct ast_ha
|
|||
if (!inet_aton(tmp, &ha->netaddr)) {
|
||||
ast_log(LOG_WARNING, "Invalid IP address in %s\n", stuff);
|
||||
ast_free(ha);
|
||||
if (error)
|
||||
if (error) {
|
||||
*error = 1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -348,8 +357,9 @@ int ast_apply_ha(struct ast_ha *ha, struct sockaddr_in *sin)
|
|||
#endif
|
||||
/* For each rule, if this address and the netmask = the net address
|
||||
apply the current rule */
|
||||
if ((sin->sin_addr.s_addr & ha->netmask.s_addr) == ha->netaddr.s_addr)
|
||||
if ((sin->sin_addr.s_addr & ha->netmask.s_addr) == ha->netaddr.s_addr) {
|
||||
res = ha->sense;
|
||||
}
|
||||
ha = ha->next;
|
||||
}
|
||||
return res;
|
||||
|
@ -369,8 +379,7 @@ int ast_get_ip_or_srv(struct sockaddr_in *sin, const char *value, const char *se
|
|||
value = host;
|
||||
}
|
||||
}
|
||||
hp = ast_gethostbyname(value, &ahp);
|
||||
if (hp) {
|
||||
if ((hp = ast_gethostbyname(value, &ahp))) {
|
||||
memcpy(&sin->sin_addr, hp->h_addr, sizeof(sin->sin_addr));
|
||||
} else {
|
||||
ast_log(LOG_WARNING, "Unable to lookup '%s'\n", value);
|
||||
|
@ -410,17 +419,17 @@ static const struct dscp_codepoint dscp_pool1[] = {
|
|||
{ "EF", 0x2E },
|
||||
};
|
||||
|
||||
int ast_str2cos(const char *value, unsigned int *cos)
|
||||
int ast_str2cos(const char *value, unsigned int *cos)
|
||||
{
|
||||
int fval;
|
||||
|
||||
|
||||
if (sscanf(value, "%d", &fval) == 1) {
|
||||
if (fval < 8) {
|
||||
*cos = fval;
|
||||
*cos = fval;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -449,8 +458,9 @@ const char *ast_tos2str(unsigned int tos)
|
|||
unsigned int x;
|
||||
|
||||
for (x = 0; x < ARRAY_LEN(dscp_pool1); x++) {
|
||||
if (dscp_pool1[x].space == (tos >> 2))
|
||||
if (dscp_pool1[x].space == (tos >> 2)) {
|
||||
return dscp_pool1[x].name;
|
||||
}
|
||||
}
|
||||
|
||||
return "unknown";
|
||||
|
@ -467,8 +477,7 @@ int ast_ouraddrfor(struct in_addr *them, struct in_addr *us)
|
|||
struct sockaddr_in sin;
|
||||
socklen_t slen;
|
||||
|
||||
s = socket(PF_INET, SOCK_DGRAM, 0);
|
||||
if (s < 0) {
|
||||
if ((s = socket(PF_INET, SOCK_DGRAM, 0)) < 0) {
|
||||
ast_log(LOG_ERROR, "Cannot create socket\n");
|
||||
return -1;
|
||||
}
|
||||
|
@ -509,8 +518,7 @@ int ast_find_ourip(struct in_addr *ourip, struct sockaddr_in bindaddr)
|
|||
if (gethostname(ourhost, sizeof(ourhost) - 1)) {
|
||||
ast_log(LOG_WARNING, "Unable to get hostname\n");
|
||||
} else {
|
||||
hp = ast_gethostbyname(ourhost, &ahp);
|
||||
if (hp) {
|
||||
if ((hp = ast_gethostbyname(ourhost, &ahp))) {
|
||||
memcpy(ourip, hp->h_addr, sizeof(*ourip));
|
||||
ast_debug(3, "Found one IP address based on local hostname %s.\n", ourhost);
|
||||
return 0;
|
||||
|
@ -518,8 +526,9 @@ int ast_find_ourip(struct in_addr *ourip, struct sockaddr_in bindaddr)
|
|||
}
|
||||
ast_debug(3, "Trying to check A.ROOT-SERVERS.NET and get our IP address for that connection\n");
|
||||
/* A.ROOT-SERVERS.NET. */
|
||||
if (inet_aton("198.41.0.4", &saddr) && !ast_ouraddrfor(&saddr, ourip))
|
||||
if (inet_aton("198.41.0.4", &saddr) && !ast_ouraddrfor(&saddr, ourip)) {
|
||||
return 0;
|
||||
}
|
||||
return get_local_address(ourip);
|
||||
}
|
||||
|
||||
|
|
|
@ -122,7 +122,7 @@ aes_rval aes_encrypt(const void *in_blk, void *out_blk, const aes_encrypt_ctx cx
|
|||
aes_32t nr = (kp[45] ^ kp[52] ^ kp[53] ? kp[52] : 14);
|
||||
|
||||
#ifdef AES_ERR_CHK
|
||||
if( (nr != 10 || !(kp[0] | kp[3] | kp[4]))
|
||||
if( (nr != 10 || !(kp[0] | kp[3] | kp[4]))
|
||||
&& (nr != 12 || !(kp[0] | kp[5] | kp[6]))
|
||||
&& (nr != 14 || !(kp[0] | kp[7] | kp[8])) )
|
||||
return aes_error;
|
||||
|
@ -246,7 +246,7 @@ aes_rval aes_decrypt(const void *in_blk, void *out_blk, const aes_decrypt_ctx cx
|
|||
const aes_32t *kp = cx->ks + nr * N_COLS;
|
||||
|
||||
#ifdef AES_ERR_CHK
|
||||
if( (nr != 10 || !(cx->ks[0] | cx->ks[3] | cx->ks[4]))
|
||||
if( (nr != 10 || !(cx->ks[0] | cx->ks[3] | cx->ks[4]))
|
||||
&& (nr != 12 || !(cx->ks[0] | cx->ks[5] | cx->ks[6]))
|
||||
&& (nr != 14 || !(cx->ks[0] | cx->ks[7] | cx->ks[8])) )
|
||||
return aes_error;
|
||||
|
|
24
main/alaw.c
24
main/alaw.c
|
@ -20,7 +20,7 @@
|
|||
*
|
||||
* \brief a-Law to Signed linear conversion
|
||||
*
|
||||
* \author Mark Spencer <markster@digium.com>
|
||||
* \author Mark Spencer <markster@digium.com>
|
||||
*/
|
||||
|
||||
#include "asterisk.h"
|
||||
|
@ -83,16 +83,16 @@ static unsigned char linear2alaw(short sample, int full_coding)
|
|||
7,7,7,7,7,7,7,7 };
|
||||
unsigned sign, exponent, mantissa, mag;
|
||||
unsigned char alawbyte;
|
||||
|
||||
|
||||
ast_alaw_get_sign_mag(sample, &sign, &mag);
|
||||
if (mag > 32767)
|
||||
mag = 32767; /* clip the magnitude for -32768 */
|
||||
|
||||
|
||||
exponent = exp_lut[(mag >> 8) & 0x7f];
|
||||
mantissa = (mag >> (exponent + 3)) & 0x0f;
|
||||
if (mag < 0x100)
|
||||
exponent = 0;
|
||||
|
||||
|
||||
if (full_coding) {
|
||||
/* full encoding, with sign and xform */
|
||||
alawbyte = (unsigned char)(sign | (exponent << 4) | mantissa);
|
||||
|
@ -124,7 +124,7 @@ static inline short alaw2linear(unsigned char alawbyte)
|
|||
{
|
||||
unsigned exponent, mantissa;
|
||||
short sample;
|
||||
|
||||
|
||||
alawbyte ^= AST_ALAW_AMI_MASK;
|
||||
exponent = (alawbyte & 0x70) >> 4;
|
||||
mantissa = alawbyte & 0x0f;
|
||||
|
@ -149,9 +149,9 @@ short __ast_alaw[256];
|
|||
void ast_alaw_init(void)
|
||||
{
|
||||
int i;
|
||||
/*
|
||||
/*
|
||||
* Set up mu-law conversion table
|
||||
*/
|
||||
*/
|
||||
#ifndef G711_NEW_ALGORITHM
|
||||
for (i = 0; i < 256; i++) {
|
||||
__ast_alaw[i] = alaw2linear(i);
|
||||
|
@ -169,7 +169,7 @@ void ast_alaw_init(void)
|
|||
AST_LIN2A_LOOKUP(i) = linear2alaw(i, 0 /* half-cooked */);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef TEST_CODING_TABLES
|
||||
for (i = -32768; i < 32768; ++i) {
|
||||
#ifndef G711_NEW_ALGORITHM
|
||||
|
@ -181,7 +181,7 @@ void ast_alaw_init(void)
|
|||
unsigned char e2 = AST_LIN2A(i);
|
||||
short d2 = alaw2linear(e2);
|
||||
short d3 = AST_ALAW(e1);
|
||||
|
||||
|
||||
if (e1 != e2 || d1 != d3 || d2 != d3) {
|
||||
ast_log(LOG_WARNING, "a-Law coding tables test failed on %d: e1=%u, e2=%u, d1=%d, d2=%d\n",
|
||||
i, (unsigned)e1, (unsigned)e2, (int)d1, (int)d2);
|
||||
|
@ -189,7 +189,7 @@ void ast_alaw_init(void)
|
|||
}
|
||||
ast_log(LOG_NOTICE, "a-Law coding tables test complete.\n");
|
||||
#endif /* TEST_CODING_TABLES */
|
||||
|
||||
|
||||
#ifdef TEST_TANDEM_TRANSCODING
|
||||
/* tandem transcoding test */
|
||||
for (i = -32768; i < 32768; ++i) {
|
||||
|
@ -199,7 +199,7 @@ void ast_alaw_init(void)
|
|||
short d2 = AST_ALAW(e2);
|
||||
unsigned char e3 = AST_LIN2A(d2);
|
||||
short d3 = AST_ALAW(e3);
|
||||
|
||||
|
||||
if (e1 != e2 || e2 != e3 || d1 != d2 || d2 != d3) {
|
||||
ast_log(LOG_WARNING, "a-Law tandem transcoding test failed on %d: e1=%u, e2=%u, d1=%d, d2=%d, d3=%d\n",
|
||||
i, (unsigned)e1, (unsigned)e2, (int)d1, (int)d2, (int)d3);
|
||||
|
@ -207,6 +207,6 @@ void ast_alaw_init(void)
|
|||
}
|
||||
ast_log(LOG_NOTICE, "a-Law tandem transcoding test complete.\n");
|
||||
#endif /* TEST_TANDEM_TRANSCODING */
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
475
main/app.c
475
main/app.c
File diff suppressed because it is too large
Load Diff
Reference in New Issue