static void rtpp_log_obj_dtor(struct rtpp_log_priv *pvt) { rtpp_log_fin(&pvt->pub); rtpp_log_close(pvt->log); free(pvt); }
static void ehandler(void) { unlink(cmd_sock); unlink(pid_file); rtpp_log_write(RTPP_LOG_INFO, glog, "rtpproxy ended"); rtpp_log_close(glog); }
static void ehandler(void) { #ifdef MP_MPATROL_H __mp_leaktable(0, MP_LT_UNFREED, 0); #endif unlink(cmd_sock); unlink(pid_file); rtpp_log_write(RTPP_LOG_INFO, _sig_cf->stable->glog, "rtpproxy ended"); rtpp_log_close(_sig_cf->stable->glog); }
void remove_session(struct cfg *cf, struct rtpp_session *sp) { int i; rtpp_log_write(RTPP_LOG_INFO, sp->log, "RTP stats: %lu in from callee, %lu " "in from caller, %lu relayed, %lu dropped", sp->pcount[0], sp->pcount[1], sp->pcount[2], sp->pcount[3]); rtpp_log_write(RTPP_LOG_INFO, sp->log, "RTCP stats: %lu in from callee, %lu " "in from caller, %lu relayed, %lu dropped", sp->rtcp->pcount[0], sp->rtcp->pcount[1], sp->rtcp->pcount[2], sp->rtcp->pcount[3]); rtpp_log_write(RTPP_LOG_INFO, sp->log, "session on ports %d/%d is cleaned up", sp->ports[0], sp->ports[1]); for (i = 0; i < 2; i++) { if (sp->addr[i] != NULL) free(sp->addr[i]); if (sp->prev_addr[i] != NULL) free(sp->prev_addr[i]); if (sp->rtcp->addr[i] != NULL) free(sp->rtcp->addr[i]); if (sp->rtcp->prev_addr[i] != NULL) free(sp->rtcp->prev_addr[i]); if (sp->fds[i] != -1) { close(sp->fds[i]); assert(cf->sessions[sp->sidx[i]] == sp); cf->sessions[sp->sidx[i]] = NULL; assert(cf->pfds[sp->sidx[i]].fd == sp->fds[i]); cf->pfds[sp->sidx[i]].fd = -1; cf->pfds[sp->sidx[i]].events = 0; } if (sp->rtcp->fds[i] != -1) { close(sp->rtcp->fds[i]); assert(cf->sessions[sp->rtcp->sidx[i]] == sp->rtcp); cf->sessions[sp->rtcp->sidx[i]] = NULL; assert(cf->pfds[sp->rtcp->sidx[i]].fd == sp->rtcp->fds[i]); cf->pfds[sp->rtcp->sidx[i]].fd = -1; cf->pfds[sp->rtcp->sidx[i]].events = 0; } if (sp->rrcs[i] != NULL) rclose(sp, sp->rrcs[i], 1); if (sp->rtcp->rrcs[i] != NULL) rclose(sp, sp->rtcp->rrcs[i], 1); if (sp->rtps[i] != NULL) { cf->rtp_servers[sp->sridx] = NULL; rtp_server_free(sp->rtps[i]); } if (sp->codecs[i] != NULL) free(sp->codecs[i]); if (sp->rtcp->codecs[i] != NULL) free(sp->rtcp->codecs[i]); } if (sp->timeout_data.notify_tag != NULL) free(sp->timeout_data.notify_tag); hash_table_remove(cf, sp); if (sp->call_id != NULL) free(sp->call_id); if (sp->tag != NULL) free(sp->tag); rtpp_log_close(sp->log); free(sp->rtcp); rtp_resizer_free(&sp->resizers[0]); rtp_resizer_free(&sp->resizers[1]); free(sp); cf->sessions_active--; }
void remove_session(struct cfg *cf, struct rtpp_session *sp) { int i; rtpp_log_write(RTPP_LOG_INFO, sp->log, "RTP stats: %lu in from callee, %lu " "in from caller, %lu relayed, %lu dropped", sp->pcount[0], sp->pcount[1], sp->pcount[2], sp->pcount[3]); rtpp_log_write(RTPP_LOG_INFO, sp->log, "RTCP stats: %lu in from callee, %lu " "in from caller, %lu relayed, %lu dropped", sp->rtcp->pcount[0], sp->rtcp->pcount[1], sp->rtcp->pcount[2], sp->rtcp->pcount[3]); rtpp_log_write(RTPP_LOG_INFO, sp->log, "session on ports %d/%d is cleaned up", sp->ports[0], sp->ports[1]); for (i = 0; i < 2; i++) { if (sp->addr[i] != NULL) free(sp->addr[i]); if (sp->prev_addr[i] != NULL) free(sp->prev_addr[i]); if (sp->rtcp->addr[i] != NULL) free(sp->rtcp->addr[i]); if (sp->rtcp->prev_addr[i] != NULL) free(sp->rtcp->prev_addr[i]); //if(sp->stream[i]->bio != NULL) { // BIO_free(sp->stream[i]->bio); //} if (sp->stream[i] != NULL) { rtpp_dtls_free_stream(sp->stream[i]); } if (sp->rtcp->stream[i] != NULL) { rtpp_dtls_free_stream(sp->rtcp->stream[i]); } if (sp->fds[i] != -1) { close(sp->fds[i]); assert(cf->sessions[sp->sidx[i]] == sp); cf->sessions[sp->sidx[i]] = NULL; assert(cf->pfds[sp->sidx[i]].fd == sp->fds[i]); cf->pfds[sp->sidx[i]].fd = -1; cf->pfds[sp->sidx[i]].events = 0; } if (sp->rtcp->fds[i] != -1) { close(sp->rtcp->fds[i]); assert(cf->sessions[sp->rtcp->sidx[i]] == sp->rtcp); cf->sessions[sp->rtcp->sidx[i]] = NULL; assert(cf->pfds[sp->rtcp->sidx[i]].fd == sp->rtcp->fds[i]); cf->pfds[sp->rtcp->sidx[i]].fd = -1; cf->pfds[sp->rtcp->sidx[i]].events = 0; } if (sp->rrcs[i] != NULL) rclose(sp, sp->rrcs[i], 1); if (sp->rtcp->rrcs[i] != NULL) rclose(sp, sp->rtcp->rrcs[i], 1); if (sp->rtps[i] != NULL) { cf->rtp_servers[sp->sridx] = NULL; rtp_server_free(sp->rtps[i]); } if (sp->codecs[i] != NULL) free(sp->codecs[i]); if (sp->rtcp->codecs[i] != NULL) free(sp->rtcp->codecs[i]); if (sp->bridgeBindAddr[i] != NULL) // VLAN Support (FRN4811) free(sp->bridgeBindAddr[i]); if (sp->ice_u[i] != NULL) { if (sp->ice_u[i]->local_user_name != NULL) free(sp->ice_u[i]->local_user_name); if (sp->ice_u[i]->local_password != NULL) free(sp->ice_u[i]->local_password); if (sp->ice_u[i]->remote_user_name != NULL) free(sp->ice_u[i]->remote_user_name); if (sp->ice_u[i]->remote_password != NULL) free(sp->ice_u[i]->remote_password); free(sp->ice_u[i]); } if (sp->ice_candidate_list[i] != NULL) // ICE remote candidate support delete_ice_candidate(sp, i); if (sp->rtcp->ice_candidate_list[i] != NULL) delete_ice_candidate(sp->rtcp, i); if (sp->transcode) rtp_transcoder_free(&sp->trans[i],cf); if (sp->secure) { rtpp_srtp_free_context(&sp->srtp[i]); rtpp_srtp_free_context(&sp->rtcp->srtp[i]); } rtp_resizer_free(&sp->resizers[i]); }// for rtpp_stun_agent_remove(sp); //Remove stun agent Context. remove_session_frm_active_rsz_lst(sp); rtpp_log_write(RTPP_LOG_INFO, sp->log, "timed resizer lists cleaned up"); if (sp->timeout_data.notify_tag != NULL) free(sp->timeout_data.notify_tag); hash_table_remove(cf, sp); if (sp->call_id != NULL) free(sp->call_id); if (sp->tag != NULL) free(sp->tag); rtpp_log_close(sp->log); free(sp->rtcp); free(sp); cf->sessions_active--; }
void remove_session(struct cfg *cf, struct rtpp_session *sp) { int i; double session_time; session_time = getdtime() - sp->init_ts; /* Make sure structure is properly locked */ assert(pthread_mutex_islocked(&cf->glock) == 1); assert(pthread_mutex_islocked(&cf->sessinfo.lock) == 1); rtpp_log_write(RTPP_LOG_INFO, sp->log, "RTP stats: %lu in from callee, %lu " "in from caller, %lu relayed, %lu dropped", sp->pcount[0], sp->pcount[1], sp->pcount[2], sp->pcount[3]); if (sp->pcount[0] == 0 && sp->pcount[1] == 0) { CALL_METHOD(cf->stable->rtpp_stats, updatebyname, "nsess_nortp", 1); } else if (sp->pcount[0] == 0 || sp->pcount[1] == 0) { CALL_METHOD(cf->stable->rtpp_stats, updatebyname, "nsess_owrtp", 1); } rtpp_log_write(RTPP_LOG_INFO, sp->log, "RTCP stats: %lu in from callee, %lu " "in from caller, %lu relayed, %lu dropped", sp->rtcp->pcount[0], sp->rtcp->pcount[1], sp->rtcp->pcount[2], sp->rtcp->pcount[3]); if (sp->rtcp->pcount[0] == 0 && sp->rtcp->pcount[1] == 0) { CALL_METHOD(cf->stable->rtpp_stats, updatebyname, "nsess_nortcp", 1); } else if (sp->rtcp->pcount[0] == 0 || sp->rtcp->pcount[1] == 0) { CALL_METHOD(cf->stable->rtpp_stats, updatebyname, "nsess_owrtcp", 1); } rtpp_log_write(RTPP_LOG_INFO, sp->log, "session on ports %d/%d is cleaned up", sp->ports[0], sp->ports[1]); for (i = 0; i < 2; i++) { if (sp->addr[i] != NULL) free(sp->addr[i]); if (sp->prev_addr[i] != NULL) free(sp->prev_addr[i]); if (sp->rtcp->addr[i] != NULL) free(sp->rtcp->addr[i]); if (sp->rtcp->prev_addr[i] != NULL) free(sp->rtcp->prev_addr[i]); if (sp->fds[i] != -1) { shutdown(sp->fds[i], SHUT_RDWR); close(sp->fds[i]); assert(cf->sessinfo.sessions[sp->sidx[i]] == sp); cf->sessinfo.sessions[sp->sidx[i]] = NULL; assert(cf->sessinfo.pfds_rtp[sp->sidx[i]].fd == sp->fds[i]); cf->sessinfo.pfds_rtp[sp->sidx[i]].fd = -1; cf->sessinfo.pfds_rtp[sp->sidx[i]].events = 0; } if (sp->rtcp->fds[i] != -1) { shutdown(sp->rtcp->fds[i], SHUT_RDWR); close(sp->rtcp->fds[i]); assert(cf->sessinfo.pfds_rtcp[sp->rtcp->sidx[i]].fd == sp->rtcp->fds[i]); cf->sessinfo.pfds_rtcp[sp->rtcp->sidx[i]].fd = -1; cf->sessinfo.pfds_rtcp[sp->rtcp->sidx[i]].events = 0; } if (sp->rrcs[i] != NULL) { rclose(sp, sp->rrcs[i], 1); if (sp->record_single_file != 0) { sp->rtcp->rrcs[i] = NULL; sp->rrcs[NOT(i)] = NULL; sp->rtcp->rrcs[NOT(i)] = NULL; } } if (sp->rtcp->rrcs[i] != NULL) rclose(sp, sp->rtcp->rrcs[i], 1); if (sp->rtps[i] != NULL) { cf->rtp_servers[sp->sridx] = NULL; rtp_server_free(sp->rtps[i]); } if (sp->codecs[i] != NULL) free(sp->codecs[i]); if (sp->rtcp->codecs[i] != NULL) free(sp->rtcp->codecs[i]); if (sp->resizers[i] != NULL) rtp_resizer_free(sp->resizers[i]); } if (sp->timeout_data.notify_tag != NULL) free(sp->timeout_data.notify_tag); if (sp->hte != NULL) CALL_METHOD(cf->stable->sessions_ht, remove, sp->call_id, sp->hte); if (sp->call_id != NULL) free(sp->call_id); if (sp->tag != NULL) free(sp->tag); if (sp->tag_nomedianum != NULL) free(sp->tag_nomedianum); rtpp_log_close(sp->log); free(sp->rtcp); free(sp); cf->sessions_active--; CALL_METHOD(cf->stable->rtpp_stats, updatebyname, "nsess_destroyed", 1); CALL_METHOD(cf->stable->rtpp_stats, updatebyname_d, "total_duration", session_time); }