r3194 - in trunk/libminisip: include/libminisip/mediahandler source/mediahandler

mikma at minisip.org mikma at minisip.org
Tue Feb 6 16:52:59 CET 2007


Author: mikma
Date: 2007-02-06 16:52:58 +0100 (Tue, 06 Feb 2007)
New Revision: 3194

Modified:
   trunk/libminisip/include/libminisip/mediahandler/Session.h
   trunk/libminisip/source/mediahandler/Session.cxx
Log:
Add peer uri to Session. Used when authenticating the peer and getting
the connected uri.



Modified: trunk/libminisip/include/libminisip/mediahandler/Session.h
===================================================================
--- trunk/libminisip/include/libminisip/mediahandler/Session.h	2007-02-05 20:16:29 UTC (rev 3193)
+++ trunk/libminisip/include/libminisip/mediahandler/Session.h	2007-02-06 15:52:58 UTC (rev 3194)
@@ -97,7 +97,8 @@
 		 * @param anatSupported Use ANAT (RFC 4091)
 		 * @returns a reference to the SDP object
 		 */
-		MRef<SdpPacket *> getSdpOffer( bool anatSupported = false );
+		MRef<SdpPacket *> getSdpOffer( const std::string &peerUri = "",
+					       bool anatSupported = false );
 		
 		/**
 		 * Used by the SIP stack to query the session description
@@ -242,6 +243,11 @@
 		std::list< MRef<MediaStreamSender *> > getMediaStreamSenders() {
 			return mediaStreamSenders;
 		}
+
+		/**
+		 * Return authenticated peer URI
+		 */
+		const std::string &getPeerUri() const;
 		
 		/**
 		CallRecorder object ... we store it as MObject because it creates

Modified: trunk/libminisip/source/mediahandler/Session.cxx
===================================================================
--- trunk/libminisip/source/mediahandler/Session.cxx	2007-02-05 20:16:29 UTC (rev 3193)
+++ trunk/libminisip/source/mediahandler/Session.cxx	2007-02-06 15:52:58 UTC (rev 3194)
@@ -68,7 +68,8 @@
 				identity(aIdentity) {}
 
 		const std::string getUri() const{
-			return identity->getSipUri().getString();
+			return identity->getSipUri().getProtocolId() + ":" +
+				identity->getSipUri().getUserIpString();
 		}
 
 		MRef<SipSim*> getSim() const{
@@ -289,7 +290,7 @@
 	return result;
 }
 
-MRef<SdpPacket *> Session::getSdpOffer( bool anatSupported ){ // used by the initiator when creating the first message
+MRef<SdpPacket *> Session::getSdpOffer( const string &peerUri, bool anatSupported ){ // used by the initiator when creating the first message
 	MRef<SdpPacket *> result;
 	list< MRef<MediaStreamReceiver *> >::iterator i;
 	std::list<std::string>::iterator iAttribute;
@@ -339,7 +340,7 @@
 
 		addStreams();
 
-		keyMgmtMessage = mikey->initiatorCreate( type );
+		keyMgmtMessage = mikey->initiatorCreate( type, peerUri );
 		if( mikey->error() ){
 			// something went wrong
 			return NULL;
@@ -463,11 +464,17 @@
 		/* get the keymgt: attribute */
 		string keyMgmtMessage = 
 			answer->getSessionLevelAttribute( "key-mgmt" );
+
+		if( !peerUri.empty() ){
+			mikey->getKeyAgreement()->setPeerUri( peerUri );
+		}
+
 		if( !mikey->initiatorAuthenticate( keyMgmtMessage ) ){
 			errorString = "Could not authenticate the key management message";
 			fprintf( stderr, "Auth failed\n");
 			return false;
 		}
+		this->peerUri = mikey->peerUri();
 
 		string mikeyErrorMsg = mikey->initiatorParse();
 		if( mikeyErrorMsg != "" ){
@@ -637,15 +644,16 @@
 
 		addStreams();
 
-		if( !mikey->responderAuthenticate( keyMgmtMessage ) ){
+		if( !mikey->responderAuthenticate( keyMgmtMessage, peerUri ) ){
 			errorString =  "Incoming key management message could not be authenticated";
 // 			if( ka ){
 				errorString += mikey->authError();
 // 			}
 			return false;
 		}
-		else //Here we set the offer in ka
-			mikey->setMikeyOffer();
+		this->peerUri = mikey->peerUri();
+		//Here we set the offer in ka
+		mikey->setMikeyOffer();
 	}
 	else{
 		/*securityConfig.*/ka_type = KEY_MGMT_METHOD_NULL;
@@ -1067,6 +1075,10 @@
 	mediaStreamReceivers.clear();
 }
 
+const std::string &Session::getPeerUri() const{
+	return peerUri;
+}
+
 void Session::addStreams() {
 	MediaStreamSenders::iterator i;
 	MediaStreamSenders::iterator last = mediaStreamSenders.end();



More information about the Minisip-devel mailing list