[asterisk-scf-commits] asterisk-scf/integration/sip.git branch "directmedia" updated.

Commits to the Asterisk SCF project code repositories asterisk-scf-commits at lists.digium.com
Tue Aug 2 12:07:41 CDT 2011


branch "directmedia" has been updated
       via  83655076d1e60f7442ee0d86c281759419ca6cd4 (commit)
       via  114ac8ef996809a440dd86bd65eee997a35c14ce (commit)
       via  f738f0c7b03d342bae114b88c46fc0a70d22e5ec (commit)
       via  753d3c79491352932e066826a03c3bd831e5a58f (commit)
       via  50b9944368b79ef6b59fa6a5e488277f744c2389 (commit)
       via  1ac8012e89cb5412937c803dbb6b7451d08b297d (commit)
       via  319dee0a90edc3e89106b2ac39c464f294602516 (commit)
       via  685298fee308c586f5fb058740da50cf83c91847 (commit)
       via  713bee189b2ce86098341723895204c3633e32a9 (commit)
       via  9404329a8b8249a38809c708bfa55092635f2c92 (commit)
       via  736155bbeb65c6636154eb241939bdee6ad97947 (commit)
       via  9679afdc83b045a770a457d3bcc0f45d9e84031a (commit)
       via  14ab7604cb0ee0582db6b5a41ee9ba3687524ac2 (commit)
       via  d5456aa0f5700ef9d53821e9695411fa2e0801fd (commit)
       via  e2a3f36be58aaf8457b09f2aadd7d4e897176532 (commit)
       via  b18bdac4a5042928247a0a708b7e62fe4cec801f (commit)
       via  2b0ba42f2e557f5f5f3e5dba3b41f87a0937d8db (commit)
       via  c1891fda67849e50c553ccbba326ab431c8fa293 (commit)
       via  abc64b8ab827c6e1a59a6440f0c82ed4662cd8cb (commit)
       via  6f8904c6e789bb9aa71600da73ab81cc06563572 (commit)
       via  f76eb1c42e1d092c857ab97b1b4d16217117eb72 (commit)
       via  5cc1decf6fbf407a4d477f74f7832af9bf1df66d (commit)
       via  857167eac79c21b941df3c6da33e18a781ce0200 (commit)
       via  4e0d5ca1bd9541b4008fc6509d1d35b023d8da85 (commit)
       via  8ad92e0f71d3a6c512290a47009599745b331a49 (commit)
       via  7f73fcd33096ed9ae2e62f766d16fe8b5cc14ff0 (commit)
       via  e808b0bd8e49f3db8b3a4dbb96c8f864b2516d3b (commit)
       via  3e10abd5f24d590a9473631e26f3388d948bb1aa (commit)
       via  460e021559101b15e5f4b6cc26ed6ccdaf32635a (commit)
       via  a6c749627f93884ec497b66cafa0f3fe21afb7d6 (commit)
       via  9c6e22b59b6f63216629692f7aaad9aef61af856 (commit)
       via  36a1f7d1dda63edfeb93da238084c6be4e63d330 (commit)
       via  a40b4875461e729ed6e2d04881f163c209ab269f (commit)
       via  4f837a1a907c55ee0ee181b9efca036fffa42cf9 (commit)
       via  f3ac2038009f50b1ff84d203999dc79f2a0aea56 (commit)
       via  1cd868e3e2c2b46501aa3c37fc92275349befc2f (commit)
       via  7fbb239ffea714b04ecd722e176b42d6c2e8b6f6 (commit)
       via  63876621702e4612a815f0ec09e8876ae1b1b969 (commit)
       via  25a7e17f104524927281ffdccb402e250d55441d (commit)
       via  7199e1b3e192331a72ef0b7a4565efcbcd84b6a3 (commit)
       via  1bc6f6ab98e4cb6d5700c0e738fce54417bd1ca3 (commit)
       via  bc7436f4c69f1f9c68fcbd5d5d0da32100c8f83d (commit)
       via  f10ab08b0e4f1226ad2ba213d98c2ab905f41b51 (commit)
       via  c3251d20e8eebdcc809f906abd0b021dd3c20045 (commit)
       via  548ff031608447bea09380e34f582050fb2ffbe9 (commit)
       via  26d2049b6e33bd12b5c522a0b15cd9da38c600ed (commit)
       via  5cd389dd2155476fee88c9464bf0e5b6d2a1ab37 (commit)
       via  61fe208d8f18a300137f4ea96518d1747cec2be8 (commit)
       via  e19711fb128b2538bd793dd6993fa1a89a99909e (commit)
       via  4f79a16c7cb94d0b6aa5ed13c3bfdc81fc764641 (commit)
       via  6577d75e59c8b2f4241103f48fd114da433c8597 (commit)
       via  26ec91cf1ad7ae654b38a57e355d85cd7b2a6495 (commit)
       via  c36e88cc66b3a9f5e5cce710df4359e88079d9d9 (commit)
       via  b6c7ea6815ff93f17fd2355ef5f003712e0242fe (commit)
       via  fc8f71159530653f06e3217ec733058ce033d4fb (commit)
       via  de27bed2a112156fcd9d5af46ecb60bddc136554 (commit)
       via  6fed3a431208755055ab5a0cb697e8777e5a221c (commit)
       via  da5441b188e598254eb9d2cab3334341dec56f8e (commit)
       via  866381522f6a26c53e5395989ea8ee433c0e9d59 (commit)
       via  c93b75ba3affcf73ae553eb1a1913e92d40ff4fe (commit)
       via  5c240c011c171b75972122011149a30185945e04 (commit)
       via  33e084958ef7f2b355feb8f585d7a95c0a6ac94c (commit)
       via  c10b4677e95ed80276fd8b712e394c98c8692794 (commit)
       via  7d43289b0a830b2c545b4509ca3df7d8dd510186 (commit)
       via  b41a0dc88850f05a29d0adbf62016e22e625a26e (commit)
       via  a815ad12e32d57dc4ece7488fe72ce0e82f5e4d9 (commit)
       via  bd25df69bafa9d87b5c427a11422fc0c0c0fc5bd (commit)
       via  5c5e10ab63ed39300e37d63cac1f8154956db1a5 (commit)
       via  1b8c6f710bab05f5864611477838d6b56c673eb5 (commit)
       via  e528d7be81f34ac1789b74ad7415de949a1c19ed (commit)
       via  b61e242edd548a82eb5a492c7ffb16835746ceaa (commit)
       via  32c65526dd56d0bc7e03148dfd407bfa40423fff (commit)
       via  f256218dea09a6d6e3e177b35d333b6881bc6ed7 (commit)
       via  ba77572c9c5e5d5abdff517a1f4e144440d5906f (commit)
       via  bd53a89af2c3104984d46c118e2b7b158155f25c (commit)
       via  c58ab8b3d3623ccd57d63077f902eda632faaf7d (commit)
       via  59ccbfc493c091ebfe6d2a71d61026d9abf5a77c (commit)
       via  ef373b282be4a218a92e9981fc0c3163c181603b (commit)
       via  0a84ba53e4041c3d0afcab7caf954529b60b6f63 (commit)
       via  768256f0d324d42905eb9f3832c054193cd750b2 (commit)
       via  162d8a50bf6df93a6bc24d06e9042b5026c088ee (commit)
       via  41e944174785ff3370b4e165d491e8ff92cc0827 (commit)
       via  f860396ac01e1581dfe5f56ca30434c8b01b4270 (commit)
       via  be2641c8edb8a41556c4a0d9c2d86fb023917792 (commit)
       via  1ea02fa8ec59f386d62f04a0ef3c1adb77fd5319 (commit)
       via  3fa68dd21a3f9a62ca80400e48832d0e6225a2ea (commit)
       via  c977ec5bbe15874cd222c0b181c8c75419975224 (commit)
       via  4f75a2866c33895ced0757ea9f12e31fc40ba093 (commit)
       via  fc2f64b78c4c57c4c3b8fea3233a9fd3f52147f6 (commit)
       via  575abed0a58ba2e9f321b8ccc121a32356c7288d (commit)
       via  b0d2423c8b01c4432c7289f9648213e16406174a (commit)
       via  1dda9776c5a1f55037ac61f5290593e25a5677cb (commit)
       via  34797f06098f619838f094d9af7ec1a8c3ad4724 (commit)
       via  cfa23a3f19760c5266a9f4be0ad9302c977bfe8a (commit)
       via  a6bfcd47c9f662ac6dd4a2318d96579737a12837 (commit)
       via  57993cd407779a00004dc426cb282f06bccb5bd5 (commit)
       via  413750665895171f8eae4c8d86ff672b04a8f7cd (commit)
       via  b874caeeddf70e7b3911a4312494c8ae6de1ffd4 (commit)
       via  89e5e5522e81f9f9be4351eb6aab5f346a35586d (commit)
       via  448088a4f28ccdf90471cb60642d28bd4fdfd589 (commit)
       via  abbaa0220ce9faf1e97fd4845ee7f78076436193 (commit)
       via  0ffdaa56376184435e2ebb6b59dac42fbde51ab9 (commit)
       via  47ce4d4e87b887297289ff6511bde2feb807a476 (commit)
       via  e2736843dca94388a5ad562b7096a53451e2d037 (commit)
       via  9394b46cf8c83c0cfa83e73a34886aeb9f63913b (commit)
       via  66b54622b2edd8c6f41fb76950e81121813804e2 (commit)
       via  66c548481a50dbbaaa4f886d41af64cc39a5bfa3 (commit)
       via  b694e978ae5146b198914f8e114fff6333a75662 (commit)
       via  1f56ea5e07117170b407e17cc298ea9a79b60860 (commit)
       via  706a6986e046909d0035038412d759ba1e6c199c (commit)
       via  1624b232fe8cd35ab4a88ae0aa7d74498d98e3c9 (commit)
       via  591d2f8183dbed4dce5734ae09e5c2d2cb2de8c3 (commit)
       via  ae5e868cf90a06e489748299eca32564f248d52b (commit)
       via  1a6d54ba8e42b022e2dea6c696ab26ebac0345a2 (commit)
       via  c5ed036baf4b2eea39a2496e8c8267be96766dc2 (commit)
       via  433163526c9c788f53fb52ae4b389e3c77f7dc31 (commit)
       via  fa87159c9237db447843c6523f1daa7da2a67607 (commit)
       via  9ab8adb83f3038c03b8c1619bebcabbffc4e352e (commit)
       via  cb2abe96f218864eb0088c343b3a91ffa6e578e8 (commit)
       via  480dca6e1d5a251dd2ab680f776b46f37a052660 (commit)
       via  871d682ad8f89f934e68326fa6b3d861479321da (commit)
       via  2e6f61b3697981bb4a1af0a4f2738ff786668269 (commit)
       via  f8ba9bd5baffb67df87d1726c8635bb7d5d63ff2 (commit)
       via  49064db0f2c505427f826c7fc9608e39d3a2ffe2 (commit)
       via  72fce78916b051f6d76a4e61de9fb5d26eec10de (commit)
       via  51d7a0addacb9eae0fc88bea5b010a0559b4b887 (commit)
       via  df0ebe1c9b2b5eb5b99f1a5e4140dd13b3a14622 (commit)
       via  68f3e523c1a9ab857a1031926d7dff2760d26df1 (commit)
       via  c5eff00eb9e4e64bac262fbc8f0ff7631c9b5cf8 (commit)
       via  5aa5e56f84e645b9c5238215ef4fdeb0eba28f20 (commit)
       via  dd490ab030f402537f7edac3d1fcd443bc602e68 (commit)
       via  44db9747153ed1c73ff0d95cfc977ea5548403db (commit)
       via  572289496c4142e8cc748cfb641efd846b2a8dc0 (commit)
       via  d4899c06c3c254cdff2ceb2db6d2121dc6ad1f01 (commit)
       via  69d20d88cd1823c628ac51fdb9d5c86f545deede (commit)
       via  65074861612bdb49965f66e09c55ccbec46f960d (commit)
       via  d23a05405132459594db5c41bd4485207a887cce (commit)
       via  18220a9ec61fbb51381e8405c4b9c7e0e1c785a8 (commit)
       via  f63d75ebd26753eed1a2733ecbd21fe8f2a58044 (commit)
       via  b5c03db28904b7ab0b220ca5030a1dd4828169a1 (commit)
       via  e006915bdba4e8dead401dd98c896122e32b8974 (commit)
       via  53b69af9a3afc348e8a00f2ca45ccd1225155c07 (commit)
       via  f3343d7b5205f981b8d4002991f233a4e4e9645e (commit)
       via  53a20db873d9eb943ec65f9a6f10da125108ae94 (commit)
       via  7651845251617268572d954cc1cc94d1c609f7f7 (commit)
       via  529b6387bda5b3287a20d5166638d0ea08901e4d (commit)
       via  a90a0ae0e000a0679619e1dd2d0c065baaa5fb8c (commit)
       via  1e847b293c9f7ec3e6b2f051768f59a07d66f7d7 (commit)
       via  d479d28083104c2f4ec3aa74f232c46a1ad2e231 (commit)
       via  6913f102979144b1203fd032d1afffcf7cd8d09c (commit)
       via  5f9e9fd318c13fa5d58c30a6d2ab85d33fe59866 (commit)
       via  7837bf220f03f26090c509f427c003fc00deae76 (commit)
       via  0910249b0079177bd957635dd46286b16e769247 (commit)
       via  fbfa98d635f3cd6737585691cf82b4e65a0f1570 (commit)
       via  b34fd7b76ef0badf930c078b692a56a8d36b6e23 (commit)
       via  6a20f1ab5164bf1bbca0a3917ed5d3336773feeb (commit)
       via  8635a95c6569029b979ea21c9a4de78f35dac2cb (commit)
       via  41084ebbf79fb23cce9c1581b5f45c6aaffe7410 (commit)
       via  783d705e83c78f171ebd2128c5dadecf8cb9e44d (commit)
       via  8c1955a5240967abe7e74b8b7d5d3bc067c71842 (commit)
       via  aff68781848311763ebb92e299750dfe4b61eb5c (commit)
       via  f0d27ad5ba9caa722ce22b36975d1d4be70be762 (commit)
       via  78914f7922bf4620086eef4a77bead6ff55cf79d (commit)
       via  f4195acb409cf8ecaac3d63e3c85a52e98bbd9b1 (commit)
       via  dc9a45bea83aa73e62865969c445f2a8212be462 (commit)
       via  5a0a9a73584c42a5f188f3a1436512ccb6a01bbe (commit)
       via  acac1d74989f8aa6c28e9a9ef1b0ccb85197e30d (commit)
       via  81ddb566141c01bece3cdb115aaef0727fcc1558 (commit)
      from  ff2e2cf69648586840f9570f807e986ba43603df (commit)

Summary of changes:
 config/SipConfigurator.py                          |   68 ++-
 config/test_sip.conf                               |    2 +
 .../SipSessionManager/SipConfigurationIf.ice       |  830 +++++++++++---------
 .../SipSessionManager/SipStateReplicationIf.ice    |   91 ++-
 slice/SipIf.ice                                    |    1 +
 src/AuthManager.cpp                                |  440 +++++++++++
 src/AuthManager.h                                  |  183 +++++
 src/CMakeLists.txt                                 |   31 +
 src/DebugUtil.h                                    |   33 +
 src/{PJSipLoggingModule.h => NATOptions.h}         |   30 +-
 src/PJSipLoggingModule.cpp                         |    1 +
 src/PJSipManager.cpp                               |  300 +++++---
 src/PJSipManager.h                                 |   81 ++-
 src/PJSipModule.cpp                                |   45 +-
 src/PJSipModule.h                                  |   12 +-
 src/PJSipRegistrarModule.cpp                       |  831 ++++++++++++++++++++
 src/PJSipRegistrarModule.h                         |  203 +++++
 src/PJSipRegistrarModuleConstruction.cpp           |  104 +++
 src/PJSipSessionModule.cpp                         |  496 ++++++++++--
 src/PJSipSessionModule.h                           |  105 ++--
 src/PJSipSessionModuleConstruction.cpp             |   31 +-
 src/PJUtil.h                                       |   37 +
 src/STUNModule.cpp                                 |  157 ++++
 src/STUNModule.h                                   |  101 +++
 src/STUNTransport.cpp                              |  416 ++++++++++
 src/STUNTransport.h                                |   44 +
 src/STUNTransportConfig.cpp                        |  131 +++
 src/STUNTransportConfig.h                          |   52 ++
 src/SipConfiguration.cpp                           |  196 ++++-
 src/SipConfiguration.h                             |    2 +-
 src/SipEndpoint.cpp                                |   77 ++-
 src/SipEndpoint.h                                  |   77 ++-
 src/SipEndpointFactory.cpp                         |   17 +-
 src/SipEndpointFactory.h                           |    7 +-
 src/SipModule.h                                    |   68 ++
 src/SipRegistrarListener.cpp                       |  116 +++
 src/SipRegistrarListener.h                         |   46 ++
 src/SipSession.cpp                                 |  594 +++++++++++++--
 src/SipSession.h                                   |   89 ++-
 src/SipSessionManagerApp.cpp                       |  131 +++-
 src/SipSessionManagerEndpointLocator.cpp           |   14 +-
 src/SipStateReplicator.h                           |    3 +-
 src/SipStateReplicatorApp.cpp                      |    2 +-
 src/SipStateReplicatorListener.cpp                 |  259 +++++-
 src/SipTelephonyEventSink.cpp                      |  220 ++++++
 src/SipTelephonyEventSink.h                        |   61 ++
 src/SipTelephonyEventSource.cpp                    |  108 +++
 src/SipTelephonyEventSource.h                      |   63 ++
 src/TCPTransport.cpp                               |  111 +++
 src/TCPTransport.h                                 |   41 +
 src/TLSTransport.cpp                               |   93 +++
 src/TLSTransport.h                                 |   43 +
 src/Transports.cpp                                 |   71 ++
 src/Transports.h                                   |   74 ++
 src/UDPTransport.cpp                               |  117 +++
 src/UDPTransport.h                                 |   41 +
 56 files changed, 6660 insertions(+), 937 deletions(-)
 create mode 100644 src/AuthManager.cpp
 create mode 100644 src/AuthManager.h
 create mode 100644 src/DebugUtil.h
 copy src/{PJSipLoggingModule.h => NATOptions.h} (50%)
 create mode 100644 src/PJSipRegistrarModule.cpp
 create mode 100644 src/PJSipRegistrarModule.h
 create mode 100644 src/PJSipRegistrarModuleConstruction.cpp
 create mode 100644 src/PJUtil.h
 create mode 100644 src/STUNModule.cpp
 create mode 100644 src/STUNModule.h
 create mode 100644 src/STUNTransport.cpp
 create mode 100644 src/STUNTransport.h
 create mode 100644 src/STUNTransportConfig.cpp
 create mode 100644 src/STUNTransportConfig.h
 create mode 100644 src/SipModule.h
 create mode 100644 src/SipRegistrarListener.cpp
 create mode 100644 src/SipRegistrarListener.h
 mode change 100644 => 100755 src/SipSession.cpp
 create mode 100644 src/SipTelephonyEventSink.cpp
 create mode 100644 src/SipTelephonyEventSink.h
 create mode 100644 src/SipTelephonyEventSource.cpp
 create mode 100644 src/SipTelephonyEventSource.h
 create mode 100644 src/TCPTransport.cpp
 create mode 100644 src/TCPTransport.h
 create mode 100644 src/TLSTransport.cpp
 create mode 100644 src/TLSTransport.h
 create mode 100644 src/Transports.cpp
 create mode 100644 src/Transports.h
 create mode 100644 src/UDPTransport.cpp
 create mode 100644 src/UDPTransport.h


- Log -----------------------------------------------------------------
commit 83655076d1e60f7442ee0d86c281759419ca6cd4
Merge: 114ac8e f738f0c
Author: Joshua Colp <jcolp at digium.com>
Date:   Tue Aug 2 14:08:00 2011 -0300

    Merge branch 'master' into directmedia
    
    Conflicts:
    	slice/AsteriskSCF/Replication/SipSessionManager/SipStateReplicationIf.ice
    	src/PJSipSessionModule.cpp
    	src/SipEndpoint.h

diff --cc slice/AsteriskSCF/Replication/SipSessionManager/SipStateReplicationIf.ice
index 1376ca9,9f9cbec..abf7951
--- a/slice/AsteriskSCF/Replication/SipSessionManager/SipStateReplicationIf.ice
+++ b/slice/AsteriskSCF/Replication/SipSessionManager/SipStateReplicationIf.ice
@@@ -152,17 -152,17 +152,17 @@@ module V
     {
        //XXX There probably needs to be a lot more specified
  	  //here, but frankly I have no clue.
-       string mEndpointName;
-       Ice::Identity mSessionObjectId;
-       Ice::Identity mMediaSessionObjectId;
-       Ice::Identity mSessionControllerObjectId;
-       AsteriskSCF::Media::V1::StreamSourceSeq mSources;
-       AsteriskSCF::Media::V1::StreamSinkSeq mSinks;
-       AsteriskSCF::Media::V1::StreamInformationDict mStreams;
-       RTPMediaSessionDict mRTPMediaSessions;
-       SessionListenerSeq mListeners;
-       AsteriskSCF::SessionCommunications::V1::Bridge *mBridge;
-       AsteriskSCF::SessionCommunications::V1::SessionCookieDict mCookies;
+       string endpointName;
+       Ice::Identity sessionObjectId;
+       Ice::Identity mediaSessionObjectId;
+       Ice::Identity sessionControllerObjectId;
+       AsteriskSCF::Media::V1::StreamSourceSeq sources;
+       AsteriskSCF::Media::V1::StreamSinkSeq sinks;
+       AsteriskSCF::Media::V1::StreamInformationDict streams;
 -      RTPMediaSessionSeq rtpMediaSessions;
++      RTPMediaSessionDict rtpMediaSessions;
+       SessionListenerSeq listeners;
+       AsteriskSCF::SessionCommunications::V1::Bridge *bridge;
+       AsteriskSCF::SessionCommunications::V1::SessionCookieDict cookies;
     };
  
     class SipRegistrarStateItem extends SipStateItem
diff --cc src/PJSipSessionModule.cpp
index 6f28054,44a1469..98cfd21
--- a/src/PJSipSessionModule.cpp
+++ b/src/PJSipSessionModule.cpp
@@@ -250,26 -252,26 +252,26 @@@ void PJSipSessionModule::replicateState
      {
          boost::shared_lock<boost::shared_mutex> lock(sessionInfo->mLock);
          lg(Debug) << "--- Begin Session " << sessionInfo->mSessionState->key;
-         lg(Debug) << "Endpoint name: " << sessionInfo->mSessionState->mEndpointName;
-         lg(Debug) << "Session object identity: " << sessionInfo->mSessionState->mSessionObjectId.name;
-         lg(Debug) << "Media session object identity: " << sessionInfo->mSessionState->mMediaSessionObjectId.name;
+         lg(Debug) << "Endpoint name: " << sessionInfo->mSessionState->endpointName;
+         lg(Debug) << "Session object identity: " << sessionInfo->mSessionState->sessionObjectId.name;
+         lg(Debug) << "Media session object identity: " << sessionInfo->mSessionState->mediaSessionObjectId.name;
  
- 	for (RTPMediaSessionDict::const_iterator mediaSession = sessionInfo->mSessionState->mRTPMediaSessions.begin();
-              mediaSession != sessionInfo->mSessionState->mRTPMediaSessions.end();
 -	for (RTPMediaSessionSeq::const_iterator mediaSession = sessionInfo->mSessionState->rtpMediaSessions.begin();
++	for (RTPMediaSessionDict::const_iterator mediaSession = sessionInfo->mSessionState->rtpMediaSessions.begin();
+              mediaSession != sessionInfo->mSessionState->rtpMediaSessions.end();
               ++mediaSession)
          {
 -            lg(Debug) << "Media session: " << (*mediaSession);
 +            lg(Debug) << "Media session: " << mediaSession->second;
          }
  
-         lg(Debug) << "Bridge: " << sessionInfo->mSessionState->mBridge;
+         lg(Debug) << "Bridge: " << sessionInfo->mSessionState->bridge;
          lg(Debug) << "--- Begin Invite Session " << sessionInfo->mInviteState->key;
-         lg(Debug) << "Current state: " << sessionInfo->mInviteState->mCurrentState;
-         lg(Debug) << "Cancelling: " << sessionInfo->mInviteState->mCancelling;
-         lg(Debug) << "Pending cancel: " << sessionInfo->mInviteState->mPendingCancel;
-         lg(Debug) << "Cause: " << sessionInfo->mInviteState->mCause;
-         lg(Debug) << "Cause text: " << sessionInfo->mInviteState->mCauseText;
-         lg(Debug) << "Notify: " << sessionInfo->mInviteState->mNotify;
-         lg(Debug) << "Last Ack CSeq: " << sessionInfo->mInviteState->mLastAckCseq;
+         lg(Debug) << "Current state: " << sessionInfo->mInviteState->currentState;
+         lg(Debug) << "Cancelling: " << sessionInfo->mInviteState->cancelling;
+         lg(Debug) << "Pending cancel: " << sessionInfo->mInviteState->pendingCancel;
+         lg(Debug) << "Cause: " << sessionInfo->mInviteState->cause;
+         lg(Debug) << "Cause text: " << sessionInfo->mInviteState->causeText;
+         lg(Debug) << "Notify: " << sessionInfo->mInviteState->notify;
+         lg(Debug) << "Last Ack CSeq: " << sessionInfo->mInviteState->lastAckCseq;
          if (sessionInfo->mNeedsRemoval == true)
          {
              removeItems.push_back(sessionInfo->mInviteState->key);
diff --cc src/SipEndpoint.h
index f462829,d4afefc..9db49e9
--- a/src/SipEndpoint.h
+++ b/src/SipEndpoint.h
@@@ -157,8 -158,9 +158,11 @@@ public
      // Whether we are using IPv6 for media transport
      // or not.
      bool rtpOverIPv6;
 +    // Whether we are allowing direct media or not
 +    bool directMedia;
+     // The method by which we will transmit
+     // DTMF to an endpoint
+     AsteriskSCF::Configuration::SipSessionManager::V1::SipDTMFOption dtmf;
      // 
      // Enables ICE transport.
      //
@@@ -337,8 -337,8 +341,9 @@@ public
      void setMediaNATOptions(bool useICE, bool useTURN);
      void setSRTPOptions(const SipEndpointMediaSRTPConfig& srtpConfig);
      void setSignalingNATOptions(bool enable);
 +
      AsteriskSCF::Media::V1::StreamInformationDict getStreamTopology();
+     void setDTMFMethod(AsteriskSCF::Configuration::SipSessionManager::V1::SipDTMFOption dtmf);
  
  private:
      /**
diff --cc src/SipSession.cpp
index 22810bf,aa2c3f5..29926fc
--- a/src/SipSession.cpp
+++ b/src/SipSession.cpp
@@@ -965,12 -811,13 +994,13 @@@ SipSession::SipSession(const Ice::Objec
   * Replica constructor.
   */
  SipSession::SipSession(const Ice::ObjectAdapterPtr& adapter, const SipEndpointPtr& endpoint,
 -                       const std::string& destination, const Ice::Identity& /* sessionid */,
 +                       const std::string& destination, const Ice::Identity& sessionid,
                         const Ice::Identity& controllerid,
 -                       const Ice::Identity& mediaid, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionSeq& mediasessions,
 +                       const Ice::Identity& mediaid, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionDict& mediasessions,
                         const AsteriskSCF::Media::V1::StreamSourceSeq& sources, const AsteriskSCF::Media::V1::StreamSinkSeq& sinks,
                         const PJSipManagerPtr& manager, const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
-                        const AsteriskSCF::System::Component::V1::ReplicaPtr& replica, bool isUAC, const NATEndpointOptions& natOptions)
+                        const AsteriskSCF::System::Component::V1::ReplicaPtr& replica, bool isUAC, const SipEndpointConfig &config,
+                        const NATEndpointOptions& natOptions)
      : mImplPriv(new SipSessionPriv(adapter, endpoint, destination, manager, serviceLocator, replica, natOptions))
  {
      activateIceObjects(mImplPriv->mManager->getSessionModule()->getSessionCreationHooks());
diff --cc src/SipSession.h
index f52619d,10faf86..09f1bc3
--- a/src/SipSession.h
+++ b/src/SipSession.h
@@@ -109,10 -114,10 +114,10 @@@ public
          const AsteriskSCF::SessionCommunications::V1::SessionListenerPrx&, const PJSipManagerPtr& manager,
          const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
          const AsteriskSCF::System::Component::V1::ReplicaPtr& replica,
-         bool ipv6, bool isUAC, const NATEndpointOptions& natOptions);
+         bool ipv6, bool isUAC, const SipEndpointConfig& config, const NATEndpointOptions& natOptions);
  
      SipSession(const Ice::ObjectAdapterPtr&, const SipEndpointPtr&, const std::string&, const Ice::Identity&, const Ice::Identity&,
 -        const Ice::Identity&, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionSeq&,
 +        const Ice::Identity&, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionDict&,
          const AsteriskSCF::Media::V1::StreamSourceSeq&, const AsteriskSCF::Media::V1::StreamSinkSeq&,
          const PJSipManagerPtr& manager, const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
          const AsteriskSCF::System::Component::V1::ReplicaPtr& replica,
@@@ -261,9 -282,17 +286,17 @@@
  
      void setStreams(const AsteriskSCF::Media::V1::StreamInformationDict& streams);
  
 -    AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionSeq getRTPMediaSessions();
 +    AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionDict getRTPMediaSessions();
  
      void enqueueSessionWork(const AsteriskSCF::System::WorkQueue::V1::SuspendableWorkPtr&);
+ 
+     void setTelephonyEventSourcesAndSinks(const SipEndpointConfig& config);
+ 
+     bool isTelephonyEventSource();
+ 
+     SipTelephonyEventSourcePtr getSipTelephonyEventSource();
+ 
+     bool isTelephonyEventSink();
  private:
  
      void initializePJSIPStructs();

commit 114ac8ef996809a440dd86bd65eee997a35c14ce
Merge: ff2e2cf 50b9944
Author: Joshua Colp <jcolp at digium.com>
Date:   Tue Aug 2 13:50:24 2011 -0300

    Merge branch 'master' into directmedia
    
    Conflicts:
    	config/Sip.config
    	slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
    	slice/AsteriskSCF/Replication/SipSessionManager/SipStateReplicationIf.ice
    	src/PJSipSessionModule.cpp
    	src/PJSipSessionModuleConstruction.cpp
    	src/SipConfiguration.cpp
    	src/SipEndpoint.cpp
    	src/SipEndpoint.h
    	src/SipSession.cpp
    	src/SipSession.h

diff --cc slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
index f1c90c7,715e039..1612a12
--- a/slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
+++ b/slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
@@@ -32,418 -32,457 +32,468 @@@ module SipSessionManage
  ["suppress"]
  module V1
  {
-    /**
-     * Service locator category for finding the configuration service
-     */
-    const string ConfigurationDiscoveryCategory = "SipConfiguration";
- 
-    /**
-     * Service locator parameters class for discovering the configuration service
-     */
-    unsliceable class SipConfigurationParams extends AsteriskSCF::Core::Discovery::V1::ServiceLocatorParams
-    {
-        /**
- 	* Unique name for the configuration service
- 	*/
-        string name;
-    };
- 
-    /**
-     * Local visitor class for visiting SIP configuration groups
-     */
-    local class SipConfigurationGroupVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationGroupVisitor
-    {
-    };
- 
-    /**
-     * Generic SIP configuration group
-     */
-    ["visitor:SipConfigurationGroupVisitor"] class SipConfigurationGroup extends AsteriskSCF::System::Configuration::V1::ConfigurationGroup
-    {
-    };
- 
-    /**
-     * General SIP configuration group that contains general items related to the SIP component as a whole
-     */
-    class SipGeneralGroup extends SipConfigurationGroup
-    {
-    };
- 
-    /**
-     * Local visitor class for visiting SIP configuration items
-     */
-    local class SipConfigurationItemVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationItemVisitor
-    {
-    };
  
-    /**
-     * Generic SIP configuration item
-     */
-    ["visitor:SipConfigurationItemVisitor"] class SipConfigurationItem extends AsteriskSCF::System::Configuration::V1::ConfigurationItem
-    {
-    };
- 
-    /**
-     * SIP Endpoint group, used to configure an endpoint
-     */
-    class SipEndpointGroup extends SipConfigurationGroup
-    {
-       /**
-        * Name of the endpoint being configured
-        */
-       string name;
-    };
- 
-    /**
-     * SIP Domain group, used to configure a specific domain
-     */
-    class SipDomainGroup extends SipConfigurationGroup
-    {
-       /**
-        * Name of the domain being configured
-        */
-       string domain;
-    };
- 
-    /**
-     * Domain item for bindings
-     */
-    class SipBindingsItem extends SipConfigurationItem
-    {
-       /**
-        * Addresses the domain is reachable over
-        */
-       Ice::StringSeq bindings;
-    };
- 
-    /**
-     * Generic SIP transport group that others derive from, primarily created since each one has
-     * the requirement of a name
-     */
-    ["visitor:SipConfigurationGroupVisitor"] class SipTransportGroup extends SipConfigurationGroup
-    {
-       /**
-        * Name of the specific transport. Since each one may have multiple transports this differentiates
-        * them.
-        */
-       string name;
-    };
+ /**
+  * Service locator category for finding the configuration service
+  */
+ const string ConfigurationDiscoveryCategory = "SipConfiguration";
  
-    /**
-     * Host information configuration item
-     */
-    ["visitor:SipConfigurationItemVisitor"] class SipHostItem extends SipConfigurationItem
-    {
-       /**
-        * String containing the IP address or string address
-        */
-       string host;
- 
-       /**
-        * Port number
-        */
-       int port;
-    };
+ /**
+  * Service locator parameters class for discovering the configuration service
+  */
+ unsliceable class SipConfigurationParams extends AsteriskSCF::Core::Discovery::V1::ServiceLocatorParams
+ {
+     /**
+      * Unique name for the configuration service
+      */
+     string name;
+ };
+ 
+ /**
+  * Local visitor class for visiting SIP configuration groups
+  */
+ local class SipConfigurationGroupVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationGroupVisitor
+ {
+ };
  
-    /**
-     * Source transport address configuration item
-     */
-    ["visitor:SipConfigurationItemVisitor"] class SipSourceTransportAddressItem extends SipHostItem
-    {
-    };
+ /**
+  * Generic SIP configuration group
+  */
+ ["visitor:SipConfigurationGroupVisitor"] class SipConfigurationGroup extends AsteriskSCF::System::Configuration::V1::ConfigurationGroup
+ {
+ };
  
-    /**
-     * Target destination address configuration item
-     */
-    ["visitor:SipConfigurationItemVisitor"] class SipTargetDestinationAddressItem extends SipHostItem
-    {
-    };
+ /**
+  * General SIP configuration group that contains general items related to the SIP component as a whole
+  */
+ class SipGeneralGroup extends SipConfigurationGroup
+ {
+ };
  
-    /**
-     * Crypto certificate configuration item
-     */
-    class SipCryptoCertificateItem extends SipConfigurationItem
-    {
-       /**
-        * Full location of certificate authority file
-        */
-       string certificateAuthority;
- 
-       /**
-        * Full location of certificate file
-        */
-       string certificate;
- 
-       /**
-        * Full location of private key file
-        */
-       string privateKey;
- 
-       /**
-        * Password to open private key file
-        */
-       string privateKeyPassword;
-    };
+ /**
+  * Local visitor class for visiting SIP configuration items
+  */
+ local class SipConfigurationItemVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationItemVisitor
+ {
+ };
  
-    /**
-     * Crypto requirement configuration item
-     */
-    class SipCryptoRequirementsItem extends SipConfigurationItem
-    {
-        /**
- 	* Require verification of server certificate
- 	*/
-        bool requireVerifiedServer = false;
- 
-        /**
- 	* Require verification of client certificate
- 	*/
-        bool requireVerifiedClient = false;
- 
-        /**
- 	* Require client certificate be present
- 	*/
-        bool requireClientCertificate = false;
-    };
+ /**
+  * Generic SIP configuration item
+  */
+ ["visitor:SipConfigurationItemVisitor"] class SipConfigurationItem extends AsteriskSCF::System::Configuration::V1::ConfigurationItem
+ {
+ };
  
-    /**
-     * TLS protocol methods
-     */
-    enum TLSProtocolMethod
-    {
-        PROTOCOLMETHODUNSPECIFIED,
-        PROTOCOLMETHODTLSV1,
-        PROTOCOLMETHODSSLV2,
-        PROTOCOLMETHODSSLV3,
-        PROTOCOLMETHODSSLV23,
-    };
+ /**
+  * SIP Endpoint group, used to configure an endpoint
+  */
+ class SipEndpointGroup extends SipConfigurationGroup
+ {
+     /**
+      * Name of the endpoint being configured
+      */
+     string name;
+ };
+ 
+ /**
+  * SIP Domain group, used to configure a specific domain
+  */
+ class SipDomainGroup extends SipConfigurationGroup
+ {
+     /**
+      * Name of the domain being configured
+      */
+     string domain;
+ };
+ 
+ /**
+  * Domain item for bindings
+  */
+ class SipBindingsItem extends SipConfigurationItem
+ {
+     /**
+      * Addresses the domain is reachable over
+      */
+     Ice::StringSeq bindings;
+ };
+ 
+ /**
+  * Generic SIP transport group that others derive from, primarily created since each one has
+  * the requirement of a name
+  */
+ class SipTransportGroup extends SipConfigurationGroup
+ {
+     /**
+      * Name of the specific transport. Since each one may have multiple transports this differentiates
+      * them.
+      */
+     string name;
+ };
+ 
+ /**
+  * Host information configuration item
+  */
+ class SipHostItem extends SipConfigurationItem
+ {
+     /**
+      * String containing the IP address or string address
+      */
+     string host;
+ 
+     /**
+      * Port number
+      */
+     int port;
+ };
+ 
+ /**
+  * Source transport address configuration item
+  */
+ class SipSourceTransportAddressItem extends SipHostItem
+ {
+ };
  
-    /**
-     * General crypto configuration item
-     */
-    class SipCryptoItem extends SipConfigurationItem
-    {
-        /**
- 	* TLS protocol method to use
- 	*/
-        TLSProtocolMethod protocolMethod = PROTOCOLMETHODUNSPECIFIED;
- 
-        /**
- 	* Supported ciphers (OpenSSL format)
- 	*/
-        string supportedCiphers;
- 
-        /**
- 	* Server name
- 	*/
-        string serverName;
- 
-        /**
- 	* TLS negotiation timeout in seconds
- 	*/
-        int timeout = 0;
-    };
+ /**
+  * Target destination address configuration item
+  */
+ class SipTargetDestinationAddressItem extends SipHostItem
+ {
+ };
  
-    /**
-     * Routing service configuration item
-     */
-    class SipRoutingItem extends SipConfigurationItem
-    {
-       /**
-        * Name of the routing service to use
-        */
-       string routingServiceName;
-    };
+ /**
+  * Crypto certificate configuration item
+  */
+ class SipCryptoCertificateItem extends SipConfigurationItem
+ {
+     /**
+      * Full location of certificate authority file
+      */
+     string certificateAuthority;
+ 
+     /**
+      * Full location of certificate file
+      */
+     string certificate;
+ 
+     /**
+      * Full location of private key file
+      */
+     string privateKey;
+ 
+     /**
+      * Password to open private key file
+      */
+     string privateKeyPassword;
+ };
+ 
+ /**
+  * Crypto requirement configuration item
+  */
+ class SipCryptoRequirementsItem extends SipConfigurationItem
+ {
+     /**
+      * Require verification of server certificate
+      */
+     bool requireVerifiedServer = false;
+ 
+     /**
+      * Require verification of client certificate
+      */
+     bool requireVerifiedClient = false;
+ 
+     /**
+      * Require client certificate be present
+      */
+     bool requireClientCertificate = false;
+ };
+ 
+ /**
+  * TLS protocol methods
+  */
+ enum TLSProtocolMethod
+ {
+     PROTOCOLMETHODUNSPECIFIED,
+     PROTOCOLMETHODTLSV1,
+     PROTOCOLMETHODSSLV2,
+     PROTOCOLMETHODSSLV3,
+     PROTOCOLMETHODSSLV23,
+ };
+ 
+ /**
+  * General crypto configuration item
+  */
+ class SipCryptoItem extends SipConfigurationItem
+ {
+     /**
+      * TLS protocol method to use
+      */
+     TLSProtocolMethod protocolMethod = PROTOCOLMETHODUNSPECIFIED;
+ 
+     /**
+      * Supported ciphers (OpenSSL format)
+      */
+     string supportedCiphers;
+ 
+     /**
+      * Server name
+      */
+     string serverName;
+ 
+     /**
+      * TLS negotiation timeout in seconds
+      */
+     int timeout = 0;
+ };
+     
+ /**
+  * SRTP Crypto Key information.
+  */
+ class SRTPCryptoKey
+ {
+     /**
+      * The cipher suite name.
+      */
+     string suite;
  
-    /**
-     * Direct media configuration item
-     */
-    class DirectMediaItem extends SipConfigurationItem
-    {
-        /**
-         * Whether direct media support is enabled or not
-         */
-        bool enabled = false;
-    };
+     /**
+      * The key information for the suite.
+      */
+     string cryptoKey;
+ };
  
-    /**
-     * RTP Media service configuration item
-     */
-    class SipRTPMediaServiceItem extends SipConfigurationItem
-    {
-       /**
-        * Name of the RTP media service to use
-        */
-       string mediaServiceName;
- 
-       /**
-        * Whether to choose an IPv6 RTP media service or not
-        */
-       bool requireIPv6 = false;
-    };
+ sequence<SRTPCryptoKey> SRTPCryptoKeySeq;
  
-    /**
-     * Signaling NAT configuration item
-     */
-    class SipSignalingNATItem extends SipConfigurationItem
-    {
-       /**
-        * Boolean for whether STUN is enabled
-        */
-       bool stun;
-    };
+ /**
++ * Direct media configuration item
++ */
++class DirectMediaItem extends SipConfigurationItem
++{
++    /**
++     * Whether direct media support is enabled or not
++     */
++    bool enabled = false;
++};
++
++/**
+  * SRTP crypto configuration.
+  */
+ class SRTPCryptoItem extends SipConfigurationItem
+ {
  
-    /**
-     * Media NAT configuration item
-     */
-    class SipMediaNATItem extends SipConfigurationItem
-    {
-       /**
-        * Boolean for whether symmetric RTP is enabled
-        */
-       bool symmetricRTP;
- 
-       /**
-        * Boolean for whether STUN is enabled
-        */
-       bool stun;
- 
-       /**
-        * Boolean for whether ICE is enabled
-        */
-       bool interactiveconnectivityestablishment;
- 
-       /**
-        * Boolean for whether TURN is enabled
-        */
-       bool turn;
-    };
+     /**
+      * Most of the time the following values will be false. They can be overriden to be true however.
+      */
+     bool enableAuthentication;
+     bool enableEncryption;
  
-    /**
-     * Access control lists item
-     */
-    class SipACLItem extends SipConfigurationItem
-    {
-       /**
-        * Name of this ACL item. A user may want to have multiple.
-        */
-       string name;
- 
-       /**
-        * Ranges of allowed hosts
-        */
-       Ice::StringSeq allowRanges;
- 
-       /**
-        * Specific allowed hosts
-        */
-       Ice::StringSeq allowHosts;
- 
-       /**
-        * Ranges of denied hosts
-        */
-       Ice::StringSeq denyRanges;
- 
-       /**
-        * Specific denied hosts
-        */
-       Ice::StringSeq denyHosts;
-    };
+     /**
+      * The suites and keys supported by this endpoint.
+      */
+     SRTPCryptoKeySeq cryptoKeys;
+ };
  
+ /**
+  * Routing service configuration item
+  */
+ class SipRoutingItem extends SipConfigurationItem
+ {
+     /**
+      * Name of the routing service to use
+      */
+     string routingServiceName;
+ };
+ 
+ /**
+  * RTP Media service configuration item
+  */
+ class SipRTPMediaServiceItem extends SipConfigurationItem
+ {
+     /**
+      * Name of the RTP media service to use
+      */
+     string mediaServiceName;
+ 
+     /**
+      * Whether to choose an IPv6 RTP media service or not
+      */
+     bool requireIPv6 = false;
+ };
+ 
+ /**
+  * Signaling NAT configuration item
+  */
+ class SipSignalingNATItem extends SipConfigurationItem
+ {
+     /**
+      * Boolean for whether STUN is enabled
+      */
+     bool stun;
+ };
+ 
+ /**
+  * STUN server to be used by Sip signalling.
+  */
+ class SipSignalingSTUNHostItem extends SipConfigurationItem
+ {
+     /**
+      * Address for the STUN server.
+      **/
+     string address;
+ 
+     /**
+      * Port for the STUN host.
+      */
+     int port;
+ };
+ 
+ /**
+  * Media NAT configuration item
+  */
+ class SipMediaNATItem extends SipConfigurationItem
+ {
+     /**
+      * Boolean for whether ICE is enabled
+      */
+     bool enableICE;
+ 
+     /**
+      * Boolean for whether TURN is enabled
+      */
+     bool enableTURN;
+ };
+ 
+ /**
+  * Access control lists item
+  */
+ class SipACLItem extends SipConfigurationItem
+ {
+     /**
+      * Name of this ACL item. A user may want to have multiple.
+      */
+     string name;
+ 
+     /**
+      * Ranges of allowed hosts
+      */
+     Ice::StringSeq allowRanges;
+ 
+     /**
+      * Specific allowed hosts
+      */
+     Ice::StringSeq allowHosts;
+ 
+     /**
+      * Ranges of denied hosts
+      */
+     Ice::StringSeq denyRanges;
+ 
+     /**
+      * Specific denied hosts
+      */
+     Ice::StringSeq denyHosts;
+ };
+ 
+ /**
+  * Allowable call directions
+  */
+ enum SipAllowableCallDirection
+ {
+     Disabled,
+     Inbound,
+     Outbound,
+     Both,
+ };
+ 
+ /**
+  * Allowable call direction item
+  */
+ class SipAllowableCallDirectionItem extends SipConfigurationItem
+ {
+     /**
+      * What direction is permitted for this endpoint
+      */
+     SipAllowableCallDirection callDirection = Both;
+ };
+ 
+ /**
+ * Allowable media format item
+ */
+ class SipMediaFormatItem extends SipConfigurationItem
+ {
     /**
-     * Allowable call directions
+     * Name of the media format
      */
-    enum SipAllowableCallDirection
-    {
-       Disabled,
-       Inbound,
-       Outbound,
-       Both,
-    };
+    string name;
  
     /**
-     * Allowable call direction item
+     * Sample rate for frames
+     *
+     * This is specified in Hz and has a default value of 8000. 
      */
-    class SipAllowableCallDirectionItem extends SipConfigurationItem
-    {
-       /**
-        * What direction is permitted for this endpoint
-        */
-       SipAllowableCallDirection callDirection = Both;
-    };
+    int sampleRate = 8000;
  
     /**
-     * Allowable media format item
+     * Amount of audio in frames
+     *
+     * This is specified in 
      */
-    class SipMediaFormatItem extends SipConfigurationItem
-    {
-        /**
-         * Name of the media format
-         */
-        string name;
- 
-        /**
-         * Sample rate for frames
-         *
-         * This is specified in Hz and has a default value of 8000. 
-         */
-        int sampleRate = 8000;
- 
-        /**
-         * Amount of audio in frames
-         *
-         * This is specified in 
-         */
-        int frameSize;
- 
-        /**
-         * Any format specific parameters
-         */
-        Ice::StringSeq formatSpecific;
-    };
+    int frameSize;
  
     /**
-     * User agent presentation configuration item
+     * Format specific attributes.
      */
-    class SipUserAgentItem extends SipConfigurationItem
-    {
-       /**
-        * String that our user agent should appear as
-        */
-       string userAgent;
-    };
+    Ice::StringSeq formatSpecific;
+ };
  
-    /**
-     * Transport information configuration item
-     */
-    class SipEndpointTransportItem extends SipConfigurationItem
-    {
-        /**
- 	* What directions to require secure transport in
- 	*/
-        SipAllowableCallDirection secureTransport = Disabled;
-    };
+ /**
+  * User agent presentation configuration item
+  */
+ class SipUserAgentItem extends SipConfigurationItem
+ {
+     /**
+      * String that our user agent should appear as
+      */
+     string userAgent;
+ };
+ 
+ /**
+  * Transport information configuration item
+  */
+ class SipEndpointTransportItem extends SipConfigurationItem
+ {
+     /**
+      * What directions to require secure transport in
+      */
+     SipAllowableCallDirection secureTransport = Disabled;
+ };
+ 
+ /**
+  * Group of configuration items related to a UDP transport
+  */
+ class SipUDPTransportGroup extends SipTransportGroup
+ {
+ };
  
-    /**
-     * Group of configuration items related to a UDP transport
-    */
-    ["visitor:SipConfigurationGroupVisitor"] class SipUDPTransportGroup extends SipTransportGroup
-    {
-    };
+ /**
+  * Group of configuration items related to a TCP transport
+  */
+ class SipTCPTransportGroup extends SipTransportGroup
+ {
+ };
  
-    /**
-     * Group of configuration items related to a TCP transport
-     */
-    ["visitor:SipConfigurationGroupVisitor"] class SipTCPTransportGroup extends SipTransportGroup
-    {
-    };
+ /**
+  * Group of configuration items related to a TLS transport
+  */
+ class SipTLSTransportGroup extends SipTransportGroup
+ {
+ };
  
-    /**
-     * Group of configuration items related to a TLS transport
-     */
-    ["visitor:SipConfigurationGroupVisitor"] class SipTLSTransportGroup extends SipTransportGroup
-    {
-    };
+ /**
+  * Group of configuration items related to a STUN enabled transport
+  */
+ class SipSTUNTransportGroup extends SipTransportGroup
+ {
+ };
  
  }; /* module V1 */
  
diff --cc src/SipEndpoint.cpp
index a409cb3,624da0c..8014806
--- a/src/SipEndpoint.cpp
+++ b/src/SipEndpoint.cpp
@@@ -266,11 -290,22 +290,28 @@@ void SipEndpoint::setRTPOverIPv6(bool e
      mImplPriv->mConfig.sessionConfig.rtpOverIPv6 = enabled;
  }
  
++
 +void SipEndpoint::setDirectMedia(bool enabled)
 +{
 +    mImplPriv->mConfig.sessionConfig.directMedia = enabled;
 +}
 +
+ void SipEndpoint::setMediaNATOptions(bool useICE, bool useTURN)
+ {
+     mImplPriv->mConfig.sessionConfig.rtpOverICE = useICE;
+     mImplPriv->mConfig.sessionConfig.rtpICEIncludeTURN = useTURN;
+ }
+ 
+ void SipEndpoint::setSRTPOptions(const SipEndpointMediaSRTPConfig& srtpConfig)
+ {
+     mImplPriv->mConfig.srtpConfig = srtpConfig;
+ }
+ 
+ void SipEndpoint::setSignalingNATOptions(bool enable)
+ {
+     mImplPriv->mConfig.transportConfig.enableNAT = enable;
+ }
+ 
  void SipEndpoint::addFormat(const std::string& name, int sampleRate, int frameSize, const Ice::StringSeq& formatSpecific)
  {
      SDPDescriptorServiceLocatorParamsPtr params = new SDPDescriptorServiceLocatorParams();
diff --cc src/SipEndpoint.h
index 6d9ccc4,a0657d5..f462829
--- a/src/SipEndpoint.h
+++ b/src/SipEndpoint.h
@@@ -142,8 -157,37 +157,39 @@@ public
      // Whether we are using IPv6 for media transport
      // or not.
      bool rtpOverIPv6;
 +    // Whether we are allowing direct media or not
 +    bool directMedia;
+     // 
+     // Enables ICE transport.
+     //
+     bool rtpOverICE;
+     //
+     // Enables TURN as a viable mechanism for traversing NATs.
+     //
+     bool rtpICEIncludeTURN;
+ 
+     SipEndpointSessionConfig() :
+         rtpOverIPv6(false),
+         rtpOverICE(false),
+         rtpICEIncludeTURN(false)
+     {
+     }
+ };
+ 
+ class CryptoKey
+ {
+ public:
+     std::string suite;
+     std::string cryptoKey;
+ };
+ typedef std::vector<CryptoKey> CryptoKeys;
+ 
+ class SipEndpointMediaSRTPConfig
+ {
+ public:
+     bool enableAuthentication;
+     bool enableEncryption;
+     CryptoKeys cryptoKeys;
  };
  
  /**
@@@ -274,6 -330,9 +333,11 @@@ public
      /**
       * API call which returns the stream topology to be used for an SDP offer.
       */
++
+     void setMediaNATOptions(bool useICE, bool useTURN);
+     void setSRTPOptions(const SipEndpointMediaSRTPConfig& srtpConfig);
+     void setSignalingNATOptions(bool enable);
++
      AsteriskSCF::Media::V1::StreamInformationDict getStreamTopology();
  
  private:
diff --cc src/SipSession.cpp
index 637fd98,1e494f6..22810bf
mode 100644,100755..100755
--- a/src/SipSession.cpp
+++ b/src/SipSession.cpp
@@@ -221,9 -237,9 +237,9 @@@ public
      pjsip_inv_session *mInviteSession;
  
      /**
-      * A dictionary of streams and their respective RTP session.
 -     * A vector of RTP media sessions belonging to this endpoint.
++     * A dictionary of RTP media sessions belonging to this endpoint.
       */
 -    RTPMediaSessionSeq mRTPSessions;
 +    RTPMediaSessionDict mRTPSessions;
  
      /**
       * A vector of media sources associated with this endpoint.
@@@ -568,192 -586,10 +586,190 @@@ private
      SipSessionPtr mSession;
  };
  
 +class CheckDirectConnectionsOperation : public SuspendableWork
 +{
 +public:
 +    CheckDirectConnectionsOperation(
 +        const AsteriskSCF::Media::V1::AMD_DirectMediaConnection_checkDirectConnectionsPtr& cb,
 +        const AsteriskSCF::Media::V1::DirectMediaConnectionDict& connections,
 +        const boost::shared_ptr<SipSessionPriv>& sessionPriv)
 +        : mCb(cb), mConnections(connections), mImplPriv(sessionPriv) { }
-         
++
 +    SuspendableWorkResult execute(const SuspendableWorkListenerPtr&)
 +    {
 +        SipEndpointConfig &config = mImplPriv->mEndpoint->getConfig();
 +
 +        if (config.sessionConfig.directMedia == false)
 +        {
 +            mCb->ice_response(Ice::StringSeq());
 +            return Complete;
 +        }
 +
 +        Ice::StringSeq allowedStreams;
 +
 +        lg(Debug) << "Executing a checkDirectConnections Operation";
 +
 +        // Iterate through each requested connection checking if it is possible
 +        for (AsteriskSCF::Media::V1::DirectMediaConnectionDict::const_iterator connection = mConnections.begin();
 +             connection != mConnections.end();
 +             ++connection)
 +        {
 +            // Do we have a local stream that matches this?
- 	    StreamInformationDict::const_iterator stream = mImplPriv->mStreams.find(connection->first);
++            StreamInformationDict::const_iterator stream = mImplPriv->mStreams.find(connection->first);
 +
 +            // Uh, if they passed in a stream that we know nothing about skip it...
 +            if (stream == mImplPriv->mStreams.end())
 +            {
 +                continue;
 +            }
 +
 +            StreamSinkRTPPrx sink = StreamSinkRTPPrx::checkedCast(connection->second);
 +
 +            // If the provided sink is not an RTP one this connection is not possible
 +            if (!sink)
 +            {
 +                continue;
 +            }
 +
 +            std::string their_address = sink->getRemoteAddress();
 +
- 	    StreamSourceRTPPrx source = StreamSourceRTPPrx::uncheckedCast(stream->second->sources.front());
- 	    std::string our_address = source->getLocalAddress();
++            StreamSourceRTPPrx source = StreamSourceRTPPrx::uncheckedCast(stream->second->sources.front());
++            std::string our_address = source->getLocalAddress();
 +
 +            // Is the address compatible with the address family on it?
- 	    if ((our_address.find(":") == std::string::npos && their_address.find(":") != std::string::npos) ||
- 		(our_address.find(":") != std::string::npos && their_address.find(":") == std::string::npos))
- 	    {
- 		continue;
- 	    }
++            if ((our_address.find(":") == std::string::npos && their_address.find(":") != std::string::npos) ||
++                (our_address.find(":") != std::string::npos && their_address.find(":") == std::string::npos))
++            {
++                continue;
++            }
 +
 +            // It passed! We can establish a direct external media connection
 +            allowedStreams.push_back(connection->first);
 +        }
 +
 +        mCb->ice_response(allowedStreams);
 +
 +        return Complete;
 +    }
 +
 +private:
 +    AsteriskSCF::Media::V1::AMD_DirectMediaConnection_checkDirectConnectionsPtr mCb;
 +    AsteriskSCF::Media::V1::DirectMediaConnectionDict mConnections;
-     boost::shared_ptr<SipSessionPriv> mImplPriv;        
++    boost::shared_ptr<SipSessionPriv> mImplPriv;
 +};
 +
- 
 +class ConnectStreamsOperation : public SuspendableWork
 +{
 +public:
 +    ConnectStreamsOperation(
 +        const AsteriskSCF::Media::V1::AMD_DirectMediaConnection_connectStreamsPtr& cb,
 +        const AsteriskSCF::Media::V1::DirectMediaConnectionDict& connections,
 +        const SipSessionPtr& session)
 +        : mCb(cb), mConnections(connections), mSession(session) { }
 +
 +    SuspendableWorkResult execute(const SuspendableWorkListenerPtr&)
 +    {
 +        if (mSession->getInviteSession()->invite_tsx)
 +        {
 +            mSession->enqueueSessionWork(this);
 +            return Complete;
 +        }
 +
 +        pjmedia_sdp_session *sdp = mSession->modifySDP(mConnections);
 +        pjsip_tx_data *packet = NULL;
 +
 +        if ((pjsip_inv_reinvite(mSession->getInviteSession(), NULL, sdp, &packet)) == PJ_SUCCESS)
 +        {
 +            pjsip_inv_send_msg(mSession->getInviteSession(), packet);
 +        }
 +
 +        mCb->ice_response();
 +
 +        return Complete;
 +    }
 +
 +private:
 +    AsteriskSCF::Media::V1::AMD_DirectMediaConnection_connectStreamsPtr mCb;
 +    AsteriskSCF::Media::V1::DirectMediaConnectionDict mConnections;
 +    const SipSessionPtr mSession;
 +};
 +
 +class DisconnectStreamsOperation : public SuspendableWork
 +{
 +public:
 +    DisconnectStreamsOperation(
 +        const AsteriskSCF::Media::V1::AMD_DirectMediaConnection_disconnectStreamsPtr& cb,
 +        const Ice::StringSeq& streams,
 +        const SipSessionPtr& session)
 +        : mCb(cb), mStreams(streams), mSession(session) { }
 +
 +    SuspendableWorkResult execute(const SuspendableWorkListenerPtr&)
 +    {
 +        pjmedia_sdp_session *sdp = mSession->modifySDP(mStreams);
 +        pjsip_tx_data *packet = NULL;
 +
 +        if ((pjsip_inv_reinvite(mSession->getInviteSession(), NULL, sdp, &packet)) == PJ_SUCCESS)
 +        {
 +            pjsip_inv_send_msg(mSession->getInviteSession(), packet);
 +        }
 +
 +        mCb->ice_response();
 +
 +        return Complete;
 +    }
 +
 +private:
 +    AsteriskSCF::Media::V1::AMD_DirectMediaConnection_disconnectStreamsPtr mCb;
 +    Ice::StringSeq mStreams;
 +    const SipSessionPtr mSession;
 +};
 +
 +/**
 + * Implementation of a DirectMediaConnection interface for the SipSession.
 + */
 +class SipDirectMediaConnection : public AsteriskSCF::Media::V1::DirectMediaConnection
 +{
 +public:
 +    SipDirectMediaConnection(boost::shared_ptr<SipSessionPriv> implPriv, const SipSessionPtr& session) :
 +        mImplPriv(implPriv), mSession(session) { }
 +
 +    void checkDirectConnections_async(const AsteriskSCF::Media::V1::AMD_DirectMediaConnection_checkDirectConnectionsPtr& cb,
 +                                      const AsteriskSCF::Media::V1::DirectMediaConnectionDict& connections, const Ice::Current&)
 +    {
 +        lg(Debug) << "Queueing checkDirectConnections operation";
 +        mSession->enqueueSessionWork(new CheckDirectConnectionsOperation(cb, connections, mImplPriv));
 +    }
 +
 +    void connectStreams_async(const AsteriskSCF::Media::V1::AMD_DirectMediaConnection_connectStreamsPtr& cb,
 +                              const AsteriskSCF::Media::V1::DirectMediaConnectionDict& connections, const Ice::Current&)
 +    {
 +        lg(Debug) << "Queueing connectStreams operation";
 +        mSession->enqueueSessionWork(new ConnectStreamsOperation(cb, connections, mSession));
 +    }
 +
 +    void disconnectStreams_async(const AsteriskSCF::Media::V1::AMD_DirectMediaConnection_disconnectStreamsPtr& cb,
 +                                 const Ice::StringSeq& streams, const Ice::Current&)
 +    {
 +        lg(Debug) << "Queueing disconnectStreams operation";
 +        mSession->enqueueSessionWork(new DisconnectStreamsOperation(cb, streams, mSession));
 +    }
 +
 +private:
 +    /**
 +     * Private implementation details for SipSession.
 +     */
 +    boost::shared_ptr<SipSessionPriv> mImplPriv;
 +
 +    /**
 +     * A pointer to the communications session that created us.
 +     */
 +    SipSessionPtr mSession;
 +};
 +
  void SipSession::initializePJSIPStructs()
  {
-     pj_str_t local_uri, remote_uri;
-     SipEndpointConfig &config = mImplPriv->mEndpoint->getConfig();
-     
+     SipEndpointConfig& config = mImplPriv->mEndpoint->getConfig();
+    
      std::string prefix;
      if (config.transportConfig.secureTransport == OUTBOUND || config.transportConfig.secureTransport == BOTH)
      {
@@@ -851,16 -782,15 +965,15 @@@ SipSession::SipSession(const Ice::Objec
   * Replica constructor.
   */
  SipSession::SipSession(const Ice::ObjectAdapterPtr& adapter, const SipEndpointPtr& endpoint,
 -                       const std::string& destination, const Ice::Identity& /* sessionid */,
 +                       const std::string& destination, const Ice::Identity& sessionid,
                         const Ice::Identity& controllerid,
 -                       const Ice::Identity& mediaid, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionSeq& mediasessions,
 +                       const Ice::Identity& mediaid, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionDict& mediasessions,
                         const AsteriskSCF::Media::V1::StreamSourceSeq& sources, const AsteriskSCF::Media::V1::StreamSinkSeq& sinks,
-                        PJSipManager *manager, const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
-                        const AsteriskSCF::System::Component::V1::ReplicaPtr& replica, bool isUAC)
-     : mImplPriv(new SipSessionPriv(adapter, endpoint, destination, manager, serviceLocator, replica))
+                        const PJSipManagerPtr& manager, const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
+                        const AsteriskSCF::System::Component::V1::ReplicaPtr& replica, bool isUAC, const NATEndpointOptions& natOptions)
+     : mImplPriv(new SipSessionPriv(adapter, endpoint, destination, manager, serviceLocator, replica, natOptions))
  {
-     mImplPriv->mSessionProxy =
-         AsteriskSCF::SessionCommunications::V1::SessionPrx::uncheckedCast(adapter->add(this, sessionid));
+     activateIceObjects(mImplPriv->mManager->getSessionModule()->getSessionCreationHooks());
  
      mImplPriv->mMediaSession = new SipMediaSession(this);
      mImplPriv->mMediaSessionProxy =
@@@ -1862,7 -1883,7 +2069,7 @@@ pjmedia_sdp_session *SipSession::create
  	stream->second->sources.push_back(source);
  
          // Update the SIP session with some RTP session details
- 	mImplPriv->mRTPSessions.insert(make_pair(boost::lexical_cast<std::string>(mImplPriv->mSDP->media_count), session));
 -        mImplPriv->mRTPSessions.push_back(session);
++        mImplPriv->mRTPSessions.insert(make_pair(boost::lexical_cast<std::string>(mImplPriv->mSDP->media_count), session));
  
          // Add the stream to the SDP
          pjmedia_sdp_media *media = allocate_from_pool<pjmedia_sdp_media>(mImplPriv->mDialog->pool);
@@@ -2148,7 -2193,7 +2379,7 @@@ pjmedia_sdp_session *SipSession::create
              ourStream->sources.push_back(source);
  
              // Update the SIP session with some RTP session details
- 	    mImplPriv->mRTPSessions.insert(make_pair(boost::lexical_cast<std::string>(stream), session));
 -            mImplPriv->mRTPSessions.push_back(session);
++            mImplPriv->mRTPSessions.insert(make_pair(boost::lexical_cast<std::string>(stream), session));
  
              // Just by common sense alone since we just got an RTP session for this stream we obviously
              // have not added it to the answer SDP either, so do it
@@@ -2255,7 -2327,7 +2513,7 @@@
  }
  
  /**
-  * Internal function which modifies our SDP to remove streams.
 - * Internal function which modifies our SDP.
++ * Internal function which modifies our SDP to contain remote destination and format details.
   */
  pjmedia_sdp_session *SipSession::modifySDP(const AsteriskSCF::Media::V1::StreamInformationDict& toRemove)
  {
@@@ -2302,91 -2374,6 +2560,91 @@@
  }
  
  /**
 + * Internal function which modifies our SDP to contain remote destination and format details.
 + */
 +pjmedia_sdp_session *SipSession::modifySDP(const AsteriskSCF::Media::V1::DirectMediaConnectionDict& connections)
 +{
 +    // In order to modify SDP you have to have SDP
 +    if (!mImplPriv->mSDP)
 +    {
 +        return 0;
 +    }
 +
 +    // Iterate through each connection request
 +    for (AsteriskSCF::Media::V1::DirectMediaConnectionDict::const_iterator connection = connections.begin();
- 	 connection != connections.end();
- 	 ++connection)
++         connection != connections.end();
++         ++connection)
 +    {
- 	pjmedia_sdp_media *media = mImplPriv->mSDP->media[boost::lexical_cast<int>(connection->first)];
++        pjmedia_sdp_media *media = mImplPriv->mSDP->media[boost::lexical_cast<int>(connection->first)];
 +
 +        // Skip unknown streams
 +        if (!media)
 +        {
 +            continue;
 +        }
 +
- 	StreamSinkRTPPrx sink = StreamSinkRTPPrx::uncheckedCast(connection->second);
++        StreamSinkRTPPrx sink = StreamSinkRTPPrx::uncheckedCast(connection->second);
 +
- 	// Update connection details on the stream
- 	pj_strdup2(mImplPriv->mDialog->pool, &media->conn->addr, sink->getRemoteAddress().c_str());
- 	media->desc.port = (pj_uint16_t) sink->getRemotePort();
++        // Update connection details on the stream
++        pj_strdup2(mImplPriv->mDialog->pool, &media->conn->addr, sink->getRemoteAddress().c_str());
++        media->desc.port = (pj_uint16_t) sink->getRemotePort();
 +
- 	// Drop all existing formats and attributes by changing the counts to zero, this is fine since the SDP generator
- 	// uses the count to determine how far to go
- 	media->desc.fmt_count = 0;
- 	media->attr_count = 0;
++        // Drop all existing formats and attributes by changing the counts to zero, this is fine since the SDP generator
++        // uses the count to determine how far to go
++        media->desc.fmt_count = 0;
++        media->attr_count = 0;
 +
- 	// Add formats present on the sink, this is fine to do because an SDP descriptor will only be found for ones
- 	// which are naturally configured on this endpoint
- 	PayloadMap payloads;
- 	addFormatstoSDP(sink->getFormats(), media, payloads);
++        // Add formats present on the sink, this is fine to do because an SDP descriptor will only be found for ones
++        // which are naturally configured on this endpoint
++        PayloadMap payloads;
++        addFormatstoSDP(sink->getFormats(), media, payloads);
 +    }
-     
++
 +    return mImplPriv->mSDP;
 +}
 +
 +/**
 + * Internal function which modifies our SDP to contain our local destination details and formats.
 + */
 +pjmedia_sdp_session *SipSession::modifySDP(const Ice::StringSeq& streams)
 +{
 +    // In order to modify SDP you have to have SDP
 +    if (!mImplPriv->mSDP)
 +    {
 +        return 0;
 +    }
 +
 +    // Iterate through each stream
 +    for (Ice::StringSeq::const_iterator stream = streams.begin();
 +         stream != streams.end();
 +         ++stream)
 +    {
 +        StreamInformationDict::const_iterator ourStream = mImplPriv->mStreams.find((*stream));
 +
 +        // Ignore streams that we don't know about
 +        if (ourStream == mImplPriv->mStreams.end())
 +        {
 +            continue;
 +        }
 +
 +        // These *will* exist and be true due to implementation
 +        pjmedia_sdp_media *media = mImplPriv->mSDP->media[boost::lexical_cast<int>((*stream))];
 +        StreamSourceRTPPrx source = StreamSourceRTPPrx::uncheckedCast(ourStream->second->sources.front());
 +
 +        pj_strdup2(mImplPriv->mDialog->pool, &media->conn->addr, source->getLocalAddress().c_str());
 +        media->desc.port = (pj_uint16_t) source->getLocalPort();
 +
 +        media->desc.fmt_count = 0;
 +        media->attr_count = 0;
 +
 +        PayloadMap payloads;
 +        addFormatstoSDP(ourStream->second->formats, media, payloads);
 +    }
 +
 +    return mImplPriv->mSDP;
 +}
 +
 +/**
   * Internal function which sets the PJsip dialog.
   */
  void SipSession::setDialog(pjsip_dialog *dialog)
diff --cc src/SipSession.h
index 3fd0f4e,fa89ad0..f52619d
--- a/src/SipSession.h
+++ b/src/SipSession.h
@@@ -95,18 -106,17 +106,17 @@@ class SipSession : public AsteriskSCF::
  {
  public:
      SipSession(const Ice::ObjectAdapterPtr&, const SipEndpointPtr&, const std::string&,
-         const AsteriskSCF::SessionCommunications::V1::SessionListenerPrx&, PJSipManager *manager,
+         const AsteriskSCF::SessionCommunications::V1::SessionListenerPrx&, const PJSipManagerPtr& manager,
          const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
          const AsteriskSCF::System::Component::V1::ReplicaPtr& replica,
-         bool isUAC);
+         bool ipv6, bool isUAC, const NATEndpointOptions& natOptions);
  
-     SipSession(const Ice::ObjectAdapterPtr&, const SipEndpointPtr&, const std::string&, const Ice::Identity&,
-                const Ice::Identity&,
-                const Ice::Identity&, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionDict&,
-                const AsteriskSCF::Media::V1::StreamSourceSeq&, const AsteriskSCF::Media::V1::StreamSinkSeq&,
-                PJSipManager *manager, const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
-                const AsteriskSCF::System::Component::V1::ReplicaPtr& replica,
-                bool isUAC);
+     SipSession(const Ice::ObjectAdapterPtr&, const SipEndpointPtr&, const std::string&, const Ice::Identity&, const Ice::Identity&,
 -        const Ice::Identity&, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionSeq&,
++        const Ice::Identity&, const AsteriskSCF::Replication::SipSessionManager::V1::RTPMediaSessionDict&,
+         const AsteriskSCF::Media::V1::StreamSourceSeq&, const AsteriskSCF::Media::V1::StreamSinkSeq&,
+         const PJSipManagerPtr& manager, const AsteriskSCF::Core::Discovery::V1::ServiceLocatorPrx& serviceLocator,
+         const AsteriskSCF::System::Component::V1::ReplicaPtr& replica,
+         bool isUAC, const NATEndpointOptions& natOptions);
  
      bool operator==(const SipSession &other) const;
  

commit f738f0c7b03d342bae114b88c46fc0a70d22e5ec
Merge: 753d3c7 9404329
Author: Mark Michelson <mmichelson at digium.com>
Date:   Tue Aug 2 11:34:19 2011 -0500

    Merge branch 'telephone-events'
    
    Conflicts:
    	slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
    	src/PJSipSessionModule.cpp
    	src/PJSipSessionModule.h
    	src/SipConfiguration.cpp
    	src/SipEndpoint.cpp
    	src/SipEndpoint.h
    	src/SipSession.cpp
    	src/SipSession.h

diff --cc slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
index 715e039,e2a477f..9cdafe8
--- a/slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
+++ b/slice/AsteriskSCF/Configuration/SipSessionManager/SipConfigurationIf.ice
@@@ -32,458 -32,426 +32,476 @@@ module SipSessionManage
  ["suppress"]
  module V1
  {
 -   /**
 -    * Service locator category for finding the configuration service
 -    */
 -   const string ConfigurationDiscoveryCategory = "SipConfiguration";
  
 -   /**
 -    * Service locator parameters class for discovering the configuration service
 -    */
 -   unsliceable class SipConfigurationParams extends AsteriskSCF::Core::Discovery::V1::ServiceLocatorParams
 -   {
 -       /**
 -	* Unique name for the configuration service
 -	*/
 -       string name;
 -   };
 +/**
 + * Service locator category for finding the configuration service
 + */
 +const string ConfigurationDiscoveryCategory = "SipConfiguration";
  
 -   /**
 -    * Local visitor class for visiting SIP configuration groups
 -    */
 -   local class SipConfigurationGroupVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationGroupVisitor
 -   {
 -   };
 +/**
 + * Service locator parameters class for discovering the configuration service
 + */
 +unsliceable class SipConfigurationParams extends AsteriskSCF::Core::Discovery::V1::ServiceLocatorParams
 +{
 +    /**
 +     * Unique name for the configuration service
 +     */
 +    string name;
 +};
  
 -   /**
 -    * Generic SIP configuration group
 -    */
 -   ["visitor:SipConfigurationGroupVisitor"] class SipConfigurationGroup extends AsteriskSCF::System::Configuration::V1::ConfigurationGroup
 -   {
 -   };
 +/**
 + * Local visitor class for visiting SIP configuration groups
 + */
 +local class SipConfigurationGroupVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationGroupVisitor
 +{
 +};
  
 -   /**
 -    * General SIP configuration group that contains general items related to the SIP component as a whole
 -    */
 -   class SipGeneralGroup extends SipConfigurationGroup
 -   {
 -   };
 +/**
 + * Generic SIP configuration group
 + */
 +["visitor:SipConfigurationGroupVisitor"] class SipConfigurationGroup extends AsteriskSCF::System::Configuration::V1::ConfigurationGroup
 +{
 +};
  
 -   /**
 -    * Local visitor class for visiting SIP configuration items
 -    */
 -   local class SipConfigurationItemVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationItemVisitor
 -   {
 -   };
 +/**
 + * General SIP configuration group that contains general items related to the SIP component as a whole
 + */
 +class SipGeneralGroup extends SipConfigurationGroup
 +{
 +};
  
 -   /**
 -    * Generic SIP configuration item
 -    */
 -   ["visitor:SipConfigurationItemVisitor"] class SipConfigurationItem extends AsteriskSCF::System::Configuration::V1::ConfigurationItem
 -   {
 -   };
 +/**
 + * Local visitor class for visiting SIP configuration items
 + */
 +local class SipConfigurationItemVisitor extends AsteriskSCF::System::Configuration::V1::ConfigurationItemVisitor
 +{
 +};
  
 -   /**
 -    * SIP Endpoint group, used to configure an endpoint
 -    */
 -   class SipEndpointGroup extends SipConfigurationGroup
 -   {
 -      /**
 -       * Name of the endpoint being configured
 -       */
 -      string name;
 -   };
 +/**
 + * Generic SIP configuration item
 + */
 +["visitor:SipConfigurationItemVisitor"] class SipConfigurationItem extends AsteriskSCF::System::Configuration::V1::ConfigurationItem
 +{
 +};
  
 -   /**
 -    * SIP Domain group, used to configure a specific domain
 -    */
 -   class SipDomainGroup extends SipConfigurationGroup
 -   {
 -      /**
 -       * Name of the domain being configured
 -       */
 -      string domain;
 -   };
 +/**
 + * SIP Endpoint group, used to configure an endpoint
 + */
 +class SipEndpointGroup extends SipConfigurationGroup
 +{
 +    /**
 +     * Name of the endpoint being configured
 +     */
 +    string name;
 +};
  
 -   /**
 -    * Domain item for bindings
 -    */
 -   class SipBindingsItem extends SipConfigurationItem
 -   {
 -      /**
 -       * Addresses the domain is reachable over
 -       */
 -      Ice::StringSeq bindings;
 -   };
 +/**
 + * SIP Domain group, used to configure a specific domain
 + */
 +class SipDomainGroup extends SipConfigurationGroup
 +{
 +    /**
 +     * Name of the domain being configured
 +     */
 +    string domain;
 +};
  
 -   /**
 -    * Generic SIP transport group that others derive from, primarily created since each one has
 -    * the requirement of a name
 -    */
 -   class SipTransportGroup extends SipConfigurationGroup
 -   {
 -      /**
 -       * Name of the specific transport. Since each one may have multiple transports this differentiates
 -       * them.
 -       */
... 4223 lines suppressed ...


-- 
asterisk-scf/integration/sip.git



More information about the asterisk-scf-commits mailing list