OPAL  Version 3.10.10
sipep.h
Go to the documentation of this file.
1 /*
2  * sipep.h
3  *
4  * Session Initiation Protocol endpoint.
5  *
6  * Open Phone Abstraction Library (OPAL)
7  * Formally known as the Open H323 project.
8  *
9  * Copyright (c) 2001 Equivalence Pty. Ltd.
10  *
11  * The contents of this file are subject to the Mozilla Public License
12  * Version 1.0 (the "License"); you may not use this file except in
13  * compliance with the License. You may obtain a copy of the License at
14  * http://www.mozilla.org/MPL/
15  *
16  * Software distributed under the License is distributed on an "AS IS"
17  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
18  * the License for the specific language governing rights and limitations
19  * under the License.
20  *
21  * The Original Code is Open Phone Abstraction Library.
22  *
23  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
24  *
25  * Contributor(s): ______________________________________.
26  *
27  * $Revision: 28428 $
28  * $Author: rjongbloed $
29  * $Date: 2012-10-01 03:38:50 -0500 (Mon, 01 Oct 2012) $
30  */
31 
32 #ifndef OPAL_SIP_SIPEP_H
33 #define OPAL_SIP_SIPEP_H
34 
35 #ifdef P_USE_PRAGMA
36 #pragma interface
37 #endif
38 
39 #ifndef _PTLIB_H
40 #include <ptlib.h>
41 #endif
42 
43 #include <opal/buildopts.h>
44 
45 #if OPAL_SIP
46 
47 #include <ptclib/threadpool.h>
48 #include <opal/rtpep.h>
49 #include <sip/sipcon.h>
50 #include <sip/sippdu.h>
51 #include <sip/handlers.h>
52 
53 #if OPAL_HAS_SIPIM
54 #include <im/sipim.h>
55 #endif
56 
57 class SIPRegisterHandler;
58 
59 
60 //
61 // provide flag so applications know if presence is available
62 //
63 #define OPAL_HAS_SIP_PRESENCE 1
64 
66 
70 class SIPAuthInfo : public PObject
71 {
72  public:
74  { }
75 
76  SIPAuthInfo(const PString & u, const PString & p)
77  { username = u; password = p; }
78  PString username;
79  PString password;
80 };
81 
83 
87 {
88  PCLASSINFO(SIPEndPoint, OpalRTPEndPoint);
89 
90  public:
96  OpalManager & manager,
97  unsigned maxConnectionThreads = 10,
98  unsigned maxHandlerThreads = 5
99  );
100 
103  ~SIPEndPoint();
105 
112  virtual void ShutDown();
113 
117  virtual PString GetDefaultTransport() const;
118 
123  virtual PBoolean NewIncomingConnection(
124  OpalTransport * transport
125  );
126 
156  virtual PSafePtr<OpalConnection> MakeConnection(
157  OpalCall & call,
158  const PString & party,
159  void * userData,
160  unsigned int options,
161  OpalConnection::StringOptions * stringOptions
162  );
163 
182  virtual void OnReleased(
183  OpalConnection & connection
184  );
185 
190  virtual PBoolean GarbageCollection();
192 
198  virtual SIPConnection * CreateConnection(
199  OpalCall & call,
200  const PString & token,
201  void * userData,
202  const SIPURL & destination,
203  OpalTransport * transport,
204  SIP_PDU * invite,
205  unsigned int options = 0,
206  OpalConnection::StringOptions * stringOptions = NULL
207 
208  );
209 
212  virtual PBoolean SetupTransfer(
213  const PString & token,
214  const PString & callIdentity,
215  const PString & remoteParty,
216  void * userData = NULL
217  );
218 
222  virtual PBoolean ForwardConnection(
223  SIPConnection & connection,
224  const PString & forwardParty
225  );
226 
237  bool ClearDialogContext(
238  const PString & descriptor
239  );
240  bool ClearDialogContext(
241  SIPDialogContext & context
242  );
244 
247 
251  OpalTransport * CreateTransport(
252  const SIPURL & remoteURL,
253  const PString & localInterface = PString::Empty()
254  );
255 
256  virtual void HandlePDU(
257  OpalTransport & transport
258  );
259 
262  virtual PBoolean OnReceivedPDU(
263  OpalTransport & transport,
264  SIP_PDU * pdu
265  );
266 
269  virtual bool OnReceivedConnectionlessPDU(
270  OpalTransport & transport,
271  SIP_PDU * pdu
272  );
273 
276  virtual void OnReceivedResponse(
277  SIPTransaction & transaction,
278  SIP_PDU & response
279  );
280 
283  virtual PBoolean OnReceivedINVITE(
284  OpalTransport & transport,
285  SIP_PDU * pdu
286  );
287 
290  virtual PBoolean OnReceivedNOTIFY(
291  OpalTransport & transport,
292  SIP_PDU & response
293  );
294 
297  virtual PBoolean OnReceivedREGISTER(
298  OpalTransport & transport,
299  SIP_PDU & pdu
300  );
301 
304  virtual PBoolean OnReceivedSUBSCRIBE(
305  OpalTransport & transport,
306  SIP_PDU & pdu
307  );
308 
311  virtual bool OnReceivedMESSAGE(
312  OpalTransport & transport,
313  SIP_PDU & response
314  );
315 
318  virtual bool OnReceivedOPTIONS(
319  OpalTransport & transport,
320  SIP_PDU & response
321  );
322 
325  virtual void OnTransactionFailed(
326  SIPTransaction & transaction
327  );
328 
336  virtual void OnRTPStatistics(
337  const SIPConnection & connection,
338  const RTP_Session & session
339  ) const;
341 
342 
350  PSafePtr<SIPConnection> GetSIPConnectionWithLock(
351  const PString & token,
352  PSafetyMode mode = PSafeReadWrite,
353  SIP_PDU::StatusCodes * errorCode = NULL
354  );
355 
356  virtual PBoolean IsAcceptedAddress(const SIPURL & toAddr);
357 
358 
393  bool Register(
394  const SIPRegister::Params & params,
395  PString & aor,
396  SIP_PDU::StatusCodes * reason = NULL
397  );
398 
399  // For backward compatibility
400  bool Register(
401  const SIPRegister::Params & params,
402  PString & aor,
403  bool asynchronous
404  );
405 
407  bool P_DEPRECATED Register(
408  const PString & host,
409  const PString & user = PString::Empty(),
410  const PString & autName = PString::Empty(),
411  const PString & password = PString::Empty(),
412  const PString & authRealm = PString::Empty(),
413  unsigned expire = 0,
414  const PTimeInterval & minRetryTime = PMaxTimeInterval,
415  const PTimeInterval & maxRetryTime = PMaxTimeInterval
416  );
417 
432  PBoolean IsRegistered(
433  const PString & aor,
434  bool includeOffline = false
435  );
436 
446  bool Unregister(
447  const PString & aor
448  );
449 
453  bool UnregisterAll();
454 
457  unsigned GetRegistrationsCount() const { return activeSIPHandlers.GetCount(SIP_PDU::Method_REGISTER); }
458 
461  PStringList GetRegistrations(
462  bool includeOffline = false
463  ) const { return activeSIPHandlers.GetAddresses(includeOffline, SIP_PDU::Method_REGISTER); }
464 
473  void * m_userData;
474  };
475 
478  virtual void OnRegistrationStatus(
479  const RegistrationStatus & status
480  );
481 
482  // For backward compatibility
483  virtual void OnRegistrationStatus(
484  const PString & aor,
485  PBoolean wasRegistering,
486  PBoolean reRegistering,
487  SIP_PDU::StatusCodes reason
488  );
489 
493  virtual void OnRegistrationFailed(
494  const PString & aor,
495  SIP_PDU::StatusCodes reason,
496  PBoolean wasRegistering
497  );
498 
502  virtual void OnRegistered(
503  const PString & aor,
504  PBoolean wasRegistering
505  );
506 
507 
547  bool Subscribe(
548  const SIPSubscribe::Params & params,
549  PString & token,
550  bool tokenIsAOR = true
551  );
552 
553  // For backward compatibility
554  bool Subscribe(
555  SIPSubscribe::PredefinedPackages eventPackage,
556  unsigned expire,
557  const PString & aor
558  );
559 
566  bool IsSubscribed(
567  const PString & aor,
568  bool includeOffline = false
569  );
570  bool IsSubscribed(
571  const PString & eventPackage,
572  const PString & aor,
573  bool includeOffline = false
574  );
575 
585  bool Unsubscribe(
586  const PString & aor,
587  bool invalidateNotifiers = false
588  );
589  bool Unsubscribe(
590  SIPSubscribe::PredefinedPackages eventPackage,
591  const PString & aor,
592  bool invalidateNotifiers = false
593  );
594  bool Unsubscribe(
595  const PString & eventPackage,
596  const PString & aor,
597  bool invalidateNotifiers = false
598  );
599 
603  bool UnsubcribeAll(
605  );
606  bool UnsubcribeAll(
607  const PString & eventPackage
608  );
609 
613  const SIPSubscribe::EventPackage & eventPackage
614  ) { return activeSIPHandlers.GetCount(SIP_PDU::Method_SUBSCRIBE, eventPackage); }
615 
618  PStringList GetSubscriptions(
619  const SIPSubscribe::EventPackage & eventPackage,
620  bool includeOffline = false
621  ) const { return activeSIPHandlers.GetAddresses(includeOffline, SIP_PDU::Method_REGISTER, eventPackage); }
622 
625 
628  virtual void OnSubscriptionStatus(
629  const SubscriptionStatus & status
630  );
631 
635  virtual void OnSubscriptionStatus(
636  const PString & eventPackage,
637  const SIPURL & uri,
638  bool wasSubscribing,
639  bool reSubscribing,
640  SIP_PDU::StatusCodes reason
641  );
642 
643  virtual void OnSubscriptionStatus(
644  SIPSubscribeHandler & handler,
645  const SIPURL & uri,
646  bool wasSubscribing,
647  bool reSubscribing,
648  SIP_PDU::StatusCodes reason
649  );
650 
653  virtual bool CanNotify(
654  const PString & eventPackage
655  );
656 
659  bool Notify(
660  const SIPURL & targetAddress,
661  const PString & eventPackage,
662  const PObject & body
663  );
664 
665 
668  virtual void OnDialogInfoReceived(
669  const SIPDialogNotification & info
670  );
671 
672  void SendNotifyDialogInfo(
673  const SIPDialogNotification & info
674  );
675 
676 
679  virtual PBoolean Message(
680  OpalIM & message
681  );
682 
685  bool SendMESSAGE(
686  SIPMessage::Params & params
687  );
688 
691  virtual void OnMESSAGECompleted(
692  const SIPMessage::Params & params,
693  SIP_PDU::StatusCodes reason
694  );
695 
698  : m_pdu(pdu), m_transport(transport), m_status(ResponseSent)
699  { }
700 
703  enum {
707  ResponseSent
708  } m_status;
709  };
710 
711  typedef PNotifierTemplate<ConnectionlessMessageInfo &> ConnectionlessMessageNotifier;
712  #define PDECLARE_ConnectionlessMessageNotifier(cls, fn) PDECLARE_NOTIFIER2(SIPEndPoint, cls, fn, SIPEndPoint::ConnectionlessMessageInfo &)
713  #define PCREATE_ConnectionlessMessageNotifier(fn) PCREATE_NOTIFIER2(fn, SIPEndPoint::ConnectionlessMessageInfo &)
714 
716  const ConnectionlessMessageNotifier & notifier
717  )
718  { m_onConnectionlessMessage = notifier; }
719 
720 
723  virtual bool SendOPTIONS(
724  const SIPOptions::Params & params
725  );
726 
730  virtual void OnOptionsCompleted(
731  const SIPOptions::Params & params,
732  const SIP_PDU & response
733  );
734 
735 
739  bool Publish(
740  const SIPSubscribe::Params & params,
741  const PString & body,
742  PString & aor
743  );
744  bool Publish(
745  const PString & to,
746  const PString & body,
747  unsigned expire = 300
748  );
749 
752  PStringList GetPublications(
753  const SIPSubscribe::EventPackage & eventPackage,
754  bool includeOffline = false
755  ) const { return activeSIPHandlers.GetAddresses(includeOffline, SIP_PDU::Method_PUBLISH, eventPackage); }
756 
757 
761  bool PublishPresence(
762  const SIPPresenceInfo & info,
763  unsigned expire = 300
764  );
765 
768  virtual void OnPresenceInfoReceived (
769  const SIPPresenceInfo & info
770  );
771  virtual void OnPresenceInfoReceived (
772  const PString & identity,
773  const PString & basic,
774  const PString & note
775  );
776 
777 
780  PBoolean Ping(
781  const PURL & to
782  );
783 
786  SIPConnection::PRACKMode GetDefaultPRACKMode() const { return m_defaultPrackMode; }
787 
790  void SetDefaultPRACKMode(SIPConnection::PRACKMode mode) { m_defaultPrackMode = mode; }
791 
792  void SetMIMEForm(PBoolean v) { mimeForm = v; }
793  PBoolean GetMIMEForm() const { return mimeForm; }
794 
795  void SetMaxRetries(unsigned r) { maxRetries = r; }
796  unsigned GetMaxRetries() const { return maxRetries; }
797 
799  const PTimeInterval & t1,
800  const PTimeInterval & t2
801  ) { retryTimeoutMin = t1; retryTimeoutMax = t2; }
802  const PTimeInterval & GetRetryTimeoutMin() const { return retryTimeoutMin; }
803  const PTimeInterval & GetRetryTimeoutMax() const { return retryTimeoutMax; }
804 
806  const PTimeInterval & t
807  ) { nonInviteTimeout = t; }
808  const PTimeInterval & GetNonInviteTimeout() const { return nonInviteTimeout; }
809 
811  const PTimeInterval & t
812  ) { pduCleanUpTimeout = t; }
813  const PTimeInterval & GetPduCleanUpTimeout() const { return pduCleanUpTimeout; }
814 
816  const PTimeInterval & t
817  ) { inviteTimeout = t; }
818  const PTimeInterval & GetInviteTimeout() const { return inviteTimeout; }
819 
821  const PTimeInterval & t
822  ) { m_progressTimeout = t; }
823  const PTimeInterval & GetProgressTimeout() const { return m_progressTimeout; }
824 
826  const PTimeInterval & t
827  ) { ackTimeout = t; }
828  const PTimeInterval & GetAckTimeout() const { return ackTimeout; }
829 
831  const PTimeInterval & t
832  ) { registrarTimeToLive = t; }
833  const PTimeInterval & GetRegistrarTimeToLive() const { return registrarTimeToLive; }
834 
836  const PTimeInterval & t
837  ) { notifierTimeToLive = t; }
838  const PTimeInterval & GetNotifierTimeToLive() const { return notifierTimeToLive; }
839 
841  const PTimeInterval & t
842  ) { natBindingTimeout = t; natBindingTimer.RunContinuous (natBindingTimeout); }
843  const PTimeInterval & GetNATBindingTimeout() const { return natBindingTimeout; }
844 
846  SIPTransaction * transaction
847  ) { transactions.SetAt(transaction->GetTransactionID(), transaction); }
848 
849  PSafePtr<SIPTransaction> GetTransaction(const PString & transactionID, PSafetyMode mode = PSafeReadWrite)
850  { return transactions.FindWithLock(transactionID, mode); }
851 
854  unsigned GetNextCSeq() { return ++lastSentCSeq; }
855 
861  void SetRegisteredUserMode(bool v) { m_registeredUserMode = v; }
862  bool GetRegisteredYserMode() const { return m_registeredUserMode; }
863 
866  SIP_PDU::StatusCodes HandleAuthentication(
867  SIPAuthentication * & authentication,
868  unsigned & authenticateErrors,
869  const SIP_PDU & response,
870  const SIPURL & proxyOverride,
871  const PString & username,
872  const PString & password
873  );
874 
877  virtual SIPURL GetRegisteredProxy(const SIPURL & remoteURL);
878 
884  virtual SIPURL GetRegisteredPartyName(const SIPURL & remoteURL, const OpalTransport & transport);
885 
886 
889  virtual SIPURL GetDefaultRegisteredPartyName(const OpalTransport & transport);
890 
891 
900  void AdjustToRegistration(
901  SIP_PDU & pdu,
902  const OpalTransport & transport,
903  const SIPConnection * connection
904  );
905 
915  virtual SIPURL GetLocalURL(
916  const OpalTransport & transport,
917  const PString & userName = PString::Empty()
918  );
919 
920 
923  const SIPURL & GetProxy() const { return proxy; }
924 
925 
928  void SetProxy(const SIPURL & url);
929 
930 
933  void SetProxy(
934  const PString & hostname,
935  const PString & username,
936  const PString & password
937  );
938 
939 
942  int GetDefaultAppearanceCode() const { return m_defaultAppearanceCode; }
943 
946  void SetDefaultAppearanceCode(int code) { m_defaultAppearanceCode = code; }
947 
954  virtual PString GetUserAgent() const;
955 
958  void SetUserAgent(const PString & str) { userAgentString = str; }
959 
960 
963  virtual unsigned GetAllowedMethods() const;
964 
965 
972  NumMethods
973  };
974 
975 
978  void SetNATBindingRefreshMethod(const NATBindingRefreshMethod m) { natMethod = m; }
979 
980  virtual SIPRegisterHandler * CreateRegisterHandler(const SIPRegister::Params & params);
981 
982  virtual void OnStartTransaction(SIPConnection & conn, SIPTransaction & transaction);
983 
984  void UpdateHandlerIndexes(SIPHandler * handler) { activeSIPHandlers.Update(handler); }
985 
986  protected:
987  PDECLARE_NOTIFIER(PThread, SIPEndPoint, TransportThreadMain);
988  PDECLARE_NOTIFIER(PTimer, SIPEndPoint, NATBindingRefresh);
989 
992 
994 
995  bool mimeForm;
996  unsigned maxRetries;
997  PTimeInterval retryTimeoutMin; // T1
998  PTimeInterval retryTimeoutMax; // T2
999  PTimeInterval nonInviteTimeout; // T3
1000  PTimeInterval pduCleanUpTimeout; // T4
1001  PTimeInterval inviteTimeout;
1002  PTimeInterval m_progressTimeout;
1003  PTimeInterval ackTimeout;
1004  PTimeInterval registrarTimeToLive;
1005  PTimeInterval notifierTimeToLive;
1006  PTimeInterval natBindingTimeout;
1008 
1012 
1013  PSafeDictionary<PString, SIPTransaction> transactions;
1014 
1017  PAtomicInteger lastSentCSeq;
1019 
1021  PSyncPoint m_sync;
1023  RegistrationCompletion() : m_reason(SIP_PDU::Information_Trying) { }
1024  };
1025  std::map<PString, RegistrationCompletion> m_registrationComplete;
1026 
1027  ConnectionlessMessageNotifier m_onConnectionlessMessage;
1028 
1029  // Thread pooling
1030  class SIP_Work
1031  {
1032  public:
1033  SIP_Work(SIPEndPoint & ep, SIP_PDU * pdu, const PString & token);
1034  virtual ~SIP_Work();
1035 
1036  virtual void Work();
1037 
1040  PString m_token;
1041  };
1042 
1043  class WorkThreadPool : public PQueuedThreadPool<SIP_Work>
1044  {
1045  public:
1046  WorkThreadPool(unsigned maxWorkers)
1047  : PQueuedThreadPool<SIP_Work>(maxWorkers)
1048  { }
1049  virtual WorkerThreadBase * CreateWorkerThread();
1050  } m_connectionThreadPool, m_handlerThreadPool;
1051 
1052 
1053  // Network interface checking
1054  enum {
1055  HighPriority = 80,
1056  LowPriority = 30,
1057  };
1058  class InterfaceMonitor : public PInterfaceMonitorClient
1059  {
1060  PCLASSINFO(InterfaceMonitor, PInterfaceMonitorClient);
1061  public:
1062  InterfaceMonitor(SIPEndPoint & manager, PINDEX priority);
1063 
1064  virtual void OnAddInterface(const PIPSocket::InterfaceEntry & entry);
1065  virtual void OnRemoveInterface(const PIPSocket::InterfaceEntry & entry);
1066 
1067  protected:
1069  };
1072 
1073  friend void InterfaceMonitor::OnAddInterface(const PIPSocket::InterfaceEntry & entry);
1074  friend void InterfaceMonitor::OnRemoveInterface(const PIPSocket::InterfaceEntry & entry);
1075 
1077 
1078  P_REMOVE_VIRTUAL_VOID(OnReceivedIntervalTooBrief(SIPTransaction &, SIP_PDU &));
1079  P_REMOVE_VIRTUAL_VOID(OnReceivedAuthenticationRequired(SIPTransaction &, SIP_PDU &));
1080  P_REMOVE_VIRTUAL_VOID(OnReceivedOK(SIPTransaction &, SIP_PDU &));
1081  P_REMOVE_VIRTUAL_VOID(OnMessageFailed(const SIPURL &, SIP_PDU::StatusCodes));
1082 };
1083 
1084 
1085 #endif // OPAL_SIP
1086 
1087 #endif // OPAL_SIP_SIPEP_H
1088 
1089 
1090 // End of File ///////////////////////////////////////////////////////////////
PTimeInterval inviteTimeout
Definition: sipep.h:1001
Definition: sippdu.h:1118
void SetAckTimeout(const PTimeInterval &t)
Definition: sipep.h:825
PTimer natBindingTimer
Definition: sipep.h:1015
Definition: sippdu.h:70
Definition: manager.h:74
PTimeInterval retryTimeoutMin
Definition: sipep.h:997
PTimeInterval notifierTimeToLive
Definition: sipep.h:1005
unsigned GetRegistrationsCount() const
Definition: sipep.h:457
bool m_wasRegistering
Was registering or unregistering.
Definition: sipep.h:469
bool GetRegisteredYserMode() const
Definition: sipep.h:862
PRACKMode
Mode for reliable provisional responses.
Definition: sipcon.h:570
void SetDefaultPRACKMode(SIPConnection::PRACKMode mode)
Definition: sipep.h:790
void SetDefaultAppearanceCode(int code)
Definition: sipep.h:946
PTimeInterval registrarTimeToLive
Definition: sipep.h:1004
Definition: handlers.h:495
Definition: rtp.h:502
PredefinedPackages
Definition: sippdu.h:1101
const SIPURL & GetProxy() const
Definition: sipep.h:923
Definition: sipep.h:969
Definition: sippdu.h:854
int GetDefaultAppearanceCode() const
Definition: sipep.h:942
SIPSubscribe::SubscriptionStatus SubscriptionStatus
Definition: sipep.h:624
void SetRegisteredUserMode(bool v)
Definition: sipep.h:861
PNotifierTemplate< ConnectionlessMessageInfo & > ConnectionlessMessageNotifier
Definition: sipep.h:711
Definition: sippdu.h:1314
unsigned GetNextCSeq()
Definition: sipep.h:854
void SetNonInviteTimeout(const PTimeInterval &t)
Definition: sipep.h:805
PTimeInterval natBindingTimeout
Definition: sipep.h:1006
SIPHandlersList activeSIPHandlers
Definition: sipep.h:1010
bool m_registeredUserMode
Definition: sipep.h:1007
Definition: sipcon.h:126
PString m_addressofRecord
Address of record for registration.
Definition: sipep.h:468
Definition: transports.h:703
Definition: sippdu.h:507
Definition: sippdu.h:1169
Definition: sipep.h:86
SIPConnection::PRACKMode GetDefaultPRACKMode() const
Definition: sipep.h:786
PSafeDictionary< PString, SIPTransaction > transactions
Definition: sipep.h:1013
const PTimeInterval & GetPduCleanUpTimeout() const
Definition: sipep.h:813
SIP_PDU * m_pdu
Definition: sipep.h:1039
SIP_PDU::StatusCodes m_reason
Definition: sipep.h:1022
StatusCodes
Definition: sippdu.h:518
Definition: sippdu.h:496
SIPRegisterHandler * m_handler
Handler for registration.
Definition: sipep.h:467
PStringList GetSubscriptions(const SIPSubscribe::EventPackage &eventPackage, bool includeOffline=false) const
Definition: sipep.h:618
const PTimeInterval & GetNATBindingTimeout() const
Definition: sipep.h:843
void AddTransaction(SIPTransaction *transaction)
Definition: sipep.h:845
const PTimeInterval & GetNonInviteTimeout() const
Definition: sipep.h:808
Definition: sipep.h:70
SIPEndPoint & m_endpoint
Definition: sipep.h:1068
Definition: im.h:42
OpalTransport & m_transport
Definition: sipep.h:702
void SetInviteTimeout(const PTimeInterval &t)
Definition: sipep.h:815
PTimeInterval m_progressTimeout
Definition: sipep.h:1002
RegistrationCompletion()
Definition: sipep.h:1023
const PTimeInterval & GetInviteTimeout() const
Definition: sipep.h:818
void * m_userData
User data corresponding to this registration.
Definition: sipep.h:473
const PTimeInterval & GetAckTimeout() const
Definition: sipep.h:828
Definition: sipep.h:1020
void SetNATBindingTimeout(const PTimeInterval &t)
Definition: sipep.h:840
void SetRegistrarTimeToLive(const PTimeInterval &t)
Definition: sipep.h:830
SIPConnection::PRACKMode m_defaultPrackMode
Definition: sipep.h:993
SIPAuthInfo()
Definition: sipep.h:73
Definition: handlers.h:366
Definition: connection.h:462
PSafePtr< SIPTransaction > GetTransaction(const PString &transactionID, PSafetyMode mode=PSafeReadWrite)
Definition: sipep.h:849
unsigned GetMaxRetries() const
Definition: sipep.h:796
Definition: sippdu.h:1358
PStringToString m_receivedConnectionTokens
Definition: sipep.h:1011
NATBindingRefreshMethod
Definition: sipep.h:968
Definition: sippdu.h:513
PStringList GetPublications(const SIPSubscribe::EventPackage &eventPackage, bool includeOffline=false) const
Definition: sipep.h:752
PString m_token
Definition: sipep.h:1040
Definition: handlers.h:54
Definition: call.h:65
OpalProductInfo m_productInfo
Server product info from registrar if available.
Definition: sipep.h:472
SIPURL proxy
Definition: sipep.h:990
InterfaceMonitor m_lowPriorityMonitor
Definition: sipep.h:1071
SIP_PDU::StatusCodes m_reason
Reason for status change.
Definition: sipep.h:471
void SetMIMEForm(PBoolean v)
Definition: sipep.h:792
bool m_reRegistering
Was a registration refresh.
Definition: sipep.h:470
Definition: sippdu.h:1139
ConnectionlessMessageInfo(OpalTransport &transport, SIP_PDU &pdu)
Definition: sipep.h:697
Definition: sippdu.h:734
void UpdateHandlerIndexes(SIPHandler *handler)
Definition: sipep.h:984
PHTTPClientAuthentication SIPAuthentication
Definition: sippdu.h:471
PStringList GetRegistrations(bool includeOffline=false) const
Definition: sipep.h:461
void SetProgressTimeout(const PTimeInterval &t)
Definition: sipep.h:820
PString GetTransactionID() const
ConnectionlessMessageNotifier m_onConnectionlessMessage
Definition: sipep.h:1027
void SetMaxRetries(unsigned r)
Definition: sipep.h:795
Definition: sipep.h:466
unsigned maxRetries
Definition: sipep.h:996
PTimeInterval ackTimeout
Definition: sipep.h:1003
int m_defaultAppearanceCode
Definition: sipep.h:1018
PBoolean GetMIMEForm() const
Definition: sipep.h:793
PString password
Definition: sipep.h:79
void SetNATBindingRefreshMethod(const NATBindingRefreshMethod m)
Definition: sipep.h:978
bool mimeForm
Definition: sipep.h:995
SIPAuthInfo(const PString &u, const PString &p)
Definition: sipep.h:76
Definition: sipep.h:1043
Definition: handlers.h:222
PString username
Definition: sipep.h:78
void SetNotifierTimeToLive(const PTimeInterval &t)
Definition: sipep.h:835
Registrar parameters.
Definition: sippdu.h:1059
PTimeInterval retryTimeoutMax
Definition: sipep.h:998
SIP_PDU & m_pdu
Definition: sipep.h:701
const PTimeInterval & GetRegistrarTimeToLive() const
Definition: sipep.h:833
Definition: sipep.h:1058
void SetUserAgent(const PString &str)
Definition: sipep.h:958
Definition: sipep.h:971
Definition: connection.h:353
PAtomicInteger lastSentCSeq
Definition: sipep.h:1017
WorkThreadPool(unsigned maxWorkers)
Definition: sipep.h:1046
PTimeInterval pduCleanUpTimeout
Definition: sipep.h:1000
Definition: handlers.h:188
const PTimeInterval & GetNotifierTimeToLive() const
Definition: sipep.h:838
const PTimeInterval & GetRetryTimeoutMax() const
Definition: sipep.h:803
bool m_disableTrying
Definition: sipep.h:1076
void SetPduCleanUpTimeout(const PTimeInterval &t)
Definition: sipep.h:810
void SetRetryTimeouts(const PTimeInterval &t1, const PTimeInterval &t2)
Definition: sipep.h:798
Definition: handlers.h:454
PTimeInterval nonInviteTimeout
Definition: sipep.h:999
InterfaceMonitor m_highPriorityMonitor
Definition: sipep.h:1070
Definition: rtpep.h:44
bool m_shuttingDown
Definition: sipep.h:1009
Definition: sipep.h:1030
Definition: sippdu.h:506
NATBindingRefreshMethod natMethod
Definition: sipep.h:1016
PString userAgentString
Definition: sipep.h:991
unsigned GetSubscriptionCount(const SIPSubscribe::EventPackage &eventPackage)
Definition: sipep.h:612
const PTimeInterval & GetRetryTimeoutMin() const
Definition: sipep.h:802
Definition: connection.h:312
PSyncPoint m_sync
Definition: sipep.h:1021
std::map< PString, RegistrationCompletion > m_registrationComplete
Definition: sipep.h:1025
const PTimeInterval & GetProgressTimeout() const
Definition: sipep.h:823
SIPEndPoint & m_endpoint
Definition: sipep.h:1038
Definition: sipep.h:970
void SetConnectionlessMessageNotifier(const ConnectionlessMessageNotifier &notifier)
Definition: sipep.h:715