r3196 - trunk/libminisip/source/sip

mikma at minisip.org mikma at minisip.org
Tue Feb 6 18:48:52 CET 2007


Author: mikma
Date: 2007-02-06 18:48:51 +0100 (Tue, 06 Feb 2007)
New Revision: 3196

Modified:
   trunk/libminisip/source/sip/SipDialogVoipClient.cxx
   trunk/libminisip/source/sip/SipDialogVoipServer.cxx
Log:
Build peer uri used for authentication from remote uri,
but containing user and host only. The certificates should contain these
uri as alternative names.



Modified: trunk/libminisip/source/sip/SipDialogVoipClient.cxx
===================================================================
--- trunk/libminisip/source/sip/SipDialogVoipClient.cxx	2007-02-06 16:41:23 UTC (rev 3195)
+++ trunk/libminisip/source/sip/SipDialogVoipClient.cxx	2007-02-06 17:48:51 UTC (rev 3196)
@@ -174,8 +174,10 @@
 			dialogState.updateState( resp );
 		}
 
-		//string peerUri = command.getCommandPacket()->getTo().getString();
-		string peerUri = dialogState.remoteUri; //use the dialog state ...
+		// Build peer uri used for authentication from remote uri,
+		// but containing user and host only.
+		SipUri peer(dialogState.remoteUri);
+		string peerUri = peer.getProtocolId() + ":" + peer.getUserIpString();
 		MRef<SipMessageContent *> content = resp->getContent();
 		if( !content.isNull() ){
 			MRef<SdpPacket*> sdp((SdpPacket*)*content);
@@ -197,7 +199,7 @@
 			sendPrack(resp);
 
 		if( resp->getStatusCode() == 180 ){
-			CommandString cmdstr(dialogState.callId, SipCommandString::remote_ringing, peerUri, (getMediaSession()->isSecure()?"secure":"unprotected"));
+			CommandString cmdstr(dialogState.callId, SipCommandString::remote_ringing, getMediaSession()->getPeerUri(), (getMediaSession()->isSecure()?"secure":"unprotected"));
 			getSipStack()->getCallback()->handleCommand("gui", cmdstr);
 		}
 	
@@ -244,12 +246,13 @@
 #endif
 		MRef<SipResponse*> resp(  (SipResponse*)*command.getCommandPacket() );
 		
-		string peerUri = dialogState.remoteUri;
+		// Build peer uri used for authentication from remote uri,
+		// but containing user and host only.
+		SipUri peer(dialogState.remoteUri);
+		string peerUri = peer.getProtocolId() + ":" + peer.getUserIpString();
 		dialogState.updateState( resp );
 		sendAck();
 		
-		//string peerUri = resp->getFrom().getString();
-		
 		setLogEntry( new LogEntryOutgoingCompletedCall() );
 		getLogEntry()->start = time( NULL );
 		getLogEntry()->peerSipUri = peerUri;
@@ -259,7 +262,7 @@
 		
 		bool ret = sortMIME(*resp->getContent(), peerUri, 3);
 
-		CommandString cmdstr(dialogState.callId, SipCommandString::invite_ok, "",
+		CommandString cmdstr(dialogState.callId, SipCommandString::invite_ok, getMediaSession()->getPeerUri(),
 							(getMediaSession()->isSecure()?"secure":"unprotected"));
 		
 		getSipStack()->getCallback()->handleCommand("gui", cmdstr);
@@ -537,10 +540,14 @@
 	//There might be so that there are no SDP. Check!
 	MRef<SdpPacket *> sdp;
 	if (mediaSession){
+		// Build peer uri used for authentication from remote uri,
+		// but containing user and host only.
+		SipUri peer(dialogState.remoteUri);
+		string peerUri = peer.getProtocolId() + ":" + peer.getUserIpString();
 #ifdef ENABLE_TS
 		ts.save("getSdpOffer");
 #endif
-		sdp = mediaSession->getSdpOffer();
+		sdp = mediaSession->getSdpOffer( peerUri );
 #ifdef ENABLE_TS
 		ts.save("getSdpOffer");
 #endif

Modified: trunk/libminisip/source/sip/SipDialogVoipServer.cxx
===================================================================
--- trunk/libminisip/source/sip/SipDialogVoipServer.cxx	2007-02-06 16:41:23 UTC (rev 3195)
+++ trunk/libminisip/source/sip/SipDialogVoipServer.cxx	2007-02-06 17:48:51 UTC (rev 3196)
@@ -166,9 +166,12 @@
 		
 	setLastInvite(inv);
 	dialogState.updateState( getLastInvite() );
+
+	// Build peer uri used for authentication from remote uri,
+	// but containing user and host only.
+	SipUri peer(dialogState.remoteUri);
+	string peerUri = peer.getProtocolId() + ":" + peer.getUserIpString();
 		
-	string peerUri = dialogState.remoteUri;
-		
 	if(!sortMIME(*command.getCommandPacket()->getContent(), peerUri, 10)){
 		merr << "No MIME match" << end;
 		return false;
@@ -191,10 +194,12 @@
 
 		setLastInvite(inv);
 		dialogState.updateState( inv );
+
+		// Build peer uri used for authentication from remote uri,
+		// but containing user and host only.
+		SipUri peer(dialogState.remoteUri);
+		string peerUri = peer.getProtocolId() + ":" + peer.getUserIpString();
 		
-		//string peerUri = command.getCommandPacket()->getFrom().getString().substr(4);
-		string peerUri = dialogState.remoteUri;
-		
 		if(!sortMIME(*inv->getContent(), peerUri, 10)){
 			merr << "No MIME match" << end;
 			return false;
@@ -233,7 +238,7 @@
 */		
 		CommandString cmdstr(dialogState.callId, 
 				SipCommandString::incoming_available, 
-				dialogState.remoteUri, 
+				     getMediaSession()->getPeerUri(),
 				(getMediaSession()->isSecure()?"secure":"unprotected")
 				);
 		getSipStack()->getCallback()->handleCommand("gui", cmdstr );
@@ -262,7 +267,8 @@
 #endif
 
 		CommandString cmdstr(dialogState.callId, 
-				SipCommandString::invite_ok,"",
+				SipCommandString::invite_ok,
+				     getMediaSession()->getPeerUri(),
 				(getMediaSession()->isSecure()?"secure":"unprotected")
 				);
 		getSipStack()->getCallback()->handleCommand("gui", cmdstr );
@@ -457,7 +463,7 @@
 		
 	CommandString cmdstr(dialogState.callId, 
 			     SipCommandString::incoming_available, 
-			     dialogState.remoteUri, 
+			     getMediaSession()->getPeerUri(),
 			     (getMediaSession()->isSecure()?"secure":"unprotected")
 		);
 	getSipStack()->getCallback()->handleCommand("gui", cmdstr );



More information about the Minisip-devel mailing list