Grammar: * Grammar is not fully converted, see comments inside the grammar file * UTF8 things not defined Request/Response: * Parse more Parameters properly... Transaction: * Cancel a Invite Transaction, stop responding to the 200.. or do it with a bye... * Invite can have multiple dialogs.. so we need to have a 'new dialog' kind of signal... * Route signals through the ok/cancel of the SIPDialog as a single entry * Add responses... * Add better state machine control, (do not allow to go back in states) Dialog/Session/Route-Set: * A dialog should have a route set (with the Via's) * Does a dialog hold a session? a session holds a dialog? * A call can go to session without having a confirmed dialog. This needs to be looked at/denied. Do not ack a call that has no ;tag= attribute for. One can remove the from ;tag in the "200 OK" test result to provoke the failure in the testProxyAuth testcase. General: * 401 handling might not work for BYE,ACK. For ACK the ACK might not be re-generated and the digest might be wrong due the missing operation * 403 (maybe 401) should generate ACK on the 403 result? Check the RFC if that is necessary! This would indicate why the branch is changing _after_ the receiving 401/403. At the same time the proxy/server would need to re-send the 401/403? * Compare with MGCPCommands and share code... in SIPRequest * Via we should indicate the received address and port... * Verify that status code is valid. It used to be done inside the grammar but that is not the right place. * 3xx, 4xx, 5xx, 6xx are final. We should not allow any other messages. Sending multiple 503/500 messages.. they all will be acked.. * Record-Route/Route implementation needed: SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.0.251:3107;branch=z9hG4bK-qvgn1b;rport=3107 Record-Route: Record-Route: From: "sipgate" ;tag=7kypvq To: "00491778116745" ;tag=as10fec2f5 Call-ID: n57q3hl9l7 CSeq: 1084794278 INVITE Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH Supported: replaces Contact: Content-Type: application/sdp Content-Length: 381 v=0 o=root 1250091314 1250091315 IN IP4 217.10.77.114 s=sipgate VoIP GW c=IN IP4 217.10.77.114 t=0 0 m=audio 17974 RTP/AVP 8 0 3 18 2 101 a=rtpmap:8 PCMA/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:3 GSM/8000 a=rtpmap:18 G729/8000 a=fmtp:18 annexb=no a=rtpmap:2 G726-32/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=silenceSupp:off - - - - a=ptime:20 a=sendrecv ACK sip:123@217.10.77.114:5060 SIP/2.0 Via: SIP/2.0/UDP 24.134.59.157:3107;branch=z9hG4bK-2tacy7;rport Route: Route: From: "sipgate" ;tag=7kypvq To: "00491778116745" ;tag=as10fec2f5 Call-ID: n57q3hl9l7 CSeq: 1084794278 ACK Max-Forwards: 70 Contact: ;reg-id=1;+sip.instance="" Content-Length: 0 Reply with ACK to 401 authorized.. SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP 192.168.0.106:5060;branch=z9hG4bK4000ebad-1c1f-e411-87f8-844bf52a8297;rport=1029;received=91.66.224.184 From: ;tag=e698dead-1c1f-e411-87f8-844bf52a8297 To: Call-ID: 4eaedead-1c1f-e411-87f8-844bf52a8297@xiaoyu CSeq: 1 INVITE WWW-Authenticate: Digest realm="Yate", nonce="cc615df915f40a7d8ae80ef28c8efba4.1407689697", stale=FALSE, algorithm=MD5 Server: YATE/5.4.0 Contact: Allow: ACK, INVITE, BYE, CANCEL, REGISTER, REFER, OPTIONS, INFO Content-Length: 0 ACK sip:00123@8.8.8.8 SIP/2.0 CSeq: 1 ACK Via: SIP/2.0/UDP 192.168.0.106:5060;branch=z9hG4bK4000ebad-1c1f-e411-87f8-844bf52a8297;rport From: ;tag=e698dead-1c1f-e411-87f8-844bf52a8297 Call-ID: 4eaedead-1c1f-e411-87f8-844bf52a8297@xiaoyu To: Content-Length: 0 Max-Forwards: 70