본문 바로가기

Protocol/SIP

09. Canceling a Request


 


 


CANCEL 메소드의 처리에 대하여 알아봄


 


CANCEL



  • 클라이언트가 보낸 request의 취소
  • 서버에게 request 처리를 그만 두게 하고 error response를 발생하게 함
  •  final response를 보낸 UAS는 아무 동작 안함
  • UA나 프록시가 생성

 


9.1 Client Behavior#


INVITE가 아닌 request는 cancel 할 수 없음


Request-URI, Call-ID, To, the numeric part of CSeq, and From header fields는 cancel 하려는 request와 동일함


Cancel하려는 request에 Route header field가 있다면 CANCEL에도 반드시 포함하여야 함


Require or Proxy-Require header fields. 포함하면 안됨


CANCEL request를 생성후, 그 사이 도착한 response가 있는지 확인해야 함



  • provisional response를 아직 받지 않았다면 보내면 안됨
  • final response를 받았다면 보내면 안됨

CANCEL request와 cancel 하려는 request의 transaction은 독립적임


 


 


9.2 Server Behavior#


TU는 pending된 transaction을 cancel


CANCEL request의 처리는 서버의 종류마다 다름



  • stateful proxy : 자신의 CANCEL request를 생성
  • stateless proxy : 포워딩

hop-by-hop으로 처리


resubmit되지 않음 : challenged 될 수 없음


Require header field 포함 하지 않음


 


CANCEL request와 매칭되는 transaction이 없을 경우



  • 481 (Call Leg/Transaction Does Not Exist) response

 


CANCEL request와 매칭되는 transaction이 있을 경우



  • final response를 보냈을 경우 : 아무런 영향 없음

  • final response를 보내지 않았을 경우



    • original request의 method에 따라 다름
    • INVITE의 경우 : 487 (Request Terminated) response

 


original request에 상관없이 CANCEL request에 대하여 200 (OK) response를 보내야 함


 

'Protocol > SIP' 카테고리의 다른 글

11. Querying for Capabilities  (0) 2013.09.25
10. Registrations  (0) 2013.09.25
08. General User Agent Behavior  (0) 2013.09.25
07. SIP Messages  (0) 2013.09.25
06. Definitions  (0) 2013.09.25