SIP-Channel gezielt unterbrechen / abbrechen

CmdrXay

Neuer User
Mitglied seit
14 Feb 2007
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Hallo allerseits,

ab und zu habe ich das Problem, dass manchmal SIP-Verbindungen bestehen bleiben, obwohl kein Gespräch zustande gekommen ist (oder schon lange beendet wurden).

Hier mal so ein Ausschnitt mit CORE SHOW CHANNELS:

Code:
Channel              Location             State   Application(Data)
SIP/202-08274578     202@gs-sip:1         Ringing AppDial((Outgoing Line))
SIP/204-08272ff8     202@gs-sip:1         Ring    Dial(SIP/202||tT)

Fakt: zu diesem Zeitpunkt war SIP/202 (ein Softphone) eigentlich schon komplett weg und der Rechner, auf dem der Account lief, schon lange ausgeschaltet. Für mich sieht obiges so aus, als ob 204 den 202 anrufen wollte und dieses INVITE ist einfach hängen geblieben. Wird auch über SIP SHOW CHANNELS ausgegeben... alle mit INVITE hinten als Last Message.

Ich habe mich mittlerweile abgefunden, dass diese Situation einfach mal vorkommt und setze vor dem Wählen Timeouts.

Mir würde es schon weiterhelfen, wenn ich Asterisk klar machen könnte, dass dieses Gespräch abgebrochen werden soll, so dass ich zumindest sofort reagieren kann, wenn es wieder vorkommt.

Kann jemand helfen? Wie kann ich Asterisk zwingen, diese Channels zu killen, ohne dass ich Asterisk kille?

Ich habe schon SIP RELOAD und MODULE RELOAD chan_sip.so versucht - ohne Ergebnis. Ein MODULE UNLOAD chan_sip.so verweigert mir Asterisk mit dem Hinweis, dass noch channels in Benutzung sind. Grrr.
Ein komplettes reload hats auch nicht gelöst...

Zur Ergänzung meine sip.conf (relevante Ausschnitte):

Code:
[general]

dtmfmode=inband ; wegen PHONER
port = 5060           ; Port to bind to (SIP is 5060)
bindaddr = 192.168.200.4  ; Address to bind to (all addresses on machine)
disallow=all
;allow=ulaw
allow=alaw
;allow=G729
language=de
callerid = Unknown
rtptimeout=300
rtpholdtimeout=300
canreinvite=no

[202]
type=friend
host=dynamic
secret=xxx
context=gs-sip

CU .Bis dann.
Peter.
 
Gefunden?

Hallo allerseits,

man soll einfach mal weitersuchen... ich habe ein Unterkommando unter dem SIP-Befehl der Console vermutet und nicht gefunden.

Aber jetzt eben habe ich entdeckt, dass es da einen Befehl gibt, der heißt SOFT HANGUP... mit dem konnte ich jedenfalls aktive Calls abbrechen, leider habe ich aber den hängenden Call schon durch einen Neustart terminiert :-)

Jetzt hoffe ich natürlich, dass das Problem so schnell wie möglich wieder auftaucht, damit ich ausprobieren kann, ob SOFT HANGUP auch wildgewordene Channels terminieren kann.

Egal, wie es ausgeht - ich hinterlasse hier eine Notiz.

CU. Peter.
 
Du kannst auch folgende Parameter verwenden, dann geht das evtl. automatisch...

Code:
rtptimeout=60			; Terminate call if 60 seconds of no RTP activity
				; when we're not on hold
rtpholdtimeout=300		; Terminate call if 300 seconds of no RTP activity
				; when we're on hold (must be > rtptimeout)

mfg Guard-X
 
Hallo Guard-X,

danke für die Anregung - da ich die Parameter ja schon drin hatte (nur rtptimeout eben mit 300 statt 60 Sekunden), könnte das der Beweis dafür sein, dass sie in dieser Situation nicht greifen :-)

Der Call stand schon länger offen als 5 Minuten.

Ich vermute, weil der Call ja noch im INVITE-Stadium war und deswegen die Phase des Anrufs, in der das Real Time Protokoll relevant wird, noch nicht erreicht wurde.

Als Sicherung leite ich sowieso jeden Anruf mit einem Set(TIMEOUT(absolute)=3600) ein, so bin ich zumindest sicher, dass nach 1 Stunde der Anruf gekillt wird.

CU. Bis dann.
Peter.
 
Kostenlos!

Statistik des Forums

Themen
248,438
Beiträge
2,291,501
Mitglieder
377,851
Neuestes Mitglied
kkakaka203