Author: coreyfarrell Date: Thu Mar 12 20:12:35 2015 New Revision: 432834 URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=432834 Log: Logger: Convert 'struct ast_callid' to unsigned int.
Switch logger callid's from AO2 objects to simple integers. This helps in two ways. Copying integers is faster than referencing AO2 objects, so this will result in a small reduction in logger overhead. This also erases the possibility of an infinate loop caused by an invalid callid in threadstorage. ASTERISK-24833 #comment Committed callid conversion to trunk. Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/4466/ Modified: trunk/UPGRADE.txt trunk/apps/app_mixmonitor.c trunk/apps/confbridge/conf_chan_announce.c trunk/channels/chan_bridge_media.c trunk/channels/chan_dahdi.c trunk/channels/chan_iax2.c trunk/channels/chan_motif.c trunk/channels/chan_sip.c trunk/channels/sig_analog.c trunk/channels/sig_pri.c trunk/channels/sig_ss7.c trunk/channels/sip/dialplan_functions.c trunk/channels/sip/include/dialog.h trunk/channels/sip/include/sip.h trunk/include/asterisk/bridge.h trunk/include/asterisk/bridge_channel.h trunk/include/asterisk/channel.h trunk/include/asterisk/core_unreal.h trunk/include/asterisk/logger.h trunk/main/autoservice.c trunk/main/bridge.c trunk/main/bridge_basic.c trunk/main/bridge_channel.c trunk/main/channel.c trunk/main/channel_internal_api.c trunk/main/cli.c trunk/main/core_local.c trunk/main/core_unreal.c trunk/main/dial.c trunk/main/features.c trunk/main/logger.c trunk/main/pbx.c trunk/res/ari/resource_bridges.c Modified: trunk/UPGRADE.txt URL: http://svnview.digium.com/svn/asterisk/trunk/UPGRADE.txt?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/UPGRADE.txt (original) +++ trunk/UPGRADE.txt Thu Mar 12 20:12:35 2015 @@ -31,5 +31,11 @@ ring-ring-ring pattern would exceed the pattern limits and stop Caller-ID detection. +Core: + +Logging: + - The first callid created is now 1 instead of 0. The value 0 + is now reserved to represent a lack of callid. + =========================================================== =========================================================== Modified: trunk/apps/app_mixmonitor.c URL: http://svnview.digium.com/svn/asterisk/trunk/apps/app_mixmonitor.c?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/apps/app_mixmonitor.c (original) +++ trunk/apps/app_mixmonitor.c Thu Mar 12 20:12:35 2015 @@ -295,12 +295,12 @@ struct mixmonitor { struct ast_audiohook audiohook; - struct ast_callid *callid; char *filename; char *filename_read; char *filename_write; char *post_process; char *name; + ast_callid callid; unsigned int flags; struct ast_autochan *autochan; struct mixmonitor_ds *mixmonitor_ds; @@ -545,9 +545,6 @@ /* clean stringfields */ ast_string_field_free_memory(mixmonitor); - if (mixmonitor->callid) { - ast_callid_unref(mixmonitor->callid); - } ast_free(mixmonitor); } } Modified: trunk/apps/confbridge/conf_chan_announce.c URL: http://svnview.digium.com/svn/asterisk/trunk/apps/confbridge/conf_chan_announce.c?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/apps/confbridge/conf_chan_announce.c (original) +++ trunk/apps/confbridge/conf_chan_announce.c Thu Mar 12 20:12:35 2015 @@ -103,7 +103,7 @@ ao2_ref(pvt->bridge, +1); chan = ast_unreal_new_channels(&pvt->base, conf_announce_get_tech(), - AST_STATE_UP, AST_STATE_UP, NULL, NULL, assignedids, requestor, NULL); + AST_STATE_UP, AST_STATE_UP, NULL, NULL, assignedids, requestor, 0); if (chan) { ast_answer(pvt->base.owner); ast_answer(pvt->base.chan); Modified: trunk/channels/chan_bridge_media.c URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_bridge_media.c?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/channels/chan_bridge_media.c (original) +++ trunk/channels/chan_bridge_media.c Thu Mar 12 20:12:35 2015 @@ -118,8 +118,8 @@ const struct ast_channel *requestor, const char *data, struct ast_channel_tech *tech, const char *role) { struct ast_channel *chan; - - RAII_VAR(struct ast_callid *, callid, NULL, ast_callid_cleanup); + ast_callid callid; + RAII_VAR(struct ast_unreal_pvt *, pvt, NULL, ao2_cleanup); if (!(pvt = ast_unreal_alloc(sizeof(*pvt), ast_unreal_destructor, cap))) { Modified: trunk/channels/chan_dahdi.c URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_dahdi.c?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/channels/chan_dahdi.c (original) +++ trunk/channels/chan_dahdi.c Thu Mar 12 20:12:35 2015 @@ -2232,13 +2232,13 @@ * * \param callid_created value returned from ast_callid_threadstorage_auto() */ -static struct ast_channel *dahdi_new_callid_clean(struct dahdi_pvt *i, int state, int startpbx, int idx, int law, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, struct ast_callid *callid, int callid_created); - -static struct ast_channel *dahdi_new(struct dahdi_pvt *i, int state, int startpbx, int idx, int law, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, struct ast_callid *callid); +static struct ast_channel *dahdi_new_callid_clean(struct dahdi_pvt *i, int state, int startpbx, int idx, int law, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, ast_callid callid, int callid_created); + +static struct ast_channel *dahdi_new(struct dahdi_pvt *i, int state, int startpbx, int idx, int law, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, ast_callid callid); static struct ast_channel *my_new_analog_ast_channel(void *pvt, int state, int startpbx, enum analog_sub sub, const struct ast_channel *requestor) { - struct ast_callid *callid = NULL; + ast_callid callid = 0; int callid_created = ast_callid_threadstorage_auto(&callid); struct dahdi_pvt *p = pvt; int dsub = analogsub_to_dahdisub(sub); @@ -2265,7 +2265,7 @@ struct dahdi_pvt *p = pvt; int audio; int newlaw = -1; - struct ast_callid *callid = NULL; + ast_callid callid = 0; int callid_created = ast_callid_threadstorage_auto(&callid); switch (p->sig) { @@ -3193,7 +3193,7 @@ struct dahdi_pvt *p = pvt; int audio; int newlaw; - struct ast_callid *callid = NULL; + ast_callid callid = 0; int callid_created = ast_callid_threadstorage_auto(&callid); /* Set to audio mode at this point */ @@ -3677,7 +3677,7 @@ { struct dahdi_pvt *p; struct ast_channel *c; - struct ast_callid *callid = NULL; + ast_callid callid = 0; int callid_created = ast_callid_threadstorage_auto(&callid); ast_verbose("MFC/R2 call offered on chan %d. ANI = %s, DNIS = %s, Category = %s\n", openr2_chan_get_number(r2chan), ani ? ani : "(restricted)", dnis, @@ -3746,7 +3746,7 @@ { struct dahdi_pvt *p = NULL; struct ast_channel *c = NULL; - struct ast_callid *callid = NULL; + ast_callid callid = 0; int callid_created = ast_callid_threadstorage_auto(&callid); p = openr2_chan_get_client_data(r2chan); dahdi_ec_enable(p); @@ -7901,7 +7901,7 @@ p->subs[SUB_REAL].needflash = 1; goto winkflashdone; } else if (!check_for_conference(p)) { - struct ast_callid *callid = NULL; + ast_callid callid = 0; int callid_created; char cid_num[256]; char cid_name[256]; @@ -9013,7 +9013,7 @@ return chan_name; } -static struct ast_channel *dahdi_new_callid_clean(struct dahdi_pvt *i, int state, int startpbx, int idx, int law, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, struct ast_callid *callid, int callid_created) +static struct ast_channel *dahdi_new_callid_clean(struct dahdi_pvt *i, int state, int startpbx, int idx, int law, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, ast_callid callid, int callid_created) { struct ast_channel *new_channel = dahdi_new(i, state, startpbx, idx, law, assignedids, requestor, callid); @@ -9022,7 +9022,7 @@ return new_channel; } -static struct ast_channel *dahdi_new(struct dahdi_pvt *i, int state, int startpbx, int idx, int law, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, struct ast_callid *callid) +static struct ast_channel *dahdi_new(struct dahdi_pvt *i, int state, int startpbx, int idx, int law, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, ast_callid callid) { struct ast_channel *tmp; struct ast_format_cap *caps; @@ -10620,7 +10620,7 @@ if (i & DAHDI_IOMUX_SIGEVENT) { struct ast_channel *chan; - struct ast_callid *callid = NULL; + ast_callid callid = 0; int callid_created; /* If we get an event, screen out events that we do not act on. @@ -11054,7 +11054,7 @@ int res; pthread_t threadid; struct ast_channel *chan; - struct ast_callid *callid = NULL; + ast_callid callid = 0; int callid_created; /* Handle an event on a given channel for the monitor thread. */ @@ -11540,7 +11540,7 @@ doomed = analog_handle_init_event(i->sig_pvt, ANALOG_EVENT_DTMFCID); i->dtmfcid_holdoff_state = 1; } else { - struct ast_callid *callid = NULL; + ast_callid callid = 0; int callid_created = ast_callid_threadstorage_auto(&callid); chan = dahdi_new(i, AST_STATE_PRERING, 0, SUB_REAL, 0, NULL, NULL, callid); if (!chan) { @@ -13342,7 +13342,7 @@ int transcapdigital = 0; #endif /* defined(HAVE_PRI) || defined(HAVE_SS7) */ struct dahdi_starting_point start; - struct ast_callid *callid = NULL; + ast_callid callid = 0; int callid_created = ast_callid_threadstorage_auto(&callid); ast_mutex_lock(&iflock); @@ -13664,12 +13664,12 @@ if (ss7) { for (i = 0; i < NUM_SPANS; i++) { if (linksets[i].ss7.ss7 == ss7) { - ast_verbose_callid(NULL, "[%d] %s", i + 1, s); + ast_verbose_callid(0, "[%d] %s", i + 1, s); return; } } } - ast_verbose_callid(NULL, "%s", s); + ast_verbose_callid(0, "%s", s); } #endif /* defined(HAVE_SS7) */ @@ -13681,12 +13681,12 @@ if (ss7) { for (i = 0; i < NUM_SPANS; i++) { if (linksets[i].ss7.ss7 == ss7) { - ast_log_callid(LOG_ERROR, NULL, "[%d] %s", i + 1, s); + ast_log_callid(LOG_ERROR, 0, "[%d] %s", i + 1, s); return; } } } - ast_log_callid(LOG_ERROR, NULL, "%s", s); + ast_log_callid(LOG_ERROR, 0, "%s", s); } #endif /* defined(HAVE_SS7) */ @@ -13796,22 +13796,22 @@ } if (-1 < span) { if (1 < dchancount) { - ast_verbose_callid(NULL, "[PRI Span: %d D-Channel: %d] %s", span + 1, dchan, s); + ast_verbose_callid(0, "[PRI Span: %d D-Channel: %d] %s", span + 1, dchan, s); } else { - ast_verbose_callid(NULL, "PRI Span: %d %s", span + 1, s); + ast_verbose_callid(0, "PRI Span: %d %s", span + 1, s); } } else { - ast_verbose_callid(NULL, "PRI Span: ? %s", s); + ast_verbose_callid(0, "PRI Span: ? %s", s); } } else { - ast_verbose_callid(NULL, "PRI Span: ? %s", s); + ast_verbose_callid(0, "PRI Span: ? %s", s); } ast_mutex_lock(&pridebugfdlock); if (pridebugfd >= 0) { if (write(pridebugfd, s, strlen(s)) < 0) { - ast_log_callid(LOG_WARNING, NULL, "write() failed: %s\n", strerror(errno)); + ast_log_callid(LOG_WARNING, 0, "write() failed: %s\n", strerror(errno)); } } @@ -13847,22 +13847,22 @@ } if (-1 < span) { if (1 < dchancount) { - ast_log_callid(LOG_ERROR, NULL, "[PRI Span: %d D-Channel: %d] %s", span + 1, dchan, s); + ast_log_callid(LOG_ERROR, 0, "[PRI Span: %d D-Channel: %d] %s", span + 1, dchan, s); } else { - ast_log_callid(LOG_ERROR, NULL, "PRI Span: %d %s", span + 1, s); + ast_log_callid(LOG_ERROR, 0, "PRI Span: %d %s", span + 1, s); } } else { - ast_log_callid(LOG_ERROR, NULL, "PRI Span: ? %s", s); + ast_log_callid(LOG_ERROR, 0, "PRI Span: ? %s", s); } } else { - ast_log_callid(LOG_ERROR, NULL, "PRI Span: ? %s", s); + ast_log_callid(LOG_ERROR, 0, "PRI Span: ? %s", s); } ast_mutex_lock(&pridebugfdlock); if (pridebugfd >= 0) { if (write(pridebugfd, s, strlen(s)) < 0) { - ast_log_callid(LOG_WARNING, NULL, "write() failed: %s\n", strerror(errno)); + ast_log_callid(LOG_WARNING, 0, "write() failed: %s\n", strerror(errno)); } } Modified: trunk/channels/chan_iax2.c URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_iax2.c?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/channels/chan_iax2.c (original) +++ trunk/channels/chan_iax2.c Thu Mar 12 20:12:35 2015 @@ -683,7 +683,7 @@ /*! Socket to send/receive on for this call */ int sockfd; /*! ast_callid bound to dialog */ - struct ast_callid *callid; + ast_callid callid; /*! Last received voice format */ iax2_format voiceformat; /*! Last received video format */ @@ -1107,30 +1107,22 @@ */ static struct chan_iax2_pvt *iaxs[IAX_MAX_CALLS]; -static struct ast_callid *iax_pvt_callid_get(int callno) -{ - if (iaxs[callno]->callid) { - return ast_callid_ref(iaxs[callno]->callid); - } - return NULL; -} - -static void iax_pvt_callid_set(int callno, struct ast_callid *callid) -{ - if (iaxs[callno]->callid) { - ast_callid_unref(iaxs[callno]->callid); - } - ast_callid_ref(callid); +static ast_callid iax_pvt_callid_get(int callno) +{ + return iaxs[callno]->callid; +} + +static void iax_pvt_callid_set(int callno, ast_callid callid) +{ iaxs[callno]->callid = callid; } static void iax_pvt_callid_new(int callno) { - struct ast_callid *callid = ast_create_callid(); + ast_callid callid = ast_create_callid(); char buffer[AST_CALLID_BUFFER_LENGTH]; ast_callid_strnprint(buffer, sizeof(buffer), callid); iax_pvt_callid_set(callno, callid); - ast_callid_unref(callid); } /*! @@ -2204,11 +2196,6 @@ jb_destroy(pvt->jb); ast_string_field_free_memory(pvt); } - - if (pvt->callid) { - ast_callid_unref(pvt->callid); - } - } static struct chan_iax2_pvt *new_iax(struct ast_sockaddr *addr, const char *host) @@ -5797,7 +5784,7 @@ struct ast_variable *v = NULL; struct ast_format_cap *native; struct ast_format *tmpfmt; - struct ast_callid *callid; + ast_callid callid; char *peer_name = NULL; if (!(i = iaxs[callno])) { @@ -10218,12 +10205,11 @@ } if (fr->callno > 0) { - struct ast_callid *mount_callid; + ast_callid mount_callid; ast_mutex_lock(&iaxsl[fr->callno]); if (iaxs[fr->callno] && ((mount_callid = iax_pvt_callid_get(fr->callno)))) { /* Bind to thread */ ast_callid_threadassoc_add(mount_callid); - ast_callid_unref(mount_callid); } } @@ -11920,11 +11906,9 @@ static int socket_process(struct iax2_thread *thread) { - struct ast_callid *callid; int res = socket_process_helper(thread); - if ((callid = ast_read_threadstorage_callid())) { + if (ast_read_threadstorage_callid()) { ast_callid_threadassoc_remove(); - callid = ast_callid_unref(callid); } return res; } @@ -12405,7 +12389,7 @@ struct parsed_dial_string pds; struct create_addr_info cai; char *tmpstr; - struct ast_callid *callid; + ast_callid callid; memset(&pds, 0, sizeof(pds)); tmpstr = ast_strdupa(data); @@ -12508,9 +12492,6 @@ ao2_ref(format, -1); } - if (callid) { - ast_callid_unref(callid); - } return c; } Modified: trunk/channels/chan_motif.c URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_motif.c?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/channels/chan_motif.c (original) +++ trunk/channels/chan_motif.c Thu Mar 12 20:12:35 2015 @@ -317,7 +317,7 @@ struct ast_format_cap *peercap; /*!< Peer codec capabilities */ unsigned int outgoing:1; /*!< Whether this is an outgoing leg or not */ unsigned int gone:1; /*!< In the eyes of Jingle this session is already gone */ - struct ast_callid *callid; /*!< Bound session call-id */ + ast_callid callid; /*!< Bound session call-id */ }; static const char desc[] = "Motif Jingle Channel"; @@ -585,10 +585,6 @@ ao2_cleanup(session->jointcap); ao2_cleanup(session->peercap); - if (session->callid) { - ast_callid_unref(session->callid); - } - ast_string_field_free_memory(session); } @@ -704,7 +700,7 @@ static struct jingle_session *jingle_alloc(struct jingle_endpoint *endpoint, const char *from, const char *sid) { struct jingle_session *session; - struct ast_callid *callid; + ast_callid callid; struct ast_sockaddr tmp; if (!(session = ao2_alloc(sizeof(*session), jingle_session_destructor))) { Modified: trunk/channels/chan_sip.c URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_sip.c?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/channels/chan_sip.c (original) +++ trunk/channels/chan_sip.c Thu Mar 12 20:12:35 2015 @@ -2039,7 +2039,7 @@ return -1; } - if (!(monitor_instance->subscription_pvt = sip_alloc(NULL, NULL, 0, SIP_SUBSCRIBE, NULL, NULL))) { + if (!(monitor_instance->subscription_pvt = sip_alloc(NULL, NULL, 0, SIP_SUBSCRIBE, NULL, 0))) { return -1; } @@ -6574,11 +6574,6 @@ if (p->last_device_state_info) { ao2_ref(p->last_device_state_info, -1); p->last_device_state_info = NULL; - } - - /* Lastly, kill the callid associated with the pvt */ - if (p->logger_callid) { - ast_callid_unref(p->logger_callid); } } @@ -7886,7 +7881,7 @@ * * \return New ast_channel locked. */ -static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *title, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, struct ast_callid *callid) +static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *title, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, ast_callid callid) { struct ast_format_cap *caps; struct ast_channel *tmp; @@ -8640,12 +8635,8 @@ return p->stimer; } -static void sip_pvt_callid_set(struct sip_pvt *pvt, struct ast_callid *callid) -{ - if (pvt->logger_callid) { - ast_callid_unref(pvt->logger_callid); - } - ast_callid_ref(callid); +static void sip_pvt_callid_set(struct sip_pvt *pvt, ast_callid callid) +{ pvt->logger_callid = callid; } @@ -8654,7 +8645,7 @@ * remember to release the reference. */ struct sip_pvt *sip_alloc(ast_string_field callid, struct ast_sockaddr *addr, - int useglobal_nat, const int intended_method, struct sip_request *req, struct ast_callid *logger_callid) + int useglobal_nat, const int intended_method, struct sip_request *req, ast_callid logger_callid) { struct sip_pvt *p; @@ -9043,20 +9034,14 @@ { struct sip_pvt *p; const char *callid; - struct ast_callid *logger_callid; + ast_callid logger_callid; sip_pvt_lock(original); callid = ast_strdupa(original->callid); logger_callid = original->logger_callid; - if (logger_callid) { - ast_callid_ref(logger_callid); - } sip_pvt_unlock(original); p = sip_alloc(callid, addr, 1, SIP_INVITE, req, logger_callid); - if (logger_callid) { - ast_callid_unref(logger_callid); - } if (!p) { return; /* alloc error */ } @@ -9339,7 +9324,7 @@ /* See if the method is capable of creating a dialog */ if (sip_methods[intended_method].can_create == CAN_CREATE_DIALOG) { struct sip_pvt *p = NULL; - struct ast_callid *logger_callid = NULL; + ast_callid logger_callid = 0; if (intended_method == SIP_INVITE) { logger_callid = ast_create_callid(); @@ -9357,10 +9342,6 @@ */ transmit_response_using_temp(callid, addr, 1, intended_method, req, "500 Server internal error"); ast_debug(4, "Failed allocating SIP dialog, sending 500 Server internal error and giving up\n"); - } - /* If we created an ast_callid for an invite, we need to free it now. */ - if (logger_callid) { - ast_callid_unref(logger_callid); } return p; /* can be NULL */ } else if( sip_methods[intended_method].can_create == CAN_CREATE_DIALOG_UNSUPPORTED_METHOD) { @@ -14229,7 +14210,7 @@ epa_entry->publish_type = publish_type; - if (!(pvt = sip_alloc(NULL, NULL, 0, SIP_PUBLISH, NULL, NULL))) { + if (!(pvt = sip_alloc(NULL, NULL, 0, SIP_PUBLISH, NULL, 0))) { return -1; } @@ -14532,7 +14513,7 @@ } /* Create a dialog that we will use for the subscription */ - if (!(mwi->call = sip_alloc(NULL, NULL, 0, SIP_SUBSCRIBE, NULL, NULL))) { + if (!(mwi->call = sip_alloc(NULL, NULL, 0, SIP_SUBSCRIBE, NULL, 0))) { return -1; } @@ -15111,7 +15092,7 @@ channame += 4; } - if (!(p = sip_alloc(NULL, NULL, 0, SIP_NOTIFY, NULL, NULL))) { + if (!(p = sip_alloc(NULL, NULL, 0, SIP_NOTIFY, NULL, 0))) { astman_send_error(s, m, "Unable to build sip pvt data for notify (memory/socket error)"); return 0; } @@ -15436,7 +15417,7 @@ r->callid_valid = TRUE; } /* Allocate SIP dialog for registration */ - if (!(p = sip_alloc( r->callid, NULL, 0, SIP_REGISTER, NULL, NULL))) { + if (!(p = sip_alloc( r->callid, NULL, 0, SIP_REGISTER, NULL, 0))) { ast_log(LOG_WARNING, "Unable to allocate registration transaction (memory or socket error)\n"); return 0; } @@ -22018,7 +21999,7 @@ char buf[512]; struct ast_variable *header, *var; - if (!(p = sip_alloc(NULL, NULL, 0, SIP_NOTIFY, NULL, NULL))) { + if (!(p = sip_alloc(NULL, NULL, 0, SIP_NOTIFY, NULL, 0))) { ast_log(LOG_WARNING, "Unable to build sip pvt data for notify (memory/socket error)\n"); return CLI_FAILURE; } @@ -26757,7 +26738,7 @@ struct ast_msg_var_iterator *iter; struct sip_peer *peer_ptr; - if (!(pvt = sip_alloc(NULL, NULL, 0, SIP_MESSAGE, NULL, NULL))) { + if (!(pvt = sip_alloc(NULL, NULL, 0, SIP_MESSAGE, NULL, 0))) { return -1; } @@ -28658,7 +28639,7 @@ } else { ao2_unlock(peer); /* Build temporary dialog for this message */ - if (!(p = sip_alloc(NULL, NULL, 0, SIP_NOTIFY, NULL, NULL))) { + if (!(p = sip_alloc(NULL, NULL, 0, SIP_NOTIFY, NULL, 0))) { update_peer_lastmsgssent(peer, -1, 0); return -1; } @@ -29431,7 +29412,7 @@ peer->call = dialog_unref(peer->call, "unref dialog peer->call"); /* peer->call = sip_destroy(peer->call); */ } - if (!(p = sip_alloc(NULL, NULL, 0, SIP_OPTIONS, NULL, NULL))) { + if (!(p = sip_alloc(NULL, NULL, 0, SIP_OPTIONS, NULL, 0))) { return -1; } peer->call = dialog_ref(p, "copy sip alloc from p to peer->call"); @@ -29631,7 +29612,7 @@ char dialstring[256]; char *remote_address; enum ast_transport transport = 0; - struct ast_callid *callid; + ast_callid callid; AST_DECLARE_APP_ARGS(args, AST_APP_ARG(peerorhost); AST_APP_ARG(exten); @@ -29664,9 +29645,6 @@ if (!(p = sip_alloc(NULL, NULL, 0, SIP_INVITE, NULL, callid))) { ast_log(LOG_ERROR, "Unable to build sip pvt data for '%s' (Out of memory or socket error)\n", dest); *cause = AST_CAUSE_SWITCH_CONGESTION; - if (callid) { - ast_callid_unref(callid); - } return NULL; } @@ -29681,9 +29659,6 @@ /* sip_destroy(p); */ ast_log(LOG_ERROR, "Unable to build option SIP data structure - Out of memory\n"); *cause = AST_CAUSE_SWITCH_CONGESTION; - if (callid) { - ast_callid_unref(callid); - } return NULL; } @@ -29765,9 +29740,6 @@ dialog_unlink_all(p); dialog_unref(p, "unref dialog p UNREGISTERED"); /* sip_destroy(p); */ - if (callid) { - ast_callid_unref(callid); - } return NULL; } if (ast_strlen_zero(p->peername) && ext) @@ -29828,9 +29800,6 @@ sip_pvt_lock(p); tmpc = sip_new(p, AST_STATE_DOWN, host, assignedids, requestor, callid); /* Place the call */ - if (callid) { - callid = ast_callid_unref(callid); - } sip_pvt_unlock(p); if (!tmpc) { Modified: trunk/channels/sig_analog.c URL: http://svnview.digium.com/svn/asterisk/trunk/channels/sig_analog.c?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/channels/sig_analog.c (original) +++ trunk/channels/sig_analog.c Thu Mar 12 20:12:35 2015 @@ -1715,7 +1715,7 @@ int len = 0; int res; int idx; - struct ast_callid *callid; + ast_callid callid; RAII_VAR(struct ast_features_pickup_config *, pickup_cfg, NULL, ao2_cleanup); const char *pickupexten; @@ -1730,7 +1730,6 @@ if ((callid = ast_channel_callid(chan))) { ast_callid_threadassoc_add(callid); - ast_callid_unref(callid); } /* in the bizarre case where the channel has become a zombie before we @@ -3194,7 +3193,7 @@ ast_queue_control(p->subs[ANALOG_SUB_REAL].owner, AST_CONTROL_FLASH); goto winkflashdone; } else if (!analog_check_for_conference(p)) { - struct ast_callid *callid = NULL; + ast_callid callid = 0; int callid_created; char cid_num[256]; char cid_name[256]; @@ -3657,7 +3656,7 @@ int res; pthread_t threadid; struct ast_channel *chan; - struct ast_callid *callid = NULL; + ast_callid callid = 0; int callid_created; ast_debug(1, "channel (%d) - signaling (%d) - event (%s)\n", Modified: trunk/channels/sig_pri.c URL: http://svnview.digium.com/svn/asterisk/trunk/channels/sig_pri.c?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/channels/sig_pri.c (original) +++ trunk/channels/sig_pri.c Thu Mar 12 20:12:35 2015 @@ -2030,11 +2030,10 @@ int timeout_ms = 30000; int ms; struct timeval start; - struct ast_callid *callid; + ast_callid callid; if ((callid = ast_channel_callid(chan))) { ast_callid_threadassoc_add(callid); - callid = ast_callid_unref(callid); } ast_verb(3, "Initiating idle call on channel %s\n", ast_channel_name(chan)); @@ -2089,7 +2088,7 @@ int res; int len; int timeout; - struct ast_callid *callid; + ast_callid callid; if (!chan) { /* We lost the owner before we could get started. */ @@ -2098,7 +2097,6 @@ if ((callid = ast_channel_callid(chan))) { ast_callid_threadassoc_add(callid); - ast_callid_unref(callid); } /* @@ -5369,13 +5367,12 @@ * \internal * \brief Set callid threadstorage for the pri_dchannel thread when a new call is created * - * \return A new callid which has been bound to threadstorage. The return must be - * unreffed and the threadstorage should be unbound when the pri_dchannel - * primary loop wraps. - */ -static struct ast_callid *func_pri_dchannel_new_callid(void) -{ - struct ast_callid *callid = ast_create_callid(); + * \return A new callid which has been bound to threadstorage. The threadstorage + * should be unbound when the pri_dchannel primary loop wraps. + */ +static ast_callid func_pri_dchannel_new_callid(void) +{ + ast_callid callid = ast_create_callid(); if (callid) { ast_callid_threadassoc_add(callid); @@ -5394,20 +5391,18 @@ * \note Assumes the pri->lock is already obtained. * \note Assumes the sig_pri_lock_private(pri->pvts[chanpos]) is already obtained. * - * \return a reference to the callid bound to the channel which has also - * been bound to threadstorage if it exists. If this returns non-NULL, - * the callid must be unreffed and the threadstorage should be unbound - * when the pri_dchannel primary loop wraps. - */ -static struct ast_callid *func_pri_dchannel_chanpos_callid(struct sig_pri_span *pri, int chanpos) + * \return The callid which has also been bound to threadstorage if it exists. + * The threadstorage should be unbound when the pri_dchannel primary loop wraps. + */ +static ast_callid func_pri_dchannel_chanpos_callid(struct sig_pri_span *pri, int chanpos) { if (chanpos < 0) { - return NULL; + return 0; } sig_pri_lock_owner(pri, chanpos); if (pri->pvts[chanpos]->owner) { - struct ast_callid *callid; + ast_callid callid; callid = ast_channel_callid(pri->pvts[chanpos]->owner); ast_channel_unlock(pri->pvts[chanpos]->owner); if (callid) { @@ -5416,7 +5411,7 @@ } } - return NULL; + return 0; } #if defined(HAVE_PRI_CALL_HOLD) @@ -5439,7 +5434,7 @@ int chanpos_old; int chanpos_new; struct ast_channel *owner; - struct ast_callid *callid = NULL; + ast_callid callid = 0; chanpos_old = pri_find_principle_by_call(pri, ev->hold.call); if (chanpos_old < 0) { @@ -5499,7 +5494,6 @@ } if (callid) { - ast_callid_unref(callid); ast_callid_threadassoc_remove(); } @@ -5523,7 +5517,7 @@ static void sig_pri_handle_hold_ack(struct sig_pri_span *pri, pri_event *ev) { int chanpos; - struct ast_callid *callid; + ast_callid callid; /* * We were successfully put on hold by the remote party @@ -5555,7 +5549,6 @@ sig_pri_span_devstate_changed(pri); if (callid) { - ast_callid_unref(callid); ast_callid_threadassoc_remove(); } } @@ -5577,7 +5570,7 @@ static void sig_pri_handle_hold_rej(struct sig_pri_span *pri, pri_event *ev) { int chanpos; - struct ast_callid *callid; + ast_callid callid; chanpos = pri_find_principle(pri, ev->hold_rej.channel, ev->hold_rej.call); if (chanpos < 0) { @@ -5605,7 +5598,6 @@ sig_pri_unlock_private(pri->pvts[chanpos]); if (callid) { - ast_callid_unref(callid); ast_callid_threadassoc_remove(); } } @@ -5627,7 +5619,7 @@ static void sig_pri_handle_retrieve(struct sig_pri_span *pri, pri_event *ev) { int chanpos; - struct ast_callid *callid; + ast_callid callid; if (!(ev->retrieve.channel & PRI_HELD_CALL)) { /* The call is not currently held. */ @@ -5680,7 +5672,6 @@ sig_pri_span_devstate_changed(pri); if (callid) { - ast_callid_unref(callid); ast_callid_threadassoc_remove(); } } @@ -5702,7 +5693,7 @@ static void sig_pri_handle_retrieve_ack(struct sig_pri_span *pri, pri_event *ev) { int chanpos; - struct ast_callid *callid; + ast_callid callid; chanpos = pri_find_fixup_principle(pri, ev->retrieve_ack.channel, ev->retrieve_ack.call); @@ -5721,7 +5712,6 @@ sig_pri_span_devstate_changed(pri); if (callid) { - ast_callid_unref(callid); ast_callid_threadassoc_remove(); } } @@ -5743,7 +5733,7 @@ static void sig_pri_handle_retrieve_rej(struct sig_pri_span *pri, pri_event *ev) { int chanpos; - struct ast_callid *callid; + ast_callid callid; chanpos = pri_find_principle(pri, ev->retrieve_rej.channel, ev->retrieve_rej.call); if (chanpos < 0) { @@ -5772,7 +5762,6 @@ sig_pri_unlock_private(pri->pvts[chanpos]); if (callid) { - ast_callid_unref(callid); ast_callid_threadassoc_remove(); } } @@ -5892,7 +5881,7 @@ int need_dialtone; enum sig_pri_law law; int chanpos = -1; - struct ast_callid *callid = NULL; + ast_callid callid = 0; struct ast_channel *c; char plancallingnum[AST_MAX_EXTENSION]; char plancallingani[AST_MAX_EXTENSION]; @@ -6246,7 +6235,6 @@ setup_exit:; if (callid) { - ast_callid_unref(callid); ast_callid_threadassoc_remove(); } } @@ -6294,7 +6282,7 @@ ast_log(LOG_WARNING, "Idle dial string '%s' lacks '@context'\n", pri->idleext); } for (;;) { - struct ast_callid *callid = NULL; + ast_callid callid = 0; for (i = 0; i < SIG_PRI_NUM_DCHANS; i++) { if (!pri->dchans[i]) @@ -7651,9 +7639,8 @@ break; } - /* If a callid was set, we need to deref it and remove it from thread storage. */ + /* If a callid was set, we need to remove it from thread storage. */ if (callid) { - callid = ast_callid_unref(callid); ast_callid_threadassoc_remove(); } } Modified: trunk/channels/sig_ss7.c URL: http://svnview.digium.com/svn/asterisk/trunk/channels/sig_ss7.c?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/channels/sig_ss7.c (original) +++ trunk/channels/sig_ss7.c Thu Mar 12 20:12:35 2015 @@ -976,7 +976,7 @@ struct ast_channel *c; char tmp[256]; char *strp; - struct ast_callid *callid = NULL; + ast_callid callid = 0; int callid_created = ast_callid_threadstorage_auto(&callid); if (!(linkset->flags & LINKSET_FLAG_EXPLICITACM)) { @@ -1315,14 +1315,13 @@ * \note Assumes the ss7->lock is already obtained. * \note Assumes the sig_ss7_lock_private(ss7->pvts[chanpos]) is already obtained. * - * \return a reference to the callid bound to the channel which has also - * been bound to threadstorage if it exists. If this returns non-NULL, - * the callid must be unreffed and the threadstorage should be unbound + * \return The callid bound to the channel which has also been bound to threadstorage + * if it exists. If this returns non-zero, the threadstorage should be unbound * before the while loop wraps in ss7_linkset. */ -static struct ast_callid *func_ss7_linkset_callid(struct sig_ss7_linkset *linkset, int chanpos) -{ - struct ast_callid *callid = NULL; +static ast_callid func_ss7_linkset_callid(struct sig_ss7_linkset *linkset, int chanpos) +{ + ast_callid callid = 0; sig_ss7_lock_owner(linkset, chanpos); if (linkset->pvts[chanpos]->owner) { callid = ast_channel_callid(linkset->pvts[chanpos]->owner); @@ -1460,7 +1459,7 @@ } while ((e = ss7_check_event(ss7))) { - struct ast_callid *callid = NULL; + ast_callid callid = 0; int chanpos = -1; char cause_str[30]; @@ -2342,7 +2341,6 @@ /* Call ID stuff needs to be cleaned up here */ if (callid) { - callid = ast_callid_unref(callid); ast_callid_threadassoc_remove(); } } Modified: trunk/channels/sip/dialplan_functions.c URL: http://svnview.digium.com/svn/asterisk/trunk/channels/sip/dialplan_functions.c?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/channels/sip/dialplan_functions.c (original) +++ trunk/channels/sip/dialplan_functions.c Thu Mar 12 20:12:35 2015 @@ -340,7 +340,7 @@ ast_rtp_engine_register2(&test_engine, NULL); /* Have to associate this with a SIP pvt and an ast_channel */ - if (!(p = sip_alloc(NULL, NULL, 0, SIP_NOTIFY, NULL, NULL))) { + if (!(p = sip_alloc(0, NULL, 0, SIP_NOTIFY, NULL, 0))) { res = AST_TEST_NOT_RUN; goto done; } Modified: trunk/channels/sip/include/dialog.h URL: http://svnview.digium.com/svn/asterisk/trunk/channels/sip/include/dialog.h?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/channels/sip/include/dialog.h (original) +++ trunk/channels/sip/include/dialog.h Thu Mar 12 20:12:35 2015 @@ -35,7 +35,7 @@ struct sip_pvt *dialog_unref_debug(struct sip_pvt *p, const char *tag, char *file, int line, const char *func); struct sip_pvt *sip_alloc(ast_string_field callid, struct ast_sockaddr *sin, - int useglobal_nat, const int intended_method, struct sip_request *req, struct ast_callid *logger_callid); + int useglobal_nat, const int intended_method, struct sip_request *req, ast_callid logger_callid); void sip_scheddestroy_final(struct sip_pvt *p, int ms); void sip_scheddestroy(struct sip_pvt *p, int ms); int sip_cancel_destroy(struct sip_pvt *p); Modified: trunk/channels/sip/include/sip.h URL: http://svnview.digium.com/svn/asterisk/trunk/channels/sip/include/sip.h?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/channels/sip/include/sip.h (original) +++ trunk/channels/sip/include/sip.h Thu Mar 12 20:12:35 2015 @@ -991,7 +991,7 @@ struct sip_pvt { struct sip_pvt *next; /*!< Next dialog in chain */ enum invitestates invitestate; /*!< Track state of SIP_INVITEs */ - struct ast_callid *logger_callid; /*!< Identifier for call used in log messages */ + ast_callid logger_callid; /*!< Identifier for call used in log messages */ int method; /*!< SIP method that opened this dialog */ AST_DECLARE_STRING_FIELDS( AST_STRING_FIELD(callid); /*!< Global CallID */ Modified: trunk/include/asterisk/bridge.h URL: http://svnview.digium.com/svn/asterisk/trunk/include/asterisk/bridge.h?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/include/asterisk/bridge.h (original) +++ trunk/include/asterisk/bridge.h Thu Mar 12 20:12:35 2015 @@ -280,7 +280,7 @@ /*! Per-bridge topics */ struct stasis_cp_single *topics; /*! Call ID associated with the bridge */ - struct ast_callid *callid; + ast_callid callid; /*! Linked list of channels participating in the bridge */ AST_LIST_HEAD_NOLOCK(, ast_bridge_channel) channels; /*! Queue of actions to perform on the bridge. */ Modified: trunk/include/asterisk/bridge_channel.h URL: http://svnview.digium.com/svn/asterisk/trunk/include/asterisk/bridge_channel.h?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/include/asterisk/bridge_channel.h (original) +++ trunk/include/asterisk/bridge_channel.h Thu Mar 12 20:12:35 2015 @@ -138,7 +138,7 @@ /*! Copy of write format used by chan before join */ struct ast_format *write_format; /*! Call ID associated with bridge channel */ - struct ast_callid *callid; + ast_callid callid; /*! A clone of the roles living on chan when the bridge channel joins the bridge. This may require some opacification */ struct bridge_roles_datastore *bridge_roles; /*! Linked list information */ Modified: trunk/include/asterisk/channel.h URL: http://svnview.digium.com/svn/asterisk/trunk/include/asterisk/channel.h?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/include/asterisk/channel.h (original) +++ trunk/include/asterisk/channel.h Thu Mar 12 20:12:35 2015 @@ -4046,12 +4046,12 @@ enum ast_channel_adsicpe ast_channel_adsicpe(const struct ast_channel *chan); void ast_channel_adsicpe_set(struct ast_channel *chan, enum ast_channel_adsicpe value); enum ast_channel_state ast_channel_state(const struct ast_channel *chan); -struct ast_callid *ast_channel_callid(const struct ast_channel *chan); +ast_callid ast_channel_callid(const struct ast_channel *chan); /*! * \pre chan is locked */ -void ast_channel_callid_set(struct ast_channel *chan, struct ast_callid *value); +void ast_channel_callid_set(struct ast_channel *chan, ast_callid value); /* XXX Internal use only, make sure to move later */ void ast_channel_state_set(struct ast_channel *chan, enum ast_channel_state); Modified: trunk/include/asterisk/core_unreal.h URL: http://svnview.digium.com/svn/asterisk/trunk/include/asterisk/core_unreal.h?view=diff&rev=432834&r1=432833&r2=432834 ============================================================================== --- trunk/include/asterisk/core_unreal.h (original) +++ trunk/include/asterisk/core_unreal.h Thu Mar 12 20:12:35 2015 @@ -40,7 +40,6 @@ /* Forward declare some struct names */ struct ast_format_cap; -struct ast_callid; /* ------------------------------------------------------------------- */ @@ -207,7 +206,7 @@ struct ast_channel *ast_unreal_new_channels(struct ast_unreal_pvt *p, const struct ast_channel_tech *tech, int semi1_state, int semi2_state, const char *exten, const char *context, const struct ast_assigned_ids *assignedids, - const struct ast_channel *requestor, struct ast_callid *callid); + const struct ast_channel *requestor, ast_callid callid); /*! * \brief Setup unreal owner and chan channels before initiating call. Modified: trunk/include/asterisk/logger.h [... 898 lines stripped ...] -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- svn-commits mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/svn-commits