Week 23 contribution of PDK documentation content. See release notes for details. Fixes bugs Bug 2714, Bug 462.
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License
"Eclipse Public License v1.0" which accompanies this distribution,
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
Nokia Corporation - initial contribution.
Contributors:
-->
<!DOCTYPE concept
PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F" xml:lang="en"><title>Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>The SIP Client API manages the multimedia sessions, subscribes to events,
and sends SIP messages. It also provides access to the basic services of the
SIP stack such as: </p>
<ul>
<li id="GUID-E9BF6031-1DAF-5238-A306-C44F0F91682D"><p>Sending and receiving
of SIP messages </p> </li>
<li id="GUID-C6A3FA97-1F09-587E-9504-9685D8306B04"><p>Creating registrations </p> </li>
<li id="GUID-A02F02C7-A903-53E0-A64E-F0B62C93A90F"><p>Forming and tearing
down dialogs initiated by INVITE, REFER and SUBSCRIBE requests </p> </li>
</ul>
<section id="GUID-8D3D5FB3-6037-5956-B3F0-DB14BD1BB17B"><title>Architectural
relationships</title> <p>The SIP Client API uses the client-server mechanism
to interact with the SIP stack. This means more than one client can use the
SIP stack at the same time. The calls to the SIP Client API are synchronous.
The SIP Client API implements a set of callback functions to pass the events
back to the application. </p> <p><b>Capability information</b> </p> <p>The
following table describes the capabilities required to use the SIP Client
API and the conditions in which they are required: </p> <table id="GUID-B3DCF31A-C6D5-58B9-87FA-B2CD3E0ABA1F">
<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
<thead>
<row>
<entry>Capability </entry>
<entry>Reason needed </entry>
</row>
</thead>
<tbody>
<row>
<entry><p>NetworkServices </p> </entry>
<entry><p>to send or receive SIP messages </p> </entry>
</row>
<row>
<entry><p>WriteDeviceData </p> </entry>
<entry><p>to create an instance of the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> class </p> </entry>
</row>
<row>
<entry><p>NetworkControl </p> <p>Location </p> <p>ReadDeviceData </p> </entry>
<entry><p>to use the function <codeph>CSIPConnection::SetOptL()</codeph> </p> </entry>
</row>
</tbody>
</tgroup>
</table> <p><b>Extending the API</b> </p> <p>SIP Client API cannot be extended. </p> </section>
<section id="GUID-E055BF09-9605-57E6-9502-CB3F4CAC29B8"><title>SIP Client
API class structure</title> <ul>
<li id="GUID-3E500E7D-ECB9-50F8-B996-A212EE294E68"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-581B8017-EAA0-59CB-A9CB-490370E0CEC9"> CSIP, MSIPObserver, CSIPConnection and MSIPConnectionObserver</xref> </p> </li>
<li id="GUID-461F8201-ED85-582A-945C-7471F9BF27AA"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-0E726099-31C4-5DD4-9AEA-67765589F462">Registration services</xref> </p> </li>
<li id="GUID-F69AEAB7-0E13-5673-B696-843957CC4C72"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-80CE8929-9DFD-5DCA-A929-662BD996223B"> SIP dialog associations</xref> </p> </li>
<li id="GUID-BFE257A7-EF1A-58BF-A047-00E0B11B1FD3"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-B0D208E4-D1F9-5C5F-B937-11118E778074">Requests sent to, and received from, the network</xref> </p> </li>
<li id="GUID-D0AC4583-B181-501C-A97A-63F094AD4046"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-0427709F-CD4B-5363-9377-10402B8A5819">SIP message related classes</xref> </p> </li>
<li id="GUID-31ED307B-2285-5DE0-A83B-D0CB7A8C585D"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-4E4FAFCA-0BF6-510C-B8E3-28A83936A154">Automatically refreshing a SIP request</xref> </p> </li>
<li id="GUID-B6E46736-A250-5064-B4F8-595A20025478"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-B71BC486-18C2-5E71-965E-0881FBA9CE85">Managing HTTP digest security settings</xref> </p> </li>
</ul> <p id="GUID-581B8017-EAA0-59CB-A9CB-490370E0CEC9"><b> CSIP, MSIPObserver,
CSIPConnection and MSIPConnectionObserver </b> </p> <fig id="GUID-0834012C-083F-5FA0-B29D-E3E852165528">
<image href="GUID-4381EA7F-BE75-5B43-BE97-C97D71D04377_d0e332416_href.png" placement="inline"/>
</fig> <p>An application creates a single instance of the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> class,
and implements the callback functions defined by <xref href="GUID-C6FF4A83-0097-3A82-B4ED-802E1FEA05D1.dita"><apiname>MSIPObserver</apiname></xref>.
The <codeph>CSIP</codeph> uses the <codeph>MSIPObserver</codeph> functions.
The <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> class asks the supported security mechanisms and
determines whether a <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> object exists for a
given IAP. </p> <p>The <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> object creates an instance
of <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> that allows you to send standalone SIP
requests and ask for the state of the network connection. Responses are received
through the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita"><apiname>MSIPConnectionObserver</apiname></xref> interface that defines
a set of callback functions that an application must implement. </p> <p>An
application can have many <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> objects, but each
of them must have a different IAP. </p> <p id="GUID-0E726099-31C4-5DD4-9AEA-67765589F462"><b>Registration
services</b> </p> <fig id="GUID-63E38B2E-975E-554C-8EDC-65B8BBA86838">
<image href="GUID-E4543D60-A9D0-5121-9540-993BB15D3275_d0e332473_href.png" placement="inline"/>
</fig> <p>An existing <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> is required to create
an instance of <codeph>CSIPRegistrationBinding</codeph>. The <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref> class
provides services for registration, updating the registration, and deregistration.
This class also provides instructions to the SIP stack to automatically refresh
the registration, and to query and set the outbound proxy used by the registration. </p> <p id="GUID-80CE8929-9DFD-5DCA-A929-662BD996223B"><b> SIP dialog
associations</b> </p> <fig id="GUID-4870BE80-44B6-50F0-B77E-73FEAD136304">
<image href="GUID-17D1489B-F7F7-5CA7-9F81-850AA9ACEFEB_d0e332498_href.png" placement="inline"/>
</fig> <p> <xref href="GUID-9841AF1A-B8CF-3BA1-8445-93064549AE8C.dita"><apiname>CSIPDialogAssocBase</apiname></xref> is the base class for SIP
dialog associations, such as <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref>, <xref href="GUID-9539CAEE-28AE-3134-8415-EEBCBCDA4D18.dita"><apiname>CSIPSubscribeDialogAssoc</apiname></xref>, <xref href="GUID-2E7EF887-ED59-3E8A-B9A2-686DF879A16C.dita"><apiname>CSIPReferDialogAssoc</apiname></xref> and <xref href="GUID-72F96612-A95C-3066-BFF0-2E288C945A2A.dita"><apiname>CSIPNotifyDialogAssoc</apiname></xref>. The <xref href="GUID-9841AF1A-B8CF-3BA1-8445-93064549AE8C.dita"><apiname>CSIPDialogAssocBase</apiname></xref> class
is used to obtain the associated SIP dialog, for the associated <xref href="GUID-382BC1BE-3CF3-3E81-B1FF-341EEF2B67EA.dita"><apiname>CSIPDialog</apiname></xref> instance,
and for sending a non-target Refresh request within the dialog. </p> <p> <b> Note: </b> The
SIP Client API creates the <xref href="GUID-382BC1BE-3CF3-3E81-B1FF-341EEF2B67EA.dita"><apiname>CSIPDialog</apiname></xref> instance, it cannot
be created by the application. </p> <p>If any of the <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref>, <xref href="GUID-9539CAEE-28AE-3134-8415-EEBCBCDA4D18.dita"><apiname>CSIPSubscribeDialogAssoc</apiname></xref>, <xref href="GUID-2E7EF887-ED59-3E8A-B9A2-686DF879A16C.dita"><apiname>CSIPReferDialogAssoc</apiname></xref> and <xref href="GUID-72F96612-A95C-3066-BFF0-2E288C945A2A.dita"><apiname>CSIPNotifyDialogAssoc</apiname></xref> objects
are associated, they are bound to an existing <xref href="GUID-382BC1BE-3CF3-3E81-B1FF-341EEF2B67EA.dita"><apiname>CSIPDialog</apiname></xref> object,
or they can be used to create a new <codeph>CSIPDialog</codeph> object. </p> <p> <b>Note:</b> </p> <ul>
<li id="GUID-6A085F6F-C243-53AD-B33C-F37D14DFE0A4"><p> <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref> allows
an application to initiate a dialog and to send <codeph>INVITE</codeph>,,<codeph>PRACK</codeph>,,<codeph>ACK</codeph>, <codeph>UPDATE,</codeph> and <codeph>BYE</codeph> requests related to the dialog. </p> </li>
<li id="GUID-19C504F0-EAD5-524A-82E9-2D15BFA2A6D2"><p> <xref href="GUID-9539CAEE-28AE-3134-8415-EEBCBCDA4D18.dita"><apiname>CSIPSubscribeDialogAssoc</apiname></xref> allows
an application to subscribe to different events by sending SUBSCRIBE and UNSUBSCRIBE
requests. It also orders the SIP stack to automatically refresh the SUBSCRIBE
request. </p> </li>
<li id="GUID-C47B74D8-2251-5FCC-A356-1364EB61CF05"><p> <xref href="GUID-2E7EF887-ED59-3E8A-B9A2-686DF879A16C.dita"><apiname>CSIPReferDialogAssoc</apiname></xref> allows
an application to define and send REFER requests. </p> </li>
<li id="GUID-18AD2000-2A37-5CD9-8118-8B3322211D28"><p> <xref href="GUID-72F96612-A95C-3066-BFF0-2E288C945A2A.dita"><apiname> CSIPNotifyDialogAssoc</apiname></xref> allows
an application to define and send NOTIFY requests. </p> </li>
</ul> <p id="GUID-B0D208E4-D1F9-5C5F-B937-11118E778074"><b>Sent and received
network requests</b> </p> <fig id="GUID-2E0C9020-1863-5644-BF7E-62B4DB9104D2">
<image href="GUID-F5A82F61-B93A-5652-93A4-B9CE877B4D4A_d0e332635_href.png" placement="inline"/>
</fig> <p>When a SIP request is sent to the network, the SIP Client API implementation
creates a <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> object and returns it to
the application. A <codeph>CSIPClientTransaction</codeph> object represents
the SIP transaction and consists of the SIP request and the SIP response.
After receiving a response, the application gets <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> from
the <codeph>CSIPClientTransaction</codeph> object. <b>Note:</b> Some client
transactions can also be cancelled or refreshed. </p> <p>When a SIP request
is received from the network, it is passed to the application as a <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> object.
The application gets <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> from the <codeph>CSIPServerTransaction</codeph> object.
A <codeph>CSIPRequestElements</codeph> object describes the kind of SIP request
received. After the application determines the type of response to send, it
uses the <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> to send the responses. </p> <p> <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita"><apiname>CSIPTransactionBase</apiname></xref> is
the base class for <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref>.
It provides the functions to obtain the current state of the transaction and
the transaction type. Some operations are only allowed when the transaction
is in a certain state. <b>Note:</b> The SIP Client API creates instances of <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> and they cannot be created by the application. </p> <p id="GUID-0427709F-CD4B-5363-9377-10402B8A5819"><b>SIP
message related classes</b> </p> <fig id="GUID-B99CF040-E91F-5281-8AAC-2151049C0EA8">
<image href="GUID-6290D35A-7A41-5B9E-882A-E14F6D165ED7_d0e332712_href.png" placement="inline"/>
</fig> <p>When a SIP request is sent to the network, the SIP Client API implementation
creates a <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> object and returns it to
the application. A <codeph>CSIPClientTransaction</codeph> object represents
the SIP transaction and consists of the SIP request and the SIP response.
After receiving a response the application gets <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> from
the <codeph>CSIPClientTransaction</codeph> object. <b>Note:</b> Some client
transactions can be cancelled or refreshed. </p> <p>When a SIP request is
received from the network, it is passed to the application as a <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> object.
The application gets <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> from the <codeph>CSIPServerTransaction</codeph> object.
A <codeph>CSIPRequestElements</codeph> object describes the type of SIP request
received. After the application determines the type of response to send, it
uses the <codeph>CSIPServerTransaction</codeph> to send the responses. </p> <p> <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita"><apiname>CSIPTransactionBase</apiname></xref> is
the base class for <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref>.
It provides functions to obtain the current state of the transaction and the
transaction type. Some operations are only allowed when the transaction is
in a certain state. <b>Note:</b> The SIP Client API creates instances of <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> and they cannot be created by the application. </p> <p id="GUID-4E4FAFCA-0BF6-510C-B8E3-28A83936A154"><b> Automatically
refreshing a SIP request</b> </p> <fig id="GUID-49ACB697-512C-5FCF-AD48-20D6AAB0FEFC">
<image href="GUID-6B9E5B8D-E2F7-5972-ABFB-49F7F466EBBD_d0e332788_href.png" placement="inline"/>
</fig> <p>The SIP stack automatically refreshes a SIP request using the <xref href="GUID-3C166C85-6E17-323B-9CD3-B3E2836DC1C3.dita"><apiname>CSIPRefresh</apiname></xref> object. <codeph>REGISTER</codeph>, <codeph>SUBSCRIBE</codeph> and a request outside the dialog are refreshed. After
sending a refresh request, the application queries the state of the refresh
from <codeph>CSIPRefresh</codeph>. </p> <p> <codeph>CSIPRefresh</codeph> provides
functions for updating and terminating the refresh, for requests outside the
dialog. The <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref> and <xref href="GUID-9539CAEE-28AE-3134-8415-EEBCBCDA4D18.dita"><apiname>CSIPSubscribeDialogAssoc</apiname></xref> classes
are used to update and terminate a refreshed <codeph>REGISTER</codeph> or <codeph>SUBSCRIBE</codeph>. </p> <p id="GUID-B71BC486-18C2-5E71-965E-0881FBA9CE85"><b> Managing HTTP digest security
settings </b> </p> <fig id="GUID-7C296C1B-67E3-569F-A5E9-92A4F7922088">
<image href="GUID-1704898B-7836-53C2-8743-F733836EDE7B_d0e332834_href.png" placement="inline"/>
</fig> <p>An application must create an instance of the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> class
to use <codeph>CSIPHttpDigest</codeph>. The <xref href="GUID-F9FBAFBE-A895-3FD3-A526-604A6C9E035D.dita"><apiname>CSIPHttpDigest</apiname></xref> class
manages HTTP digest security settings and contains only static functions. </p> </section>
<section id="GUID-4195FAF9-D0D7-5046-BD62-9A314791BEFE"><title>Memory used</title> <p>After
the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> and <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> objects
are created, most of the memory consumed is by <xref href="GUID-77CFD812-7238-3B84-80FF-475BD73C3506.dita"><apiname>CSIPMessageElements</apiname></xref>, <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> and <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> classes. <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita"><apiname>CSIPTransactionBase</apiname></xref> holds the most recent SIP
response in a <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> object. When another
response is received, the previous <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> object
is deleted and a new one is created. </p> <p> <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> contains
a <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> object until the SIP request is transferred
to the server side of the SIP stack. <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> contains
the SIP request as <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref>. The application
owns the <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> objects.
When the transaction terminates, the application deletes these objects to
conserve memory. </p> <p>A non-<codeph>INVITE</codeph> <codeph>CSIPClientTransaction</codeph> is
deleted when it has received a final response or when the <codeph>ErrorOccured()</codeph> callback
is called. A non-<codeph>INVITE</codeph> <codeph>CSIPServerTransaction</codeph> is
deleted after the application sends a final response. </p> <p>The <codeph>INVITE</codeph> related
transactions are deleted if the <codeph>ErrorOccured()</codeph> callback function
is called. These transactions behave differently because of the presence of
an <codeph>ACK</codeph>. </p> <p>When the application sends a 2xx response
to an <codeph>INVITE</codeph> related <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref>,
it enters the <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita#GUID-93256B64-49C9-37F1-9A4E-72C521759749/GUID-DF7E4DCE-1F6D-3F2A-A638-5516A733AA9D"><apiname>CSIPTransactionBase::ETerminated</apiname></xref> state and
it is deleted at this point. A new <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> object
receives the ACK. </p> <p>When the application sends an <codeph>INVITE</codeph> request
and the <codeph>CSIPClientTransaction</codeph> receives a 2xx response, the
transaction enters the <codeph>CSIPTransactionBase::ETerminated</codeph> state.
The associated <codeph>CSIPClientTransaction</codeph> must not be deleted
as it is required to send the <codeph>ACK</codeph> and also to receive the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-2E76BDA0-CE87-3538-A791-963A90230FD4"><apiname>MSIPConnectionObserver::InviteCompleted()</apiname></xref> callback.
An <codeph>INVITE</codeph> related <codeph>CSIPClientTransaction</codeph> must
be deleted only after a <codeph>MSIPConnectionObserver::InviteCompleted</codeph> or <xref href="GUID-D14D6845-1C5E-3C15-8310-574A2A8C6C95.dita#GUID-D14D6845-1C5E-3C15-8310-574A2A8C6C95/GUID-DED382FB-A6D5-37D7-B8E4-05262F690068"><apiname>MSIPConnectionObserver
::ErrorOccured</apiname></xref> event is received, or if the state of the associated <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> goes
to <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita#GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94/GUID-68DD22DC-67E4-387B-BBE9-B9B96D9C9016"><apiname>CSIPConnection::EInactive</apiname></xref> or <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita#GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94/GUID-5963A947-BD5C-3B34-9D10-2CB5DC413774"><apiname>CSIPConnection::EUnavailable</apiname></xref>. </p> </section>
</conbody></concept>