sipXcallLib home page


SipConnection.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2005-2017 SIPez LLC. All rights reserved.
3 // Licensed to SIPfoundry under a Contributor Agreement.
4 //
5 // Copyright (C) 2004-2007 SIPfoundry Inc.
6 // Licensed by SIPfoundry under the LGPL license.
7 //
8 // Copyright (C) 2004-2006 Pingtel Corp. All rights reserved.
9 // Licensed to SIPfoundry under a Contributor Agreement.
10 //
11 // $$
13 
14 // Author: Daniel Petrie dpetrie AT SIPez DOT com
15 
16 #ifndef _SipConnection_h_
17 #define _SipConnection_h_
18 
19 // SYSTEM INCLUDES
20 //#include <...>
21 
22 // APPLICATION INCLUDES
23 #include "cp/Connection.h"
24 #include "cp/CSeqManager.h"
25 #include "net/SipContactDb.h"
26 #include "utl/UtlObservable.h"
27 
28 // DEFINES
29 // MACROS
30 // EXTERNAL FUNCTIONS
31 // EXTERNAL VARIABLES
32 // CONSTANTS
33 // STRUCTS
34 // TYPEDEFS
35 // FORWARD DECLARATIONS
36 class SipUserAgent;
37 class SipMessage;
38 class SdpCodec;
39 class SdpCodecList;
41 
42 //:Class short description which may consist of multiple lines (note the ':')
43 // Class detailed description which may extend to multiple lines
44 class SipConnection : public Connection, public UtlObservable
45 {
46  /* //////////////////////////// PUBLIC //////////////////////////////////// */
47 public:
48 
50  {
54  };
55 
56  static const UtlContainableType TYPE;
57 
58  /* ============================ CREATORS ================================== */
59 
60  SipConnection(const char* outboundLineAddress,
61  UtlBoolean isEarlyMediaFor180Enabled = TRUE,
62  CpCallManager* callMgr = NULL,
63  CpCall* call = NULL,
64  CpMediaInterface* mediaInterface = NULL,
65  SipUserAgent* sipUA = NULL,
66  int offeringDelayMilliSeconds = IMMEDIATE,
67  int sessionReinviteTimer = 0,
68  int availableBehavior = RING,
69  const char* forwardUnconditionalUrl = NULL,
70  int busyBehavior = BUSY,
71  const char* forwardOnBusy = NULL);
72  //:Default constructor
73 
74  virtual
76  //:Destructor
77 
78  /* ============================ MANIPULATORS ============================== */
79 
80  virtual UtlBoolean dequeue();
81 
82  virtual UtlBoolean send(SipMessage& message,
83  OsMsgQ* responseListener = NULL,
84  void* responseListenerData = NULL,
85  UtlBoolean bUseSendToTransportType = FALSE);
86 
87  virtual UtlBoolean dial(const char* dialString,
88  const char* callerId,
89  const char* callId,
90  const char* callController = NULL,
91  const char* originalCallConnection = NULL,
92  UtlBoolean requestQueuedCall = FALSE,
93  const void* pDisplay = NULL,
94  const void* pSecurity = NULL,
95  const char* locationHeader = NULL,
96  const int bandWidth = AUDIO_MICODEC_BW_DEFAULT,
97  UtlBoolean bOnHold = FALSE,
98  const char* originalCallId = NULL,
99  const RTP_TRANSPORT rtpTransportOptions = RTP_TRANSPORT_UDP);
101 
102  virtual UtlBoolean originalCallTransfer(UtlString& transferTargetAddress,
103  const char* transferControllerAddress,
104  const char* targetCallId);
105  // Initiate transfer on transfer controller connection in
106  // the original call.
107  // If fromAddress or toAddress are NULL it is assumed to
108  // be a blind transfer.
109 
110  virtual UtlBoolean targetCallBlindTransfer(const char* transferTargetAddress,
111  const char* transferControllerAddress);
112  // Communicate blind transfer on transfer controller connection in
113  // the target call. This is signaled by the transfer controller in the
114  // original call.
115 
116  virtual UtlBoolean transfereeStatus(int connectionState, int response);
117  // Method to communicate status to original call on transferee side
118 
119  virtual UtlBoolean transferControllerStatus(int connectionState, int response);
120  // Method to communicate status to target call on transfer
121  // controller side
122 
123  virtual void outOfFocus() ;
124 
125  virtual UtlBoolean answer(const void* hWnd = NULL);
126 
127  virtual UtlBoolean hangUp();
128 
129  virtual UtlBoolean hold();
130 
131  virtual UtlBoolean offHold();
132 
133  virtual UtlBoolean renegotiateCodecs();
134 
135  virtual UtlBoolean silentRemoteHold();
136 
137  virtual UtlBoolean accept(int forwardOnNoAnswerTimeOut,
138  const void *pSecurity = NULL,
139  const char* locationHeader = NULL,
140  const int bandWidth = AUDIO_MICODEC_BW_DEFAULT,
141  UtlBoolean sendEarlyMedia = FALSE);
142 
143  virtual UtlBoolean reject(int errorCode = 0, const char* errorText = "");
144 
145  virtual UtlBoolean redirect(const char* forwardAddress);
146 
147  virtual UtlBoolean canSendInfo() ;
148  virtual UtlBoolean sendInfo(UtlString contentType, UtlString sContent);
149 
150  virtual UtlBoolean processMessage(OsMsg& eventMessage);
151 
152  void setCallerId();
153 
154  virtual UtlBoolean getRemoteAddress(UtlString* remoteAddress) const;
155  virtual UtlBoolean getRemoteAddress(UtlString* remoteAddress,
156  UtlBoolean leaveFieldParmetersIn) const;
157 
158  static UtlBoolean processNewFinalMessage(SipUserAgent* sipUa,
159  OsMsg* eventMessage);
160 
161  void setContactType(SIPX_CONTACT_TYPE eType, Url* pToUrl = NULL) ;
162  void setContactId(SIPX_CONTACT_ID contactId) { mContactId = contactId; }
163 
164  void setExternalTransport(SIPX_TRANSPORT_DATA* pTransport) { if (pTransport) { mTransport = *pTransport; }}
165 
166  void setVoiceQualityReportTarget(const char* szTargetSipUrl) ;
167  void sendVoiceQualityReport(const char* szTargetSipUrl) ;
168 
169  void cacheMediaPassThroughData(CpMediaInterface::MEDIA_STREAM_TYPE mediaType,
170  int mediaTypeStreamIndex,
171  UtlString& receiveAddress,
172  int rtpPort,
173  int rtcpPort);
174 
175  /* ============================ ACCESSORS ================================= */
176 
177  virtual UtlContainableType getContainableType() const;
178 
179  virtual UtlBoolean getSession(SipSession& session);
180 
181  virtual OsStatus getFromField(UtlString* fromField);
182 
183  virtual OsStatus getToField(UtlString* toField);
184 
185  int getNextCseq();
186 
187  virtual OsStatus getInviteHeaderValue(const char* headerName, int headerIndex, UtlString& headerValue) const;
188 
189  /* ============================ INQUIRY =================================== */
190 
191  virtual UtlBoolean isInstanceOf(const UtlContainableType type) const;
192 
193  static UtlBoolean shouldCreateConnection(SipUserAgent& sipUa,
194  OsMsg& eventMessage,
195  SdpCodecList* codecFactory = NULL);
196 
197  virtual UtlBoolean willHandleMessage(OsMsg& eventMessage) const;
198 
199  virtual UtlBoolean isConnection(const char* callId,
200  const char* toTag,
201  const char* fromTag,
202  UtlBoolean strictCompare) const;
203 
204  virtual UtlBoolean isSameRemoteAddress(Url& remoteAddress) const;
205  virtual UtlBoolean isSameRemoteAddress(Url& remoteAddress,
206  UtlBoolean tagsMustMatch) const;
207 
208  void setSecurity(const SIPXTACK_SECURITY_ATTRIBUTES* const pSecurity);
209 
210  void getRemoteUserAgent(UtlString* userAgent);
211 
212  virtual UtlBoolean isInviteFromThisSide() const;
213 
214  virtual UtlBoolean isLocallyInitiatedRemoteHold() const ;
215 
216  virtual void registerObserver(UtlObserver* observer);
217 
221  virtual void removeObserver(UtlObserver* observer);
222 
223 
224 private:
225  UtlSList mObservers;
226 
227  static UtlRandom* sRandom;
228 
229  /* //////////////////////////// PROTECTED ///////////////////////////////// */
230 protected:
231 
236  virtual void notify(int code, void *pUserData);
237 
238  UtlBoolean prepareInviteSdpForSend(SipMessage* pMsg, int connectionId, const void* pSecurityAttribute) ;
239 
240  void setMediaDestination(const char* hostAddress,
241  int audioRtpPort,
242  int audioRtcpPort,
243  int videoRtpPort,
244  int videoRtcpPort,
245  const SdpBody* pRemoteBody) ;
246 
247  SIPX_CONTACT_TYPE selectCompatibleContactType(const SipMessage& request) ;
248  //: Select a compatible contact given the URI
249 
250  void updateContact(Url* pContactUrl,
251  SIPX_CONTACT_TYPE eType,
252  Url* pToUrl = NULL,
253  UtlString* pRemoteHostOrIp = NULL,
254  int* pRemotePort = NULL) ;
255 
256  void updateContactFromResponse(const SipMessage* pResponse) ;
257 
258  static UtlBoolean requestShouldCreateConnection(const SipMessage* sipMsg,
259  SipUserAgent& sipUa,
260  SdpCodecList* codecFactory);
261 
262  UtlBoolean doOffHold(UtlBoolean forceReInvite);
263 
264  UtlBoolean doHangUp(const char* dialString = NULL,
265  const char* callerId = NULL);
266 
267  void buildFromToAddresses(const char* dialString,
268  const char* callerId,
269  const char* callerDisplayName,
270  UtlString& fromAddress,
271  UtlString& goodToAddress);
272 
273  void buildLocalContact(Url fromAddress,
274  UtlString& localContact,
275  Url* pToUrl = NULL) ;//for outbound call
276 
277  UtlBoolean extendSessionReinvite();
278 
279  // SIP Request handlers
280  UtlBoolean processRequest(const SipMessage* request);
281  void processInviteRequest(const SipMessage* request);
282  void processReferRequest(const SipMessage* request);
283  void processAckRequest(const SipMessage* request);
284  void processByeRequest(const SipMessage* request);
285  void processCancelRequest(const SipMessage* request);
286  void processNotifyRequest(const SipMessage* request);
287 
288  // SIP Response handlers
289  UtlBoolean processResponse(const SipMessage* response);
290  void processInviteResponse(const SipMessage* request);
291  void processReferResponse(const SipMessage* request);
292  void processOptionsResponse(const SipMessage* request);
293  void processByeResponse(const SipMessage* request);
294  void processCancelResponse(const SipMessage* request);
295  void processNotifyResponse(const SipMessage* request);
296 
297  void processInviteResponseRinging(const SipMessage* response);
298  void processInviteResponseBusy(const SipMessage* response);
299  void processInviteResponseQueued(const SipMessage* response);
300  void processInviteResponseRequestPending(const SipMessage* response);
301  void processInviteResponseFailed(const SipMessage* response);
302  void processInviteResponseHangingUp(const SipMessage* response);
303  void processInviteResponseNormal(const SipMessage* response);
304  void processInviteResponseRedirect(const SipMessage* response);
305  void processInviteResponseUnknown(const SipMessage* response);
306 
307  void processInviteRequestBadTransaction(const SipMessage* request, int tag) ;
308  void processInviteRequestLoop(const SipMessage* request, int tag) ;
309  void processInviteRequestBadRefer(const SipMessage* request, int tag) ;
310  void processInviteRequestOffering(const SipMessage* request,
311  int tag,
312  UtlBoolean doesReplaceCallLegExist,
313  int replaceCallLegState,
314  UtlString& replaceCallId,
315  UtlString& replaceToTag,
316  UtlString& replaceFromTag);
317 
318 
319  void processInviteRequestReinvite(const SipMessage* request, int tag) ;
320 
321  void fireIncompatibleCodecsEvent(SdpCodecList* pSupportedCodecs,
322  SdpCodec** ppMatchedCodecs,
323  int nMatchedCodces) ;
326 
327  /* //////////////////////////// PRIVATE /////////////////////////////////// */
328 private:
329 
333 
334  UtlBoolean mbByeAttempted;
335  SipUserAgent* sipUserAgent;
336  UtlString mFromTag;
337  UtlString mLocationHeader;
338  SipMessage* inviteMsg;
339  UtlBoolean mbCancelling;
341  SIPXTACK_SECURITY_ATTRIBUTES* mpSecurity;
342 
343  SipMessage* mReferMessage;
344  UtlBoolean inviteFromThisSide;
346  UtlString mRemoteContact; //last contact frield from the other side
347  Url mFromUrl; // SIP address for the local side
348  Url mToUrl; // SIP address for the remote side
349  UtlString mRemoteUriStr; // SIP uri string for the remote side
350  UtlString mLocalUriStr; // SIP uri string for the local side
351  UtlString mContactUriStr; // SIP uri string for the contact
352 
356  UtlString mRouteField;
359  UtlString mAllowedRemote; // Methods supported by the otherside
360  UtlBoolean mIsReferSent; // used to determine whether to send ack when sequence number is smaller
361  UtlBoolean mIsAcceptSent; // used to determine whether to accept ack when sequence number is smaller
365  UtlString mLineId; //line identifier for incoming calls.
366  UtlString mLocalContact;
369  UtlBoolean mDropping ;
370  UtlString mRemoteUserAgent;
374 
375  UtlBoolean getInitialSdpCodecs(const SipMessage* sdpMessage,
376  SdpCodecList& supportedCodecsArray,
377  int& numCodecsInCommon,
378  SdpCodec** &commonCodecsForEncoder,
379  UtlString& remoteAddress,
380  int& remotePort,
381  int& remoteRtcpPort,
382  int& remoteVideoRtpPort,
383  int& remoteVideoRtcpPort,
384  SdpSrtpParameters& localSrtpParams,
385  SdpSrtpParameters& matchingSrtpParams,
386  int localBandwidth,
387  int& matchingBandwidth,
388  int localVideoFramerate,
389  int& matchingVideoFramerate);
390 
391  virtual void proceedToRinging(const SipMessage* inviteMessage,
392  SipUserAgent* sipUserAgent,
393  int tagNum,
394  int availableBehavior,
395  int numAddresses = 0,
396  UtlString hostAddresses[] = NULL,
397  int receiveRtpPorts[] = NULL,
398  int receiveRtcpPorts[] = NULL,
399  int receiveVideoRtpPorts[] = NULL,
400  int receiveVideoRtcpPorts[] = NULL,
401  RTP_TRANSPORT transportTypes[] = NULL,
402  int numMatchingCodecs = 0,
403  SdpCodec* matchingCodecs[] = NULL,
404  SdpSrtpParameters* matchingSrtpParams = NULL,
405  int totalBandwidth = 0,
406  int matchingVideoFramerate = 0);
407 
408  UtlBoolean isMethodAllowed(const char* method);
409 
410  void doBlindRefer();
411 
412 
414  //:Assignment operator (disabled)
415 
416  SipConnection(const SipConnection& rSipConnection);
417  //:Copy constructor (disabled)
418 
419 
420 };
421 
422 /* ============================ INLINE METHODS ============================ */
423 
424 #endif // _SipConnection_h_
void processInviteRequestOffering(const SipMessage *request, int tag, UtlBoolean doesReplaceCallLegExist, int replaceCallLegState, UtlString &replaceCallId, UtlString &replaceToTag, UtlString &replaceFromTag)
Definition: SipConnection.cpp:3009
Abstract call manager.
Definition: CpCallManager.h:97
void processInviteResponseBusy(const SipMessage *response)
Definition: SipConnection.cpp:4777
void updateContact(Url *pContactUrl, SIPX_CONTACT_TYPE eType, Url *pToUrl=NULL, UtlString *pRemoteHostOrIp=NULL, int *pRemotePort=NULL)
Definition: SipConnection.cpp:564
void processAckRequest(const SipMessage *request)
Definition: SipConnection.cpp:3974
Definition: Connection.h:164
void updateContactFromResponse(const SipMessage *pResponse)
Definition: SipConnection.cpp:699
void processInviteResponseRedirect(const SipMessage *response)
Definition: SipConnection.cpp:5387
virtual OsStatus getFromField(UtlString *fromField)
Definition: SipConnection.cpp:6445
UtlBoolean processResponse(const SipMessage *response)
Definition: SipConnection.cpp:4372
void setCallerId()
Definition: SipConnection.cpp:5965
virtual UtlBoolean dequeue()
Definition: SipConnection.cpp:218
void processInviteResponseRequestPending(const SipMessage *response)
Definition: SipConnection.cpp:4797
void processInviteRequestBadTransaction(const SipMessage *request, int tag)
Definition: SipConnection.cpp:2938
void processInviteResponse(const SipMessage *request)
Definition: SipConnection.cpp:5498
MediaStreamPassThroughData * mpPassThroughData
Definition: SipConnection.h:373
virtual UtlBoolean getSession(SipSession &session)
returns: TRUE/FALSE if the connection has an address. The connection may not have an address assigned...
Definition: SipConnection.cpp:6374
virtual void outOfFocus()
Definition: SipConnection.cpp:1105
UtlString mAllowedRemote
Definition: SipConnection.h:359
void processByeResponse(const SipMessage *request)
Definition: SipConnection.cpp:5850
void buildLocalContact(Url fromAddress, UtlString &localContact, Url *pToUrl=NULL)
Definition: SipConnection.cpp:730
UtlString mRouteField
Definition: SipConnection.h:356
UtlBoolean isMethodAllowed(const char *method)
Definition: SipConnection.cpp:6636
int mSessionReinviteTimer
Definition: SipConnection.h:358
SIPX_CONTACT_TYPE mContactType
Definition: SipConnection.h:367
void processReferRequest(const SipMessage *request)
Definition: SipConnection.cpp:3666
SIPXTACK_SECURITY_ATTRIBUTES * mpSecurity
Definition: SipConnection.h:341
void cacheMediaPassThroughData(CpMediaInterface::MEDIA_STREAM_TYPE mediaType, int mediaTypeStreamIndex, UtlString &receiveAddress, int rtpPort, int rtcpPort)
Definition: SipConnection.cpp:6278
static const UtlContainableType TYPE
Definition: SipConnection.h:56
virtual UtlBoolean canSendInfo()
Definition: SipConnection.cpp:1048
void processInviteRequest(const SipMessage *request)
Definition: SipConnection.cpp:3469
UtlBoolean mIsEarlyMediaFor180
Definition: SipConnection.h:364
SipConnection(const char *outboundLineAddress, UtlBoolean isEarlyMediaFor180Enabled=TRUE, CpCallManager *callMgr=NULL, CpCall *call=NULL, CpMediaInterface *mediaInterface=NULL, SipUserAgent *sipUA=NULL, int offeringDelayMilliSeconds=IMMEDIATE, int sessionReinviteTimer=0, int availableBehavior=RING, const char *forwardUnconditionalUrl=NULL, int busyBehavior=BUSY, const char *forwardOnBusy=NULL)
Definition: SipConnection.cpp:68
int remoteVideoRtcpPort
Definition: Connection.h:449
virtual UtlBoolean processMessage(OsMsg &eventMessage)
Definition: SipConnection.cpp:2532
UtlString mRemoteContact
Definition: SipConnection.h:346
Definition: CpPeerCall.h:38
void setContactId(SIPX_CONTACT_ID contactId)
Definition: SipConnection.h:162
UtlString mRemoteUserAgent
Definition: SipConnection.h:370
void setVoiceQualityReportTarget(const char *szTargetSipUrl)
Definition: SipConnection.cpp:6137
virtual ~SipConnection()
Definition: SipConnection.cpp:169
virtual UtlBoolean transfereeStatus(int connectionState, int response)
Definition: SipConnection.cpp:2149
CSeqManager manages the CSeq number space for a dialog.
Definition: CSeqManager.h:53
void fireAudioStopEvents(SIPX_MEDIA_CAUSE cause=MEDIA_CAUSE_NORMAL)
Definition: SipConnection.cpp:6996
static UtlBoolean requestShouldCreateConnection(const SipMessage *sipMsg, SipUserAgent &sipUa, SdpCodecList *codecFactory)
Definition: SipConnection.cpp:238
static UtlRandom * sRandom
Definition: SipConnection.h:227
UtlBoolean doHangUp(const char *dialString=NULL, const char *callerId=NULL)
Definition: SipConnection.cpp:2288
void processCancelResponse(const SipMessage *request)
Definition: SipConnection.cpp:5908
UtlBoolean mIsAcceptSent
Definition: SipConnection.h:361
UtlBoolean extendSessionReinvite()
Definition: SipConnection.cpp:2778
virtual UtlBoolean renegotiateCodecs()
Definition: SipConnection.cpp:1874
int mBandwidthId
Definition: SipConnection.h:363
UtlString mLineId
Definition: SipConnection.h:365
SIPX_TRANSPORT_DATA mTransport
Definition: SipConnection.h:371
virtual UtlBoolean offHold()
Definition: SipConnection.cpp:1868
virtual UtlBoolean transferControllerStatus(int connectionState, int response)
Definition: SipConnection.cpp:2142
SipMessage * inviteMsg
Definition: SipConnection.h:338
int getNextCseq()
Definition: SipConnection.cpp:6398
Definition: Connection.h:58
int lastLocalSequenceNumber
Definition: SipConnection.h:353
int SIPX_CONTACT_ID
Type for storing Contact Record identifiers.
Definition: sipXtapi.h:632
SIPX_CONTACT_TYPE selectCompatibleContactType(const SipMessage &request)
Definition: SipConnection.cpp:467
ReinviteStates
Definition: SipConnection.h:49
virtual OsStatus getToField(UtlString *toField)
Definition: SipConnection.cpp:6464
UtlBoolean mbLocallyInitiatedRemoteHold
Definition: SipConnection.h:340
UtlString mLocationHeader
Definition: SipConnection.h:337
void processByeRequest(const SipMessage *request)
Definition: SipConnection.cpp:4156
Definition: SipConnection.h:51
UtlBoolean doOffHold(UtlBoolean forceReInvite)
Definition: SipConnection.cpp:1913
Definition: Connection.h:139
SipMessage * mReferMessage
Definition: SipConnection.h:343
static UtlBoolean processNewFinalMessage(SipUserAgent *sipUa, OsMsg *eventMessage)
Definition: SipConnection.cpp:6047
virtual UtlBoolean sendInfo(UtlString contentType, UtlString sContent)
Definition: SipConnection.cpp:1054
UtlBoolean getInitialSdpCodecs(const SipMessage *sdpMessage, SdpCodecList &supportedCodecsArray, int &numCodecsInCommon, SdpCodec **&commonCodecsForEncoder, UtlString &remoteAddress, int &remotePort, int &remoteRtcpPort, int &remoteVideoRtpPort, int &remoteVideoRtcpPort, SdpSrtpParameters &localSrtpParams, SdpSrtpParameters &matchingSrtpParams, int localBandwidth, int &matchingBandwidth, int localVideoFramerate, int &matchingVideoFramerate)
Definition: SipConnection.cpp:4296
SipConnection & operator=(const SipConnection &rhs)
Definition: SipConnection.cpp:209
UtlSList mObservers
Definition: SipConnection.h:225
SIPX_CONTACT_TYPE
SIPX_CONTACT_TYPE is an enumeration of possible address types for use with SIP contacts and SDP conne...
Definition: sipXtapi.h:524
UtlBoolean inviteFromThisSide
Definition: SipConnection.h:344
UtlBoolean mIsReferSent
Definition: SipConnection.h:360
virtual OsStatus getInviteHeaderValue(const char *headerName, int headerIndex, UtlString &headerValue) const
Definition: SipConnection.cpp:6406
Url mToUrl
Definition: SipConnection.h:348
Definition: SipConnection.h:53
UtlString mLastRequestMethod
Definition: SipConnection.h:345
int reinviteState
Definition: SipConnection.h:355
virtual UtlBoolean answer(const void *hWnd=NULL)
Definition: SipConnection.cpp:1110
void processInviteRequestReinvite(const SipMessage *request, int tag)
Definition: SipConnection.cpp:3156
void setMediaDestination(const char *hostAddress, int audioRtpPort, int audioRtcpPort, int videoRtpPort, int videoRtcpPort, const SdpBody *pRemoteBody)
Definition: SipConnection.cpp:6738
virtual UtlBoolean dial(const char *dialString, const char *callerId, const char *callId, const char *callController=NULL, const char *originalCallConnection=NULL, UtlBoolean requestQueuedCall=FALSE, const void *pDisplay=NULL, const void *pSecurity=NULL, const char *locationHeader=NULL, const int bandWidth=AUDIO_MICODEC_BW_DEFAULT, UtlBoolean bOnHold=FALSE, const char *originalCallId=NULL, const RTP_TRANSPORT rtpTransportOptions=RTP_TRANSPORT_UDP)
Definition: SipConnection.cpp:763
int mRtpTcpRole
Definition: SipConnection.h:332
UtlString mContactUriStr
Definition: SipConnection.h:351
void processInviteResponseFailed(const SipMessage *response)
Definition: SipConnection.cpp:4815
void fireAudioStartEvents(SIPX_MEDIA_CAUSE cause=MEDIA_CAUSE_NORMAL)
Definition: SipConnection.cpp:6939
void processInviteResponseQueued(const SipMessage *response)
Definition: SipConnection.cpp:4790
void fireIncompatibleCodecsEvent(SdpCodecList *pSupportedCodecs, SdpCodec **ppMatchedCodecs, int nMatchedCodces)
Definition: SipConnection.cpp:6890
void processInviteResponseRinging(const SipMessage *response)
Definition: SipConnection.cpp:4621
virtual UtlBoolean willHandleMessage(OsMsg &eventMessage) const
Definition: SipConnection.cpp:6493
int remoteVideoRtpPort
Definition: Connection.h:448
void processInviteRequestLoop(const SipMessage *request, int tag)
Definition: SipConnection.cpp:2951
virtual UtlBoolean isLocallyInitiatedRemoteHold() const
Definition: SipConnection.cpp:6669
SIPX_CONTACT_ID mContactId
Definition: SipConnection.h:368
Normal cause; the call was likely torn down.
Definition: sipXtapiEvents.h:640
virtual UtlBoolean originalCallTransfer(UtlString &transferTargetAddress, const char *transferControllerAddress, const char *targetCallId)
param: requestQueuedCall - indicates that the caller wishes to have the callee queue the call if busy...
Definition: SipConnection.cpp:2034
virtual UtlBoolean hold()
Definition: SipConnection.cpp:1776
virtual UtlBoolean hangUp()
Definition: SipConnection.cpp:1771
void processInviteResponseUnknown(const SipMessage *response)
Definition: SipConnection.cpp:5475
virtual void notify(int code, void *pUserData)
The observable calls this to notify its observers of a change.
Definition: SipConnection.cpp:7210
Definition: SipConnection.h:44
virtual UtlContainableType getContainableType() const
Definition: SipConnection.cpp:6292
int lastRemoteSequenceNumber
Definition: SipConnection.h:354
void processInviteRequestBadRefer(const SipMessage *request, int tag)
Definition: SipConnection.cpp:2987
virtual UtlBoolean send(SipMessage &message, OsMsgQ *responseListener=NULL, void *responseListenerData=NULL, UtlBoolean bUseSendToTransportType=FALSE)
Definition: SipConnection.cpp:7133
virtual void proceedToRinging(const SipMessage *inviteMessage, SipUserAgent *sipUserAgent, int tagNum, int availableBehavior, int numAddresses=0, UtlString hostAddresses[]=NULL, int receiveRtpPorts[]=NULL, int receiveRtcpPorts[]=NULL, int receiveVideoRtpPorts[]=NULL, int receiveVideoRtcpPorts[]=NULL, RTP_TRANSPORT transportTypes[]=NULL, int numMatchingCodecs=0, SdpCodec *matchingCodecs[]=NULL, SdpSrtpParameters *matchingSrtpParams=NULL, int totalBandwidth=0, int matchingVideoFramerate=0)
Definition: SipConnection.cpp:7044
virtual UtlBoolean accept(int forwardOnNoAnswerTimeOut, const void *pSecurity=NULL, const char *locationHeader=NULL, const int bandWidth=AUDIO_MICODEC_BW_DEFAULT, UtlBoolean sendEarlyMedia=FALSE)
Accept and incoming INVITE and change from OFFERING to ALERTING state.
Definition: SipConnection.cpp:1453
void setSecurity(const SIPXTACK_SECURITY_ATTRIBUTES *const pSecurity)
Definition: SipConnection.cpp:6664
void doBlindRefer()
Definition: SipConnection.cpp:2105
void processOptionsResponse(const SipMessage *request)
Definition: SipConnection.cpp:5808
UtlBoolean processRequest(const SipMessage *request)
Definition: SipConnection.cpp:2849
UtlBoolean mbCancelling
Definition: SipConnection.h:339
SipUserAgent * sipUserAgent
Definition: SipConnection.h:335
UtlBoolean mbByeAttempted
Definition: SipConnection.h:334
UtlBoolean mDropping
Definition: SipConnection.h:369
Url mFromUrl
Definition: SipConnection.h:347
void processCancelRequest(const SipMessage *request)
Definition: SipConnection.cpp:4226
Definition: SipConnection.h:52
Definition: sipXtapiInternal.h:288
CSeqManager mCSeqMgr
Definition: SipConnection.h:330
UtlBoolean prepareInviteSdpForSend(SipMessage *pMsg, int connectionId, const void *pSecurityAttribute)
Definition: SipConnection.cpp:6681
Definition: Connection.h:145
virtual UtlBoolean isInviteFromThisSide() const
Definition: SipConnection.cpp:6674
void processNotifyResponse(const SipMessage *request)
Definition: SipConnection.cpp:5786
void processReferResponse(const SipMessage *request)
Definition: SipConnection.cpp:5688
void setExternalTransport(SIPX_TRANSPORT_DATA *pTransport)
Definition: SipConnection.h:164
void sendVoiceQualityReport(const char *szTargetSipUrl)
Definition: SipConnection.cpp:6147
int remoteRtcpPort
Definition: Connection.h:447
void getRemoteUserAgent(UtlString *userAgent)
Definition: SipConnection.cpp:6884
UtlString mFromTag
Definition: SipConnection.h:336
virtual void removeObserver(UtlObserver *observer)
Removes a listener of this observable.
Definition: SipConnection.cpp:7200
UtlString mRemoteUriStr
Definition: SipConnection.h:349
virtual UtlBoolean silentRemoteHold()
Definition: SipConnection.cpp:1901
virtual UtlBoolean targetCallBlindTransfer(const char *transferTargetAddress, const char *transferControllerAddress)
Definition: SipConnection.cpp:2134
void setContactType(SIPX_CONTACT_TYPE eType, Url *pToUrl=NULL)
Definition: SipConnection.cpp:6123
void processInviteResponseNormal(const SipMessage *response)
Definition: SipConnection.cpp:5027
virtual UtlBoolean isSameRemoteAddress(Url &remoteAddress) const
Definition: SipConnection.cpp:6342
virtual UtlBoolean getRemoteAddress(UtlString *remoteAddress) const
Definition: SipConnection.cpp:6297
static UtlBoolean shouldCreateConnection(SipUserAgent &sipUa, OsMsg &eventMessage, SdpCodecList *codecFactory=NULL)
Definition: SipConnection.cpp:398
int mHoldCompleteAction
Definition: SipConnection.h:362
virtual void registerObserver(UtlObserver *observer)
Registers a listener of this observable.
Definition: SipConnection.cpp:7192
Definition: CpCall.h:56
virtual UtlBoolean redirect(const char *forwardAddress)
Definition: SipConnection.cpp:1739
UtlString mVoiceQualityReportTarget
Definition: SipConnection.h:372
virtual UtlBoolean reject(int errorCode=0, const char *errorText="")
Definition: SipConnection.cpp:1684
int mRtpTransport
Definition: SipConnection.h:331
virtual UtlBoolean isInstanceOf(const UtlContainableType type) const
Definition: SipConnection.cpp:6485
int mDefaultSessionReinviteTimer
Definition: SipConnection.h:357
void buildFromToAddresses(const char *dialString, const char *callerId, const char *callerDisplayName, UtlString &fromAddress, UtlString &goodToAddress)
Definition: SipConnection.cpp:2472
UtlString mLocalUriStr
Definition: SipConnection.h:350
void processInviteResponseHangingUp(const SipMessage *response)
Definition: SipConnection.cpp:4993
UtlString mLocalContact
The local Contact: field value - a URI in name-addr format.
Definition: SipConnection.h:366
virtual UtlBoolean isConnection(const char *callId, const char *toTag, const char *fromTag, UtlBoolean strictCompare) const
Definition: SipConnection.cpp:6578
void processNotifyRequest(const SipMessage *request)
Definition: SipConnection.cpp:3833
SIPX_MEDIA_CAUSE
Enumeration of possible media event causes.
Definition: sipXtapiEvents.h:638