Menu

#9 in UAS media should not start on 200

open
None
5
2010-01-07
2010-01-07
No

bug reported by rui chen:

When UAS accepts the Call from UAC, it sends 200 OK to UAC, and at the same time, UAS starts to send and receive RTP packects. UAS shoud start to send and receive RTP packects after ACK reception.

Discussion

  • yohannmartineau

    yohannmartineau - 2010-01-07
    • assigned_to: nobody --> yohannmartineau
     
  • yohannmartineau

    yohannmartineau - 2010-01-07

    RTP Packet reception and sending is started in method handleOffer in class SDPManager, which is invoked from method sendSuccessfulResponse in InviteHandler. The method sendSuccessfulResponse is also used when a reINVITE is received. Thus the correction is slightly more complicated than if sendSuccessfulResponse were invoked when user accepts the inital INVITE request.

     
  • yohannmartineau

    yohannmartineau - 2010-01-27

    It should not be a problem to distinguish cases where sdp offer is an initial offer and where sdp offer is re-offer in core. Nevertheless, the problem is to be notified of ACK in core requests when call is successful. Actually, for the moment ACK is considered as part of invite server transaction even if response code was successful (200 for example). This issue is in TransactionManager: getServerTransaction(SipRequest) line 128. This method is called from MessageReceiver in processMessage(...) line 121. getServerTransaction should return null and sipServerTransportUser should be notified of the new message received without existing transaction. And here, serverTransaction just receives a request. Once notified, SipServerTransportUser should find the corresponding transaction, dialog and start media sending on its associated media session.

     
  • yohannmartineau

    yohannmartineau - 2010-02-17

    In InviteHandler, determine if ACK is ACK of an initial INVITE or a re-INVITE in first case, captureRtpSender and incomingRtpReader must be created, in the second case, they must be updated. To do this, try to retrieve a reference to captureRtpSender and incomingRtpReader using userAgent, if they are null => create new ones.