# $Id$ import inc_sip as sip import inc_sdp as sdp # Several PUBLISH failure scenarios that should be handled automatically pjsua = "--null-audio --id=sip:127.0.0.1:$PORT --registrar sip:127.0.0.1:$PORT " + \ "--realm=python --user=username --password=password " + \ "--auto-update-nat=0 --publish" #pjsua = "--null-audio --local-port 0 --rtp-port 0" # Handle REGISTER first req1 = sip.RecvfromTransaction("Initial REGISTER", 200, include=["REGISTER sip"], exclude=[], resp_hdr=["Expires: 1800"] ) # First PUBLISH, reply with 412 req2 = sip.RecvfromTransaction("Initial PUBLISH, will be replied with 412", 412, include=["PUBLISH sip"], exclude=["Expires:"] ) # Second PUBLISH req3 = sip.RecvfromTransaction("Second PUBLISH, will be replied with 200", 200, include=["PUBLISH sip"], exclude=["Expires:"], resp_hdr=["Expires: 60", "SIP-ETag: dx200xyz"] ) # PUBLISH refresh, respond with 408 req4 = sip.RecvfromTransaction("PUBLISH refresh, will be replied with 408", 408, include=["PUBLISH sip", "SIP-If-Match: dx200xyz"], exclude=["Expires:"], resp_hdr=["Expires: 60", "SIP-ETag: dx200xyz"] ) # After 5 minutes, pjsua should retry again req5 = sip.RecvfromTransaction("PUBLISH retry", 200, include=["PUBLISH sip"], exclude=["Expires:", "SIP-If-Match:"], resp_hdr=["Expires: 60", "SIP-ETag: abc"] ) recvfrom_cfg = sip.RecvfromCfg("PUBLISH scenarios", pjsua, [req1, req2, req3])