Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:vicidial:sandbox
asterisk
sip_peer_status-18.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File sip_peer_status-18.patch of Package asterisk
--- asterisk-18.17.1/channels/chan_sip.c 2023-04-03 11:47:51.000000000 -0400 +++ asterisk-18.17.1-new/channels/chan_sip.c 2023-04-04 16:08:16.661189344 -0400 @@ -4156,6 +4156,21 @@ pkt->is_resp ? "Response" : "Request", (int) ast_tvdiff_ms(ast_tvnow(), pkt->time_sent)); } + if (pkt->is_fatal) { + const struct ast_sockaddr *real_dst = sip_real_dst(pkt->owner); + manager_event(EVENT_FLAG_SYSTEM, "SIPCriticalTimeout", + "Type: %s\r\n" + "CallID: %s\r\n" + "SeqNo: %u\r\n" + "Host: %s\r\n" + "Timeout: %dms\r\n", + pkt->is_resp ? "Response" : "Request", + pkt->owner->callid, + pkt->seqno, + ast_sockaddr_stringify(real_dst), + (int) ast_tvdiff_ms(ast_tvnow(), pkt->time_sent) + ); + } } else if (pkt->method == SIP_OPTIONS && sipdebug) { ast_log(LOG_WARNING, "Cancelling retransmit of OPTIONs (call id %s) -- See https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions\n", pkt->owner->callid); } @@ -6631,6 +6646,22 @@ dialog_unref(_data, "dialog ptr dec when SCHED_REPLACE del op succeeded"), dialog_unref(p, "dialog ptr dec when SCHED_REPLACE add failed"), dialog_ref(p, "dialog ptr inc when SCHED_REPLACE add succeeded") ); + + if ( p->owner ) { + manager_event(EVENT_FLAG_CALL, "SIPInvite", + "Channel: %s\r\n" + "Uniqueid: %s\r\n" + "SIPCallID: %s\r\n" + "CallerIDName: %s\r\n" + "ConnectedLineName: %s\r\n", + ast_channel_name(p->owner), + ast_channel_uniqueid(p->owner), + p->callid, + ast_channel_caller(p->owner)->id.name.str, + ast_channel_connected(p->owner)->id.name.str + ); + } + sip_pvt_unlock(p); } return res; @@ -17185,6 +17216,13 @@ if (ast_sockaddr_cmp(&peer->addr, &oldsin)) { ast_verb(3, "Registered SIP '%s' at %s\n", peer->name, ast_sockaddr_stringify(&peer->addr)); + manager_event(EVENT_FLAG_SYSTEM, "PeerRegistered", + "ChannelType: SIP\r\n" + "Peer: SIP/%s\r\n" + "Host: %s\r\n", + peer->name, + ast_sockaddr_stringify(&peer->addr) + ); } sip_pvt_unlock(pvt); sip_poke_peer(peer, 0); @@ -25008,6 +25046,22 @@ ast_log(LOG_NOTICE, "Peer '%s' is now %s. (%dms / %dms)\n", peer->name, s, pingtime, peer->maxms); + + manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", + "ChannelType: SIP\r\n" + "Peer: SIP/%s\r\n" + "PeerStatus: %s\r\n" + "Time: %d\r\n" + "PingTime: %dms\r\n" + "MaxPing: %dms\r\n", + peer->name, + s, + peer->lastms, + pingtime, + peer->maxms + ); + + ast_devstate_changed(AST_DEVICE_UNKNOWN, AST_DEVSTATE_CACHABLE, "SIP/%s", peer->name); if (sip_cfg.peer_rtupdate) { ast_update_realtime(ast_check_realtime("sipregs") ? "sipregs" : "sippeers", "name", peer->name, "lastms", str_lastms, SENTINEL); @@ -25202,6 +25256,24 @@ } } + if ( p->owner ) { + manager_event(EVENT_FLAG_CALL, "SIPResponse", + "Response: %d\r\n" + "Channel: %s\r\n" + "Uniqueid: %s\r\n" + "SIPCallID: %s\r\n" + "CallerIDName: %s\r\n" + "ConnectedLineName: %s\r\n", + resp, + ast_channel_name(p->owner), + ast_channel_uniqueid(p->owner), + p->callid, + ast_channel_caller(p->owner)->id.name.str, + ast_channel_connected(p->owner)->id.name.str + ); + } + + /* Acknowledge whatever it is destined for */ if ((resp >= 100) && (resp <= 199)) { /* NON-INVITE messages do not ack a 1XX response. RFC 3261 section 17.1.2.2 */ @@ -29986,6 +30058,16 @@ } ast_log(LOG_NOTICE, "Disconnecting call '%s' for lack of RTP activity in %ld seconds\n", ast_channel_name(dialog->owner), (long) (t - dialog->lastrtprx)); + + manager_event(EVENT_FLAG_CALL, "SIPRTPDisconnect", + "Channel: %s\r\n" + "RTPLastRX: %ld\r\n", + ast_channel_name(dialog->owner), + (long) dialog->lastrtprx + ); + + + send_session_timeout(dialog->owner, "RTPTimeout"); /* Issue a softhangup - cause 44 (as used by Cisco for RTP timeouts) */ @@ -30549,6 +30631,19 @@ if (peer->lastms > -1) { ast_log(LOG_NOTICE, "Peer '%s' is now UNREACHABLE! Last qualify: %d\n", peer->name, peer->lastms); + + manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", + "ChannelType: SIP\r\n" + "Peer: SIP/%s\r\n" + "PeerStatus: Unreachable\r\n" + "Time: %d\r\n" + "PingTime: -1ms\r\n" + "MaxPing: %dms\r\n", + peer->name, + peer->lastms, + peer->maxms + ); + if (sip_cfg.peer_rtupdate) { ast_update_realtime(ast_check_realtime("sipregs") ? "sipregs" : "sippeers", "name", peer->name, "lastms", "-1", SENTINEL); }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor