diff --git a/src/channels/chan_voicemngr.c b/src/channels/chan_voicemngr.c index db048d1dd8079a352656a0798e98c50c34a99297..24162ff433fd97267c33b54c921033929a74261e 100644 --- a/src/channels/chan_voicemngr.c +++ b/src/channels/chan_voicemngr.c @@ -700,29 +700,20 @@ static void endpt_signal(int line, char *signal, char *state, char *data) { static int chan_voicemngr_send_ubus_event(char *ev_name, int line) { struct blob_buf blob; - struct ubus_context *ubusctx; int res = 0; - ubusctx = ubus_connect(NULL); - if (!ubusctx) { - return -1; - } - memset(&blob, 0, sizeof(blob)); if(blob_buf_init(&blob, 0)) { - ast_ubus_free_context(ubusctx); return -1; } blobmsg_add_u32(&blob, "id", line); blobmsg_add_string(&blob, "event", ev_name); - - if (ubus_send_event(ubusctx, broadcast_path, blob.head) != UBUS_STATUS_OK) { + if (ubus_send_event(get_shared_context(__FUNCTION__), broadcast_path, blob.head) != UBUS_STATUS_OK) { ast_log(LOG_NOTICE,"Error sending ubus message %s\n", ev_name); res = -1; } - ast_ubus_free_context(ubusctx); blob_buf_free(&blob); return res; @@ -1750,7 +1741,7 @@ static int chan_voicemngr_classify_rtp_packet(int payload_type) { if (voicemngr_codecs[i].rtp_payload_type == payload_type) return CHAN_VOICEMNGR_AUDIO; - ast_verbose("Unknown rtp packet payload_type %d\n", payload_type); + ast_debug(3, "Unknown RTP payload_type %d\n", payload_type); return CHAN_VOICEMNGR_UNKNOWN; } @@ -1760,7 +1751,7 @@ static int map_ast_codec_id_to_rtp(const struct ast_format *astcodec) if (ast_format_cmp(astcodec, *voicemngr_codecs[i].ast_format) == AST_FORMAT_CMP_EQUAL) return voicemngr_codecs[i].rtp_payload_type; - ast_verbose("Unknown asterisk format/codec\n"); + ast_debug(3, "Unknown asterisk format(%s), return PCMA\n", ast_format_get_name(astcodec)); return RTP_PT_PCMA; } @@ -3286,6 +3277,7 @@ static void audio_packet_handler(pe_packet_t *p) { line_stats[sip_client_id].txpkts++; line_stats[sip_client_id].txbytes += frame.datalen; } + // write header values into frame so asterisk uses the same RTP header as DSP frame.seqno = (ntohl(packet_buf32[0]) & 0xffff); frame.ts = ntohl(packet_buf32[1]); @@ -5011,7 +5003,6 @@ static void ubus_call_answer_rtp_stats(struct ubus_request *req, int type, struc } static int endpt_get_rtp_stats(int line) { - struct ubus_context *local_ctx; struct blob_buf bb; int ret; struct chan_voicemngr_pvt *p = NULL; @@ -5039,12 +5030,6 @@ static int endpt_get_rtp_stats(int line) { return -1; } - local_ctx = ubus_connect(NULL); - if (!local_ctx) { - ast_log(LOG_ERROR, "%s(): ubus_connect() failed\n", __func__); - return -1; - } - memset(&bb, 0, sizeof(bb)); if(blob_buf_init(&bb, 0)) { return -1; @@ -5052,12 +5037,9 @@ static int endpt_get_rtp_stats(int line) { blobmsg_add_u32(&bb, "line", line); blobmsg_add_u8(&bb, "reset", 1); // always reset RTP stats after get them - ast_log(LOG_DEBUG, "thread %d: ubus call endpt rtp_stats \"{'line':%d,'reset':true}\"", ast_get_tid(), line); - ret = ubus_invoke(local_ctx, endpt_id, "rtp_stats", bb.head, ubus_call_answer_rtp_stats, NULL, 500); - + ret = ubus_invoke(get_shared_context(__FUNCTION__), endpt_id, "rtp_stats", bb.head, ubus_call_answer_rtp_stats, sub, 500); blob_buf_free(&bb); - ast_ubus_free_context(local_ctx); if (ret != UBUS_STATUS_OK) { ast_log(LOG_DEBUG, "ubus_invoke for rtp_stats failed with return value %d\n", ret);