[Freeswitch-branches] [commit] r1153 - in freeswitch/branches/james: . libs/iax/src libs/libdingaling/src src src/mod/endpoints/mod_dingaling src/mod/endpoints/mod_wanpipe w32/vsnet w32/vsnet/Tools/gnutls
Author: james Date: Fri Apr 14 05:24:38 2006 New Revision: 1153 Added: freeswitch/branches/james/w32/vsnet/Tools/gnutls/ - copied from r1150, /freeswitch/trunk/w32/vsnet/Tools/gnutls/ freeswitch/branches/james/w32/vsnet/Tools/gnutls/gnutls.zip - copied unchanged from r1150, /freeswitch/trunk/w32/vsnet/Tools/gnutls/gnutls.zip freeswitch/branches/james/w32/vsnet/Tools/gnutls/libcrypt.zip - copied unchanged from r1150, /freeswitch/trunk/w32/vsnet/Tools/gnutls/libcrypt.zip freeswitch/branches/james/w32/vsnet/Tools/gnutls/libgpg-error.zip - copied unchanged from r1150, /freeswitch/trunk/w32/vsnet/Tools/gnutls/libgpg-error.zip Modified: freeswitch/branches/james/ (props changed) freeswitch/branches/james/libs/iax/src/iax.c freeswitch/branches/james/libs/iax/src/winpoop.h freeswitch/branches/james/libs/libdingaling/src/libdingaling.c freeswitch/branches/james/libs/libdingaling/src/libdingaling.h freeswitch/branches/james/src/mod/endpoints/mod_dingaling/mod_dingaling.c freeswitch/branches/james/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c freeswitch/branches/james/src/switch_rtp.c freeswitch/branches/james/w32/vsnet/GetLibs.vbs Log: Updated branch to trunk. Modified: freeswitch/branches/james/libs/iax/src/iax.c ============================================================================== --- freeswitch/branches/james/libs/iax/src/iax.c (original) +++ freeswitch/branches/james/libs/iax/src/iax.c Fri Apr 14 05:24:38 2006 @@ -36,7 +36,7 @@ #endif void gettimeofday(struct timeval *tv, void /*struct timezone*/ *tz); - +#include "winpoop.h" #else Modified: freeswitch/branches/james/libs/iax/src/winpoop.h ============================================================================== --- freeswitch/branches/james/libs/iax/src/winpoop.h (original) +++ freeswitch/branches/james/libs/iax/src/winpoop.h Fri Apr 14 05:24:38 2006 @@ -24,7 +24,6 @@ static INLINE int inet_aton(char *cp, struct in_addr *inp) { - int res; int a1, a2, a3, a4; unsigned int saddr; if (sscanf(cp, "%d.%d.%d.%d", &a1, &a2, &a3, &a4) != 4) Modified: freeswitch/branches/james/libs/libdingaling/src/libdingaling.c ============================================================================== --- freeswitch/branches/james/libs/libdingaling/src/libdingaling.c (original) +++ freeswitch/branches/james/libs/libdingaling/src/libdingaling.c Fri Apr 14 05:24:38 2006 @@ -72,6 +72,7 @@ int debug; apr_pool_t *memory_pool; unsigned int id; + ldl_logger_t logger; } globals; struct packet_node { @@ -128,6 +129,41 @@ void *private_data; }; + +static char *cut_path(char *in) +{ + char *p, *ret = in; + char delims[] = "/\\"; + char *i; + + for (i = delims; *i; i++) { + p = in; + while ((p = strchr(p, *i)) != 0) { + ret = ++p; + } + } + return ret; +} + +static void default_logger(char *file, const char *func, int line, int level, char *fmt, ...) +{ + char *fp; + char data[1024]; + + va_list ap; + + fp = cut_path(file); + + va_start(ap, fmt); + + vsnprintf(data, sizeof(data), fmt, ap); + + fprintf(globals.log_stream, "%s:%d %s() %s", file, line, func, data); + + va_end(ap); + +} + static unsigned int next_id(void) { return globals.id++; @@ -147,7 +183,7 @@ apr_pool_t *pool = session->pool; if (globals.debug) { - fprintf(globals.log_stream, "Destroyed Session %s\n", session->id); + globals.logger(DL_LOG_DEBUG, "Destroyed Session %s\n", session->id); } if (session->id) { apr_hash_set(session->handle->sessions, session->id, APR_HASH_KEY_STRING, NULL); @@ -170,7 +206,7 @@ ldl_session_t *session = NULL; if (!(session = apr_palloc(handle->pool, sizeof(ldl_session_t)))) { - fprintf(globals.log_stream, "Memory ERROR!\n"); + globals.logger(DL_LOG_DEBUG, "Memory ERROR!\n"); *session_p = NULL; return LDL_STATUS_MEMERR; } @@ -190,7 +226,7 @@ *session_p = session; if (globals.debug) { - fprintf(globals.log_stream, "Created Session %s\n", id); + globals.logger(DL_LOG_DEBUG, "Created Session %s\n", id); } return LDL_STATUS_SUCCESS; @@ -211,13 +247,13 @@ if (!session) { if (globals.debug) { - fprintf(globals.log_stream, "Non-Existent Session %s!\n", id); + globals.logger(DL_LOG_DEBUG, "Non-Existent Session %s!\n", id); } return LDL_STATUS_MEMERR; } if (globals.debug) { - fprintf(globals.log_stream, "Message for Session %s\n", id); + globals.logger(DL_LOG_DEBUG, "Message for Session %s\n", id); } while(xml) { @@ -251,7 +287,7 @@ session->payload_len++; if (globals.debug) { - fprintf(globals.log_stream, "Add Payload [%s] id='%s'\n", name, id); + globals.logger(DL_LOG_DEBUG, "Add Payload [%s] id='%s'\n", name, id); } } } @@ -276,7 +312,7 @@ for (x = 0; x < session->candidate_len; x++) { if (session->candidates[x].pref == pref) { if (globals.debug) { - fprintf(globals.log_stream, "Duplicate Pref!\n"); + globals.logger(DL_LOG_DEBUG, "Duplicate Pref!\n"); } index = x; break; @@ -311,7 +347,7 @@ session->candidates[index].port = atoi(key); } if (globals.debug) { - fprintf(globals.log_stream, + globals.logger(DL_LOG_DEBUG, "New Candidate %d\n" "name=%s\n" "type=%s\n" @@ -394,7 +430,7 @@ apr_thread_mutex_lock(handle->lock); if ((packet_node = apr_hash_get(handle->retry_hash, id, APR_HASH_KEY_STRING))) { if (globals.debug) { - fprintf(globals.log_stream, "Cancel packet %s\n", packet_node->id); + globals.logger(DL_LOG_DEBUG, "Cancel packet %s\n", packet_node->id); } packet_node->retries = 0; } @@ -500,9 +536,9 @@ } } } else if (strcmp("failure", iks_name(node)) == 0) { - fprintf(globals.log_stream, "sasl authentication failed\n"); + globals.logger(DL_LOG_DEBUG, "sasl authentication failed\n"); } else if (strcmp("success", iks_name(node)) == 0) { - fprintf(globals.log_stream, "XMPP server connected\n"); + globals.logger(DL_LOG_DEBUG, "XMPP server connected\n"); iks_send_header(handle->parser, handle->acc->server); ldl_set_flag(handle, LDL_FLAG_AUTHORIZED); } else { @@ -516,11 +552,11 @@ break; #if 0 case IKS_NODE_STOP: - fprintf(globals.log_stream, "server disconnected\n"); + globals.logger(DL_LOG_DEBUG, "server disconnected\n"); break; case IKS_NODE_ERROR: - fprintf(globals.log_stream, "stream error\n"); + globals.logger(DL_LOG_DEBUG, "stream error\n"); break; #endif @@ -553,7 +589,7 @@ static int on_error(void *user_data, ikspak * pak) { - fprintf(globals.log_stream, "authorization failed\n"); + globals.logger(DL_LOG_DEBUG, "authorization failed\n"); return IKS_FILTER_EAT; } @@ -633,7 +669,7 @@ len = apr_queue_size(handle->retry_queue); if (globals.debug && len) { - fprintf(globals.log_stream, "Processing %u packets in retry queue\n", len); + globals.logger(DL_LOG_DEBUG, "Processing %u packets in retry queue\n", len); } apr_thread_mutex_lock(handle->lock); while(x < len && apr_queue_trypop(handle->retry_queue, &pop) == APR_SUCCESS) { @@ -646,7 +682,7 @@ if (packet_node->retries > 0) { packet_node->retries--; if (globals.debug) { - fprintf(globals.log_stream, "Sending packet %s (%d left)\n", packet_node->id, packet_node->retries); + globals.logger(DL_LOG_DEBUG, "Sending packet %s (%d left)\n", packet_node->id, packet_node->retries); } iks_send(handle->parser, packet_node->xml); packet_node->next = now + 5000000; @@ -654,7 +690,7 @@ } if (packet_node->retries == 0) { if (globals.debug) { - fprintf(globals.log_stream, "Discarding packet %s\n", packet_node->id); + globals.logger(DL_LOG_DEBUG, "Discarding packet %s\n", packet_node->id); } apr_hash_set(handle->retry_hash, packet_node->id, APR_HASH_KEY_STRING, NULL); iks_delete(packet_node->xml); @@ -691,11 +727,11 @@ case IKS_OK: break; case IKS_NET_NODNS: - fprintf(globals.log_stream, "hostname lookup failed\n"); + globals.logger(DL_LOG_DEBUG, "hostname lookup failed\n"); case IKS_NET_NOCONN: - fprintf(globals.log_stream, "connection failed\n"); + globals.logger(DL_LOG_DEBUG, "connection failed\n"); default: - fprintf(globals.log_stream, "io error %d\n", e); + globals.logger(DL_LOG_DEBUG, "io error %d\n", e); microsleep(500); continue; } @@ -719,7 +755,7 @@ } if (IKS_OK != e) { - fprintf(globals.log_stream, "io error %d\n", e); + globals.logger(DL_LOG_DEBUG, "io error %d\n", e); microsleep(500); break; } @@ -730,13 +766,13 @@ if (!ldl_test_flag(handle, LDL_FLAG_AUTHORIZED)) { if (IKS_NET_TLSFAIL == e) { - fprintf(globals.log_stream, "tls handshake failed\n"); + globals.logger(DL_LOG_DEBUG, "tls handshake failed\n"); microsleep(500); break; } if (handle->counter == 0) { - fprintf(globals.log_stream, "network timeout\n"); + globals.logger(DL_LOG_DEBUG, "network timeout\n"); microsleep(500); break; } @@ -828,6 +864,11 @@ return handle->private_info; } +void ldl_global_set_logger(ldl_logger_t logger) +{ + globals.logger = logger; +} + unsigned int ldl_session_terminate(ldl_session_t *session) { iks *iq, *sess; @@ -1012,15 +1053,16 @@ memset(&globals, 0, sizeof(globals)); if (apr_pool_create(&globals.memory_pool, NULL) != LDL_STATUS_SUCCESS) { - fprintf(globals.log_stream, "Could not allocate memory pool\n"); + globals.logger(DL_LOG_DEBUG, "Could not allocate memory pool\n"); return LDL_STATUS_MEMERR; } globals.log_stream = stdout; globals.debug = debug; globals.id = 300; + globals.logger = default_logger; ldl_set_flag(&globals, LDL_FLAG_INIT); - + return LDL_STATUS_SUCCESS; } Modified: freeswitch/branches/james/libs/libdingaling/src/libdingaling.h ============================================================================== --- freeswitch/branches/james/libs/libdingaling/src/libdingaling.h (original) +++ freeswitch/branches/james/libs/libdingaling/src/libdingaling.h Fri Apr 14 05:24:38 2006 @@ -127,9 +127,20 @@ LDL_DESCRIPTION_ACCEPT } ldl_description_t; +#define DL_PRE __FILE__, __FUNCTION__, __LINE__ +#define DL_LOG_DEBUG DL_PRE, 7 +#define DL_LOG_INFO DL_PRE, 6 +#define DL_LOG_NOTICE DL_PRE, 5 +#define DL_LOG_WARNING DL_PRE, 4 +#define DL_LOG_ERR DL_PRE, 3 +#define DL_LOG_CRIT DL_PRE, 2 +#define DL_LOG_ALERT DL_PRE, 1 +#define DL_LOG_EMERG DL_PRE, 0 + typedef ldl_status (*ldl_loop_callback_t)(ldl_handle_t *); typedef ldl_status (*ldl_session_callback_t)(ldl_handle_t *, ldl_session_t *, ldl_signal_t, char *); typedef ldl_status (*ldl_response_callback_t)(ldl_handle_t *, char *); +typedef void (*ldl_logger_t)(char *file, const char *func, int line, int level, char *fmt, ...); #define ldl_yield(ms) apr_sleep(ms * 10); apr_thread_yield(); @@ -230,6 +241,12 @@ \return the data */ void *ldl_session_get_private(ldl_session_t *session); + +/*! + \brief Set a custom logger + \param logger the logger function +*/ +void ldl_global_set_logger(ldl_logger_t logger); /*! \brief Perform a probe on a given id to resolve the proper Jingle Resource Modified: freeswitch/branches/james/src/mod/endpoints/mod_dingaling/mod_dingaling.c ============================================================================== --- freeswitch/branches/james/src/mod/endpoints/mod_dingaling/mod_dingaling.c (original) +++ freeswitch/branches/james/src/mod/endpoints/mod_dingaling/mod_dingaling.c Fri Apr 14 05:24:38 2006 @@ -32,6 +32,8 @@ #include <switch.h> #include <libdingaling.h> +#define DL_CAND_WAIT 10000000 + static const char modname[] = "mod_dingaling"; static switch_memory_pool *module_pool = NULL; @@ -116,8 +118,12 @@ int32_t timestamp_send; int32_t timestamp_recv; int32_t timestamp_dtmf; + uint32_t last_read; char *codec_name; uint8_t codec_num; + switch_time_t last_cand; + char *stun_ip; + uint16_t stun_port; }; struct rfc2833_digit { @@ -147,8 +153,19 @@ static ldl_status handle_response(ldl_handle_t *handle, char *id); static switch_status load_config(void); +static void dl_logger(char *file, const char *func, int line, int level, char *fmt, ...) +{ + va_list ap; + char data[1024]; + va_start(ap, fmt); + + vsnprintf(data, sizeof(data), fmt, ap); + switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, SWITCH_LOG_DEBUG, data); + va_end(ap); +} + static void get_codecs(struct private_object *tech_pvt) { assert(tech_pvt != NULL); @@ -219,7 +236,12 @@ started = switch_time_now(); - next_cand = switch_test_flag(tech_pvt, TFLAG_OUTBOUND) ? switch_time_now() + 5000000 : switch_time_now() + 20000000; + if (!tech_pvt->last_cand) { + tech_pvt->last_cand = switch_time_now(); + next_cand = tech_pvt->last_cand; + } else { + next_cand = tech_pvt->last_cand + DL_CAND_WAIT; + } while(! (switch_test_flag(tech_pvt, TFLAG_CODEC_READY) && switch_test_flag(tech_pvt, TFLAG_RTP_READY))) { now = switch_time_now(); @@ -233,7 +255,7 @@ if (now >= next_cand) { ldl_payload_t payloads[5]; - next_cand += 10000000; + next_cand += DL_CAND_WAIT; memset(payloads, 0, sizeof(payloads)); if (!switch_test_flag(tech_pvt, TFLAG_CODEC_READY)) { @@ -270,26 +292,33 @@ if (!strncasecmp(advip, "stun:", 5)) { char *stun_ip = advip + 5; + + if (tech_pvt->stun_ip) { + cand[0].address = tech_pvt->stun_ip; + cand[0].port = tech_pvt->stun_port; + } else { + if (!stun_ip) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Stun Failed! NO STUN SERVER!\n"); + switch_channel_hangup(channel); + break; + } - if (!stun_ip) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Stun Failed! NO STUN SERVER!\n"); - switch_channel_hangup(channel); - break; + cand[0].address = tech_pvt->profile->ip; + if (switch_stun_lookup(&cand[0].address, + &cand[0].port, + stun_ip, + SWITCH_STUN_DEFAULT_PORT, + &err, + switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Stun Failed! %s:%d [%s]\n", stun_ip, SWITCH_STUN_DEFAULT_PORT, err); + switch_channel_hangup(channel); + break; + } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Stun Success %s:%d\n", cand[0].address, cand[0].port); } - - cand[0].address = tech_pvt->profile->ip; - if (switch_stun_lookup(&cand[0].address, - &cand[0].port, - stun_ip, - SWITCH_STUN_DEFAULT_PORT, - &err, - switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Stun Failed! %s:%d [%s]\n", stun_ip, SWITCH_STUN_DEFAULT_PORT, err); - switch_channel_hangup(channel); - break; - } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Stun Success %s:%d\n", cand[0].address, cand[0].port); cand[0].type = "stun"; + tech_pvt->stun_ip = switch_core_session_strdup(tech_pvt->session, cand[0].address); + tech_pvt->stun_port = cand[0].port; } else { cand[0].type = "local"; } @@ -360,7 +389,7 @@ tech_pvt->codec_num, tech_pvt->read_codec.implementation->encoded_bytes_per_frame, tech_pvt->read_codec.implementation->microseconds_per_frame, - 0, + SWITCH_RTP_FLAG_USE_TIMER, NULL, &err, switch_core_session_get_pool(tech_pvt->session)))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "RTP ERROR %s\n", err); @@ -632,6 +661,9 @@ } } + if (switch_test_flag(&tech_pvt->read_frame, SFF_CNG)) { + tech_pvt->read_frame.datalen = tech_pvt->last_read ? tech_pvt->last_read : tech_pvt->read_codec.implementation->encoded_bytes_per_frame; + } if (tech_pvt->read_frame.datalen > 0) { bytes = tech_pvt->read_codec.implementation->encoded_bytes_per_frame; @@ -640,7 +672,7 @@ ms = frames * tech_pvt->read_codec.implementation->microseconds_per_frame; tech_pvt->timestamp_recv += (int32_t) samples; tech_pvt->read_frame.samples = (int) samples; - + tech_pvt->last_read = tech_pvt->read_frame.datalen; //printf("READ bytes=%d payload=%d frames=%d samples=%d ms=%d ts=%d sampcount=%d\n", (int)tech_pvt->read_frame.datalen, (int)payload, (int)frames, (int)samples, (int)ms, (int)tech_pvt->timestamp_recv, (int)tech_pvt->read_frame.samples); break; } @@ -1029,6 +1061,7 @@ } else if (!strcasecmp(cfg.category, "interface")) { if (!globals.init) { ldl_global_init(globals.debug); + ldl_global_set_logger(dl_logger); globals.init = 1; } @@ -1126,6 +1159,7 @@ tech_pvt->codec_index = -1; tech_pvt->profile = profile; tech_pvt->local_port = switch_rtp_request_port(); + tech_pvt->last_cand = switch_time_now() + DL_CAND_WAIT; } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Hey where is my memory pool?\n"); switch_core_session_destroy(&session); @@ -1213,7 +1247,7 @@ unsigned int len = 0; char *err; - + tech_pvt->last_cand = switch_time_now(); if (ldl_session_get_candidates(dlsession, &candidates, &len) == LDL_STATUS_SUCCESS) { unsigned int x; @@ -1228,7 +1262,19 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "candidates %s:%d\n", candidates[x].address, candidates[x].port); if (!strcasecmp(candidates[x].protocol, "udp") && ((profile->lanaddr && !strncasecmp(candidates[x].address, profile->lanaddr, strlen(profile->lanaddr))) || - (strncasecmp(candidates[x].address, "10.", 3) && strncasecmp(candidates[x].address, "192.168.", 8)))) { + (strncasecmp(candidates[x].address, "10.", 3) && + strncasecmp(candidates[x].address, "192.168.", 8) && + strncasecmp(candidates[x].address, "127.", 4) && + strncasecmp(candidates[x].address, "1.", 2) && + strncasecmp(candidates[x].address, "2.", 2) && + strncasecmp(candidates[x].address, "172.16.", 7) && + strncasecmp(candidates[x].address, "172.17.", 7) && + strncasecmp(candidates[x].address, "172.18.", 7) && + strncasecmp(candidates[x].address, "172.19.", 7) && + strncasecmp(candidates[x].address, "172.2", 5) && + strncasecmp(candidates[x].address, "172.30.", 7) && + strncasecmp(candidates[x].address, "172.31.", 7) + ))) { ldl_payload_t payloads[5]; ldl_candidate_t cand[1]; @@ -1275,24 +1321,29 @@ if (!strncasecmp(advip, "stun:", 5)) { char *stun_ip = advip + 5; - if (!stun_ip) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Stun Failed! NO STUN SERVER!\n"); - switch_channel_hangup(channel); - break; - } + if (tech_pvt->stun_ip) { + cand[0].address = tech_pvt->stun_ip; + cand[0].port = tech_pvt->stun_port; + } else { + if (!stun_ip) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Stun Failed! NO STUN SERVER!\n"); + switch_channel_hangup(channel); + break; + } - cand[0].address = profile->ip; - if (switch_stun_lookup(&cand[0].address, - &cand[0].port, - stun_ip, - SWITCH_STUN_DEFAULT_PORT, - &err, - switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Stun Failed! %s:%d [%s]\n", stun_ip, SWITCH_STUN_DEFAULT_PORT, err); - switch_channel_hangup(channel); - return LDL_STATUS_FALSE; + cand[0].address = profile->ip; + if (switch_stun_lookup(&cand[0].address, + &cand[0].port, + stun_ip, + SWITCH_STUN_DEFAULT_PORT, + &err, + switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Stun Failed! %s:%d [%s]\n", stun_ip, SWITCH_STUN_DEFAULT_PORT, err); + switch_channel_hangup(channel); + return LDL_STATUS_FALSE; + } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Stun Success %s:%d\n", cand[0].address, cand[0].port); } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Stun Success %s:%d\n", cand[0].address, cand[0].port); cand[0].type = "stun"; } else { cand[0].type = "local"; Modified: freeswitch/branches/james/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c ============================================================================== --- freeswitch/branches/james/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c (original) +++ freeswitch/branches/james/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c Fri Apr 14 05:24:38 2006 @@ -786,8 +786,6 @@ } } - - switch_channel_set_caller_profile(channel, caller_profile); tech_pvt->caller_profile = caller_profile; if (bchan) { @@ -802,7 +800,7 @@ switch_set_flag(tech_pvt, TFLAG_NOSIG); snprintf(name, sizeof(name), "WanPipe/%s/nosig-%04x", bchan, rand() & 0xffff); switch_channel_set_name(channel, name); - + switch_channel_set_caller_profile(channel, caller_profile); } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Invalid address\n"); switch_core_session_destroy(new_session); @@ -854,6 +852,7 @@ snprintf(name, sizeof(name), "WanPipe/s%dc%d/%s-%04x", spri->span, channo, caller_profile->destination_number, rand() & 0xffff); switch_channel_set_name(channel, name); + switch_channel_set_caller_profile(channel, caller_profile); sr = pri_sr_new(); pri_sr_set_channel(sr, channo, 0, 0); pri_sr_set_bearer(sr, 0, SPANS[span]->l1); Modified: freeswitch/branches/james/src/switch_rtp.c ============================================================================== --- freeswitch/branches/james/src/switch_rtp.c (original) +++ freeswitch/branches/james/src/switch_rtp.c Fri Apr 14 05:24:38 2006 @@ -268,6 +268,7 @@ } rtp_session->pool = pool; + rtp_session->flags = flags; /* for from address on recvfrom calls */ switch_sockaddr_info_get(&rtp_session->from_addr, NULL, SWITCH_UNSPEC, 0, 0, rtp_session->pool); @@ -493,15 +494,15 @@ } if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_USE_TIMER)) { - if ((switch_time_now() - rtp_session->next_read) > 1000) { /* We're late! We're Late!*/ - memset(&rtp_session->recv_msg, 0, 13); + memset(&rtp_session->recv_msg, 0, SWITCH_RTP_CNG_PAYLOAD); rtp_session->recv_msg.header.pt = SWITCH_RTP_CNG_PAYLOAD; *flags |= SFF_CNG; - /* RE-Sync the clock and return a CNG frame */ - rtp_session->next_read = switch_time_now() + rtp_session->ms_per_packet; - return 13; + /* Set the next waypoint and return a CNG frame */ + rtp_session->next_read += rtp_session->ms_per_packet; + *payload_type = SWITCH_RTP_CNG_PAYLOAD; + return SWITCH_RTP_CNG_PAYLOAD; } if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_NOBLOCK) && status == SWITCH_STATUS_BREAK) { @@ -605,7 +606,7 @@ bytes = sbytes; } - + rtp_session->send_msg.header.pt = rtp_session->payload; switch_socket_sendto(rtp_session->sock, rtp_session->remote_addr, 0, (void*)&rtp_session->send_msg, &bytes); if (rtp_session->ice_user) { @@ -630,7 +631,6 @@ rtp_session->seq = htons(rtp_session->seq); rtp_session->send_msg.header.seq = rtp_session->seq; rtp_session->send_msg.header.ts = htonl(rtp_session->ts); - rtp_session->payload = (uint8_t)htonl(rtp_session->payload); return rtp_common_write(rtp_session, data, datalen, rtp_session->payload); @@ -642,10 +642,10 @@ if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_IO) || !rtp_session->remote_addr) { return -1; } + rtp_session->ts += ts; rtp_session->send_msg.header.seq = htons(mseq); rtp_session->send_msg.header.ts = htonl(rtp_session->ts); - rtp_session->send_msg.header.pt = (uint8_t)htonl(payload); return rtp_common_write(rtp_session, data, datalen, payload); } Modified: freeswitch/branches/james/w32/vsnet/GetLibs.vbs ============================================================================== --- freeswitch/branches/james/w32/vsnet/GetLibs.vbs (original) +++ freeswitch/branches/james/w32/vsnet/GetLibs.vbs Fri Apr 14 05:24:38 2006 @@ -178,6 +178,7 @@ If BuildModDingaling Then BuildLibs_iksemel BuildDebug, BuildRelease + BuildLibs_libdingaling BuildDebug, BuildRelease End If If BuildModIaxChan Then
participants (1)
-
jamesï¼ freeswitch.org