AST_MUTEX_DEFINE_STATIC(rand_lock);
-/*! \brief Protect the interface list (of sip_pvt's) */
+/*! \brief Protect the SIP dialog list (of sip_pvt's) */
AST_MUTEX_DEFINE_STATIC(iflock);
/*! \brief Protect the monitoring thread, so only one process can kill or start it, and not
static int global_rtautoclear = 120;
-/*! \brief sip_pvt: PVT structures are used for each SIP conversation, ie. a call */
+/*! \brief sip_pvt: PVT structures are used for each SIP dialog, ie. a call, a registration, a subscribe */
static struct sip_pvt {
- ast_mutex_t lock; /*!< Channel private lock */
- int method; /*!< SIP method of this packet */
+ ast_mutex_t lock; /*!< Dialog private lock */
+ int method; /*!< SIP method that opened this dialog */
AST_DECLARE_STRING_FIELDS(
AST_STRING_FIELD(callid); /*!< Global CallID */
AST_STRING_FIELD(randdata); /*!< Random data */
int rtptimeout; /*!< RTP timeout time */
int rtpholdtimeout; /*!< RTP timeout when on hold */
int rtpkeepalive; /*!< Send RTP packets for keepalive */
- enum subscriptiontype subscribed; /*!< Is this call a subscription? */
+ enum subscriptiontype subscribed; /*!< Is this dialog a subscription? */
int stateid;
int laststate; /*!< Last known extension state */
int dialogver;
struct ast_dsp *vad; /*!< Voice Activation Detection dsp */
- struct sip_peer *peerpoke; /*!< If this calls is to poke a peer, which one */
- struct sip_registry *registry; /*!< If this is a REGISTER call, to which registry */
+ struct sip_peer *peerpoke; /*!< If this dialog is to poke a peer, which one */
+ struct sip_registry *registry; /*!< If this is a REGISTER dialog, to which registry */
struct ast_rtp *rtp; /*!< RTP Session */
struct ast_rtp *vrtp; /*!< Video RTP session */
struct sip_pkt *packets; /*!< Packets scheduled for re-transmission */
struct sip_history_head *history; /*!< History of this SIP dialog */
struct ast_variable *chanvars; /*!< Channel variables to set for call */
- struct sip_pvt *next; /*!< Next call in chain */
+ struct sip_pvt *next; /*!< Next dialog in chain */
struct sip_invite_param *options; /*!< Options for INVITE */
} *iflist = NULL;
#define FLAG_RESPONSE (1 << 0)
#define FLAG_FATAL (1 << 1)
-/*! \brief sip packet - read in sipsock_read, transmitted in send_request */
+/*! \brief sip packet - read in sipsock_read(), transmitted in send_request() */
struct sip_pkt {
struct sip_pkt *next; /*!< Next packet */
int retrans; /*!< Retransmission number */
int method; /*!< SIP method for this packet */
int seqno; /*!< Sequence number */
unsigned int flags; /*!< non-zero if this is a response packet (e.g. 200 OK) */
- struct sip_pvt *owner; /*!< Owner call */
+ struct sip_pvt *owner; /*!< Owner AST call */
int retransid; /*!< Retransmission ID */
int timer_a; /*!< SIP timer A, retransmission timer */
int timer_t1; /*!< SIP Timer T1, estimated RTT or 500 ms */
int regattempts; /*!< Number of attempts (since the last success) */
int timeout; /*!< sched id of sip_reg_timeout */
int refresh; /*!< How often to refresh */
- struct sip_pvt *call; /*!< create a sip_pvt structure for each outbound "registration call" in progress */
+ struct sip_pvt *call; /*!< create a sip_pvt structure for each outbound "registration dialog" in progress */
int regstate; /*!< Registration state (see above) */
int callid_valid; /*!< 0 means we haven't chosen callid for this registry yet. */
unsigned int ocseq; /*!< Sequence number we got to for REGISTERs for this registry */
ASTOBJ_CONTAINER_COMPONENTS(struct sip_peer);
} peerl;
-/*! \brief The register list: Other SIP proxys we register with and call */
+/*! \brief The register list: Other SIP proxys we register with and place calls to */
static struct ast_register_list {
ASTOBJ_CONTAINER_COMPONENTS(struct sip_registry);
int recheck;
return 0;
}
-/*! \brief __sip_autodestruct: Kill a call (called by scheduler) */
+/*! \brief __sip_autodestruct: Kill a SIP dialog (called by scheduler) */
static int __sip_autodestruct(void *data)
{
struct sip_pvt *p = data;
ast_log(LOG_DEBUG, "Auto destroying call '%s'\n", p->callid);
append_history(p, "AutoDestroy", "");
if (p->owner) {
- ast_log(LOG_WARNING, "Autodestruct on call '%s' with owner in place\n", p->callid);
+ ast_log(LOG_WARNING, "Autodestruct on dialog '%s' with owner in place (Method: %s)\n", p->callid, sip_methods[p->method].text);
ast_queue_hangup(p->owner);
} else {
sip_destroy(p);
static int sip_scheddestroy(struct sip_pvt *p, int ms)
{
if (sip_debug_test_pvt(p))
- ast_verbose("Scheduling destruction of call '%s' in %d ms\n", p->callid, ms);
+ ast_verbose("Scheduling destruction of SIP dialog '%s' in %d ms (Method: %s)\n", p->callid, ms, sip_methods[p->method].text);
if (recordhistory)
append_history(p, "SchedDestroy", "%d ms", ms);
return 0;
}
-/*! \brief sip_cancel_destroy: Cancel destruction of SIP call */
+/*! \brief sip_cancel_destroy: Cancel destruction of SIP dialog */
static int sip_cancel_destroy(struct sip_pvt *p)
{
if (p->autokillid > -1)
#ifdef OSP_SUPPORT
if (!p->options->osptoken || !osphandle || (sscanf(osphandle, "%d", &p->osphandle) != 1)) {
/* Force Disable OSP support */
- ast_log(LOG_DEBUG, "Disabling OSP support for this call. osptoken = %s, osphandle = %s\n", p->options->osptoken, osphandle);
+ if (option_debug)
+ ast_log(LOG_DEBUG, "Disabling OSP support for this call. osptoken = %s, osphandle = %s\n", p->options->osptoken, osphandle);
p->options->osptoken = NULL;
osphandle = NULL;
p->osphandle = -1;
}
-/*! \brief __sip_destroy: Execute destrucion of call structure, release memory*/
+/*! \brief __sip_destroy: Execute destrucion of SIP dialog structure, release memory */
static void __sip_destroy(struct sip_pvt *p, int lockowner)
{
struct sip_pvt *cur, *prev = NULL;
struct sip_pkt *cp;
if (sip_debug_test_pvt(p))
- ast_verbose("Destroying call '%s'\n", p->callid);
+ ast_verbose("Destroying SIP dialog '%s' Method: %s\n", p->callid, sip_methods[p->method].text);
if (dumphistory)
sip_dump_history(p);
if (p->registry) {
if (p->registry->call == p)
p->registry->call = NULL;
- ASTOBJ_UNREF(p->registry,sip_registry_destroy);
+ ASTOBJ_UNREF(p->registry, sip_registry_destroy);
}
/* Unlink us from the owner if we have one */
if (p->owner) {
if (lockowner)
ast_mutex_lock(&p->owner->lock);
- ast_log(LOG_DEBUG, "Detaching from %s\n", p->owner->name);
+ if (option_debug)
+ ast_log(LOG_DEBUG, "Detaching from %s\n", p->owner->name);
p->owner->tech_pvt = NULL;
if (lockowner)
ast_mutex_unlock(&p->owner->lock);
}
-/*! \brief sip_hangup: Hangup SIP call
+/*! \brief sip_hangup: Hangup SIP call
* Part of PBX interface, called from ast_hangup */
static int sip_hangup(struct ast_channel *ast)
{
break;
case AST_CONTROL_HOLD: /* The other part of the bridge are put on hold */
if (sipdebug)
- ast_log(LOG_DEBUG, "Bridged channel now on hold%s\n", p->callid);
+ ast_log(LOG_DEBUG, "Bridged channel now on hold - %s\n", p->callid);
res = -1;
break;
case AST_CONTROL_UNHOLD: /* The other part of the bridge are back from hold */