r3288 - in trunk: libminisip/include/libminisip/signaling/sip libminisip/source/subsystem_signaling/sip libmsip/include/libmsip libmsip/source libmsip/source/dialogs libmsip/source/messages libmsip/source/transactions

erik at minisip.org erik at minisip.org
Tue May 22 22:08:46 CEST 2007


Author: erik
Date: 2007-05-22 22:08:46 +0200 (Tue, 22 May 2007)
New Revision: 3288

Modified:
   trunk/libminisip/include/libminisip/signaling/sip/DefaultDialogHandler.h
   trunk/libminisip/include/libminisip/signaling/sip/SipDialogConfVoip.h
   trunk/libminisip/include/libminisip/signaling/sip/SipDialogPresenceClient.h
   trunk/libminisip/include/libminisip/signaling/sip/SipDialogPresenceServer.h
   trunk/libminisip/include/libminisip/signaling/sip/SipDialogVoip.h
   trunk/libminisip/include/libminisip/signaling/sip/SipDialogVoipClient.h
   trunk/libminisip/include/libminisip/signaling/sip/SipDialogVoipServer.h
   trunk/libminisip/source/subsystem_signaling/sip/DefaultDialogHandler.cxx
   trunk/libminisip/source/subsystem_signaling/sip/SipDialogConfVoip.cxx
   trunk/libminisip/source/subsystem_signaling/sip/SipDialogPresenceClient.cxx
   trunk/libminisip/source/subsystem_signaling/sip/SipDialogPresenceServer.cxx
   trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoip.cxx
   trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoipClient.cxx
   trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoipServer.cxx
   trunk/libmsip/include/libmsip/SipDialogRegister.h
   trunk/libmsip/include/libmsip/SipMessage.h
   trunk/libmsip/include/libmsip/SipRequest.h
   trunk/libmsip/include/libmsip/SipResponse.h
   trunk/libmsip/include/libmsip/SipTransaction.h
   trunk/libmsip/include/libmsip/SipTransactionInviteClient.h
   trunk/libmsip/source/SipLayerTransaction.cxx
   trunk/libmsip/source/SipLayerTransport.cxx
   trunk/libmsip/source/dialogs/SipDialog.cxx
   trunk/libmsip/source/dialogs/SipDialogRegister.cxx
   trunk/libmsip/source/messages/SipMessage.cxx
   trunk/libmsip/source/messages/SipRequest.cxx
   trunk/libmsip/source/messages/SipResponse.cxx
   trunk/libmsip/source/transactions/SipTransaction.cxx
   trunk/libmsip/source/transactions/SipTransactionInviteClient.cxx
Log:

 * Removed all branch processing from libminisip. This
   can/should only be dealt with by the SIP stack.
   This reduces the complexity of the TU.

 * Simplified the implementation of serveral of the header
   lookup methods in SipMessage by using an already existing
   method.

 * Removed the branch parameter from the SIP message
   constructors

 * Renamed SipMessage getDestinationBranch() to getBranch()
 
 * Removed unused/unnecessary methods from the SipMessage
   class. 




Modified: trunk/libminisip/include/libminisip/signaling/sip/DefaultDialogHandler.h
===================================================================
--- trunk/libminisip/include/libminisip/signaling/sip/DefaultDialogHandler.h	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libminisip/include/libminisip/signaling/sip/DefaultDialogHandler.h	2007-05-22 20:08:46 UTC (rev 3288)
@@ -145,9 +145,9 @@
 		 */
 		bool modifyDialogConfig(std::string user, MRef<SipDialogConfig *> dialogConfig);
 
-		void sendIMOk(MRef<SipRequest*> immessage, const std::string &branch);
+		void sendIMOk(MRef<SipRequest*> immessage);
 		
-		void sendIM(const std::string &branch, std::string msg, int seqno, std::string toUri);
+		void sendIM(std::string msg, int seqno, std::string toUri);
 			
 		MRef<SipIdentity *> lookupTarget(const SipUri &uri);
 };

Modified: trunk/libminisip/include/libminisip/signaling/sip/SipDialogConfVoip.h
===================================================================
--- trunk/libminisip/include/libminisip/signaling/sip/SipDialogConfVoip.h	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libminisip/include/libminisip/signaling/sip/SipDialogConfVoip.h	2007-05-22 20:08:46 UTC (rev 3288)
@@ -89,15 +89,15 @@
 		MRef<SipRequest*> getLastInvite();
 		void setLastInvite(MRef<SipRequest*> i);
 		
-		void sendInvite(const std::string &branch);
-		void sendBye(const std::string &branch, int);
-		void sendCancel(const std::string &branch);
-		void sendAck(const std::string &branch);
-		void sendInviteOk(const std::string &branch);
-		void sendByeOk(MRef<SipRequest*> bye, const std::string &branch);
-		void sendReject(const std::string &branch);
-		void sendRinging(const std::string &branch);
-		void sendNotAcceptable(const std::string &branch);
+		void sendInvite();
+		void sendBye(int);
+		void sendCancel();
+		void sendAck();
+		void sendInviteOk();
+		void sendByeOk(MRef<SipRequest*> bye);
+		void sendReject();
+		void sendRinging();
+		void sendNotAcceptable();
 		void modifyConfJoinInvite(MRef<SipRequest*>inv);
 		void modifyConfConnectInvite(MRef<SipRequest*>inv);
 		void modifyConfAck(MRef<SipRequest*>ack);

Modified: trunk/libminisip/include/libminisip/signaling/sip/SipDialogPresenceClient.h
===================================================================
--- trunk/libminisip/include/libminisip/signaling/sip/SipDialogPresenceClient.h	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libminisip/include/libminisip/signaling/sip/SipDialogPresenceClient.h	2007-05-22 20:08:46 UTC (rev 3288)
@@ -65,7 +65,7 @@
 
 	private:
 		
-		void sendSubscribe(const  std::string &branch);
+		void sendSubscribe();
 		void sendNotifyOk(MRef<SipRequest*> notify);
 		void createSubscribeClientTransaction();
 		

Modified: trunk/libminisip/include/libminisip/signaling/sip/SipDialogPresenceServer.h
===================================================================
--- trunk/libminisip/include/libminisip/signaling/sip/SipDialogPresenceServer.h	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libminisip/include/libminisip/signaling/sip/SipDialogPresenceServer.h	2007-05-22 20:08:46 UTC (rev 3288)
@@ -69,7 +69,7 @@
 		void removeUser( std::string user);
 		void addUser( std::string user);
 		
-		void sendNotify(const  std::string &branch,  std::string toUri,  std::string callId);
+		void sendNotify(std::string toUri,  std::string callId);
 
 		bool a0_start_default_startpresenceserver(const SipSMCommand &command);
 		bool a1_default_default_timerremovesubscriber(const SipSMCommand &command);

Modified: trunk/libminisip/include/libminisip/signaling/sip/SipDialogVoip.h
===================================================================
--- trunk/libminisip/include/libminisip/signaling/sip/SipDialogVoip.h	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libminisip/include/libminisip/signaling/sip/SipDialogVoip.h	2007-05-22 20:08:46 UTC (rev 3288)
@@ -69,9 +69,9 @@
 		MRef<Session *> getMediaSession();
 
 	protected:
-		void sendBye(const std::string &branch, int);
-		void sendByeOk(MRef<SipRequest*> bye, const std::string &branch);
-		void sendCancel(const std::string &branch);
+		void sendBye(int);
+		void sendByeOk(MRef<SipRequest*> bye);
+		void sendCancel();
 		MRef<SipRequest*> getLastInvite();
 		void setLastInvite(MRef<SipRequest*> i);
 		bool sortMIME(MRef<SipMessageContent *> Offer, std::string peerUri, int type);		
@@ -95,10 +95,10 @@
 		void setUpStateMachine();
 		
 		
-		void sendReferOk(const std::string &branch);
-		void sendNotifyOk(MRef<SipRequest*> notif, const std::string &branch);
-		void sendReferReject(const std::string &branch);
-		void sendRefer(const std::string &branch, int, const std::string referredUri);
+		void sendReferOk();
+		void sendNotifyOk(MRef<SipRequest*> notif);
+		void sendReferReject();
+		void sendRefer(int, const std::string referredUri);
 		
 		/* Ending a call */
 		bool a1001_incall_termwait_BYE( const SipSMCommand &command);

Modified: trunk/libminisip/include/libminisip/signaling/sip/SipDialogVoipClient.h
===================================================================
--- trunk/libminisip/include/libminisip/signaling/sip/SipDialogVoipClient.h	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libminisip/include/libminisip/signaling/sip/SipDialogVoipClient.h	2007-05-22 20:08:46 UTC (rev 3288)
@@ -64,9 +64,9 @@
 		
 		void setUpStateMachine();
 		
-		void sendInviteOk(const std::string &branch);
+		void sendInviteOk();
 		
-		void sendInvite(const std::string &branch);
+		void sendInvite();
 
 		void sendAck();
 		void sendPrack(MRef<SipResponse*>);

Modified: trunk/libminisip/include/libminisip/signaling/sip/SipDialogVoipServer.h
===================================================================
--- trunk/libminisip/include/libminisip/signaling/sip/SipDialogVoipServer.h	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libminisip/include/libminisip/signaling/sip/SipDialogVoipServer.h	2007-05-22 20:08:46 UTC (rev 3288)
@@ -75,9 +75,9 @@
 		
 		void setUpStateMachine();
 		
-		void sendInviteOk(const std::string &branch);
-		void sendReject(const std::string &branch);
-		void sendNotAcceptable(const std::string &branch);
+		void sendInviteOk();
+		void sendReject();
+		void sendNotAcceptable();
 		void sendSessionProgress();
 		void sendPrackOk( MRef<SipRequest*> prack );
 

Modified: trunk/libminisip/source/subsystem_signaling/sip/DefaultDialogHandler.cxx
===================================================================
--- trunk/libminisip/source/subsystem_signaling/sip/DefaultDialogHandler.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libminisip/source/subsystem_signaling/sip/DefaultDialogHandler.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -265,10 +265,8 @@
 #ifdef DEBUG_OUTPUT			
 		mdbg << "DefaultDialogHandler:: creating new server transaction for incoming SipIMMessage" << end;
 #endif			
-		string branch = im->getDestinationBranch();
+		sendIMOk( im );
 
-		sendIMOk(im, branch);
-
 		massert(dynamic_cast<SipMessageContentIM*>(*im->getContent())!=NULL);
 
 		MRef<SipMessageContentIM*> imref = (SipMessageContentIM*)*im->getContent();
@@ -301,9 +299,8 @@
 		}
 
 		MRef<SipRequest*> req = (SipRequest*)*pkt;
-		string branch = req->getDestinationBranch();
 		MRef<SipResponse*> resp =
-			new SipResponse(branch, statusCode, reasonPhrase, req);
+			new SipResponse( statusCode, reasonPhrase, req );
 
 		if (statusCode==405)
 			resp->addHeader(new SipHeader(new SipHeaderValueAllow("INVITE,MESSAGE,BYE,ACK,OPTIONS,PRACK") ));
@@ -361,7 +358,7 @@
 
 	if (cmdstr.getOp() == SipCommandString::outgoing_im){
 		++outsideDialogSeqNo;
-		sendIM( "", cmdstr.getParam(), outsideDialogSeqNo, cmdstr.getParam2() );
+		sendIM( cmdstr.getParam(), outsideDialogSeqNo, cmdstr.getParam2() );
 		return true;
 	}
 
@@ -964,8 +961,8 @@
 }
 
 
-void DefaultDialogHandler::sendIMOk(MRef<SipRequest*> bye, const string &branch){
-        MRef<SipResponse*> ok= new SipResponse( branch, 200,"OK", bye );
+void DefaultDialogHandler::sendIMOk(MRef<SipRequest*> bye){
+        MRef<SipResponse*> ok= new SipResponse( 200,"OK", bye );
         ok->getHeaderValueTo()->setParameter("tag","libminisip");
 
         MRef<SipMessage*> pref(*ok);
@@ -974,7 +971,7 @@
 }
 
 
-void DefaultDialogHandler::sendIM(const string &branch, string msg, int im_seq_no, string toUri){
+void DefaultDialogHandler::sendIM( string msg, int im_seq_no, string toUri ){
 	
 	size_t posAt;
 	
@@ -994,7 +991,6 @@
 	#endif
 	
 	MRef<SipRequest*> im = SipRequest::createSipMessageIMMessage(
-			std::string(branch),
 			itoa(rand()),	//Generate random callId
 			toUri, 	
 			phoneconf->defaultIdentity->getSipUri(),

Modified: trunk/libminisip/source/subsystem_signaling/sip/SipDialogConfVoip.cxx
===================================================================
--- trunk/libminisip/source/subsystem_signaling/sip/SipDialogConfVoip.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libminisip/source/subsystem_signaling/sip/SipDialogConfVoip.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -140,7 +140,7 @@
 		localCalled=false;
 		dialogState.remoteUri= command.getCommandString().getParam();
 
-		sendInvite("");
+		sendInvite();
 		return true;
 	}else{
 		return false;
@@ -239,7 +239,7 @@
 		//BM
 		MRef<ConfMessageRouter*> ptr= confCallback;//(ConfMessageRouter*) *(getDialogContainer()->getConfCallback());
 		adviceList=(ptr->getConferenceController(confId)->getConnectedList());
-		sendAck(getLastInvite()->getDestinationBranch());
+		sendAck();
 		
 		if(!sortMIME(*resp->getContent(), peerUri, 3))
 			return false;
@@ -264,7 +264,7 @@
 			getLogEntry()->handle();
 		}
 
-		sendByeOk(bye, "" );
+		sendByeOk( bye );
 
 		CommandString cmdstr(dialogState.callId, SipCommandString::remote_hang_up);
 		cmdstr.setParam3(confId);
@@ -288,7 +288,7 @@
 				SipSMCommand::dialog_layer,
 				SipSMCommand::dialog_layer)){
 		++dialogState.seqNo;
-		sendBye("", dialogState.seqNo);
+		sendBye( dialogState.seqNo );
 		
 		if (getLogEntry()){
 			(dynamic_cast< LogEntrySuccess * >(*( getLogEntry() )))->duration = time( NULL ) - getLogEntry()->start; 
@@ -326,7 +326,7 @@
 				SipSMCommand::dialog_layer,
 				SipSMCommand::dialog_layer)){
 
-		sendCancel("");
+		sendCancel();
 
 		getMediaSession()->stop();
 		signalIfNoTransactions();
@@ -441,7 +441,7 @@
 			getSipStack()->getCallback()->handleCommand("sip_conf", cmdstr );
 		}
 		
-		sendRinging("");
+		sendRinging();
 		
 		if( getSipStack()->getStackConfig()->autoAnswer ){
 			CommandString accept( dialogState.callId, SipCommandString::accept_invite );
@@ -497,7 +497,7 @@
 				);
 		
 		massert( !getLastInvite().isNull() );
-		sendInviteOk(getLastInvite()->getDestinationBranch() );
+		sendInviteOk();
 		CommandString cmdstr2("", "myuri", getDialogConfig()->sipIdentity->getSipUri().getString());
 		
 		
@@ -527,7 +527,7 @@
 		CommandString cmdstr(dialogState.callId, SipCommandString::remote_cancelled_invite);
 		cmdstr.setParam3(confId);
 		getSipStack()->getCallback()->handleCommand("sip_conf", cmdstr );
-		sendInviteOk("" ); 
+		sendInviteOk(); 
 
 		getMediaSession()->stop();
 		signalIfNoTransactions();
@@ -551,7 +551,7 @@
 				SipSMCommand::dialog_layer)){
 
 
-		sendReject( getLastInvite()->getDestinationBranch() );
+		sendReject();
 
 		getMediaSession()->stop();
 		signalIfNoTransactions();
@@ -568,7 +568,7 @@
 
 		setLastInvite(MRef<SipRequest*>((SipRequest *)*command.getCommandPacket()));
 
-		sendNotAcceptable( command.getCommandPacket()->getDestinationBranch() );
+		sendNotAcceptable();
 
 		signalIfNoTransactions();
 		return true;
@@ -590,7 +590,7 @@
 		nonce=resp->getAuthenticateProperty("nonce");
 
 		updateAuthentications( resp );
-		sendInvite("");
+		sendInvite();
 
 		return true;
 	}else{
@@ -667,7 +667,7 @@
 
 		++dialogState.seqNo;
 
-		sendBye("", dialogState.seqNo);
+		sendBye( dialogState.seqNo);
 
 		CommandString cmdstr(dialogState.callId, SipCommandString::security_failed);
 		cmdstr.setParam3(confId);
@@ -728,7 +728,7 @@
 				SipCommandString::hang_up,
 				SipSMCommand::dialog_layer,
 				SipSMCommand::dialog_layer)){
-		sendCancel("");
+		sendCancel();
 
 		getMediaSession()->stop();
 		signalIfNoTransactions();
@@ -973,7 +973,7 @@
 SipDialogConfVoip::~SipDialogConfVoip(){	
 }
 
-void SipDialogConfVoip::sendInvite(const string &branch){
+void SipDialogConfVoip::sendInvite(){
 	//	mdbg << "ERROR: SipDialogVoip::sendInvite() UNIMPLEMENTED"<< end;
 	
 	MRef<SipRequest*> inv;
@@ -981,7 +981,6 @@
 
 	//inv= MRef<SipInvite*>(new SipInvite(
 	inv = SipRequest::createSipMessageInvite(
-				branch,
 				dialogState.callId,
 				SipUri(dialogState.remoteUri),
 				getDialogConfig()->sipIdentity->getSipUri(),
@@ -1050,7 +1049,7 @@
 
 
 //#ifdef NEVERDEFINED_ERSADFS
-void SipDialogConfVoip::sendAck(const string &branch){
+void SipDialogConfVoip::sendAck(){
 /*	//	mdbg << "ERROR: SipDialogVoip::sendAck() UNIMPLEMENTED" << end;
 
 	
@@ -1098,7 +1097,6 @@
 	 
 	//MRef<SipAck *> ack = new SipAck(
 	MRef<SipRequest*> ack = SipRequest::createSipMessageAck(
-		branch, 
 		lastInvite,
 		lastResponse
 		);
@@ -1154,7 +1152,7 @@
 }
 //#endif
 
-void SipDialogConfVoip::sendBye(const string &branch, int bye_seq_no){
+void SipDialogConfVoip::sendBye( int bye_seq_no ){
 
 	MRef<SipRequest*> bye = createSipMessageBye();
 
@@ -1163,11 +1161,10 @@
 	getSipStack()->enqueueCommand(cmd, HIGH_PRIO_QUEUE );
 }
 
-void SipDialogConfVoip::sendCancel(const string &branch){
+void SipDialogConfVoip::sendCancel(){
 	massert( !lastInvite.isNull());
 	//MRef<SipCancel*> cancel = new SipCancel(
 	MRef<SipRequest*> cancel = SipRequest::createSipMessageCancel(
-			branch,
 			lastInvite
 // 			dialogState.remoteUri
 			);
@@ -1180,8 +1177,8 @@
 	getSipStack()->enqueueCommand( cmd, HIGH_PRIO_QUEUE );
 }
 
-void SipDialogConfVoip::sendInviteOk(const string &branch){
-	MRef<SipResponse*> ok= new SipResponse(branch, 200,"OK", getLastInvite());	
+void SipDialogConfVoip::sendInviteOk(){
+	MRef<SipResponse*> ok= new SipResponse( 200,"OK", getLastInvite());	
 	ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
 
 //      There might be so that there are no SDP. Check!
@@ -1226,8 +1223,8 @@
 	getSipStack()->enqueueCommand(cmd, HIGH_PRIO_QUEUE );
 }
 
-void SipDialogConfVoip::sendByeOk(MRef<SipRequest*> bye, const string &branch){
-	MRef<SipResponse*> ok= new SipResponse( branch, 200,"OK", bye );
+void SipDialogConfVoip::sendByeOk( MRef<SipRequest*> bye ){
+	MRef<SipResponse*> ok= new SipResponse( 200,"OK", bye );
 	ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
 
         MRef<SipMessage*> pref(*ok);
@@ -1235,24 +1232,24 @@
 	getSipStack()->enqueueCommand(cmd, HIGH_PRIO_QUEUE );
 }
 
-void SipDialogConfVoip::sendReject(const string &branch){
-	MRef<SipResponse*> ringing = new SipResponse(branch,486,"Temporary unavailable", getLastInvite());	
+void SipDialogConfVoip::sendReject(){
+	MRef<SipResponse*> ringing = new SipResponse( 486, "Temporary unavailable", getLastInvite() );	
 	ringing->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
         MRef<SipMessage*> pref(*ringing);
         SipSMCommand cmd( pref,SipSMCommand::dialog_layer, SipSMCommand::transaction_layer);
 	getSipStack()->enqueueCommand(cmd, HIGH_PRIO_QUEUE );
 }
 
-void SipDialogConfVoip::sendRinging(const string &branch){
-	MRef<SipResponse*> ringing = new SipResponse(branch,180,"Ringing", getLastInvite());	
+void SipDialogConfVoip::sendRinging(){
+	MRef<SipResponse*> ringing = new SipResponse( 180, "Ringing", getLastInvite() );	
 	ringing->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
         MRef<SipMessage*> pref(*ringing);
         SipSMCommand cmd( pref, SipSMCommand::dialog_layer, SipSMCommand::transaction_layer);
 	getSipStack()->enqueueCommand(cmd, HIGH_PRIO_QUEUE );
 }
 
-void SipDialogConfVoip::sendNotAcceptable(const string &branch){
-	MRef<SipResponse*> not_acceptable = new SipResponse(branch,606,"Not Acceptable", getLastInvite());	
+void SipDialogConfVoip::sendNotAcceptable(){
+	MRef<SipResponse*> not_acceptable = new SipResponse( 606, "Not Acceptable", getLastInvite());	
 	if( mediaSession && mediaSession->getErrorString() != "" ){
 		not_acceptable->addHeader( 
 			new SipHeader(new SipHeaderValueWarning(getSipStack()->getStackConfig()->externalContactIP, 399, mediaSession->getErrorString() ) ));

Modified: trunk/libminisip/source/subsystem_signaling/sip/SipDialogPresenceClient.cxx
===================================================================
--- trunk/libminisip/source/subsystem_signaling/sip/SipDialogPresenceClient.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libminisip/source/subsystem_signaling/sip/SipDialogPresenceClient.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -107,7 +107,7 @@
 
 void SipDialogPresenceClient::createSubscribeClientTransaction(){
 	++dialogState.seqNo;
-	sendSubscribe("");
+	sendSubscribe();
 }
    
 
@@ -239,7 +239,7 @@
 			return true;
 		}
 
-		sendSubscribe("");
+		sendSubscribe();
 
 		return true;
 	}else{
@@ -351,12 +351,11 @@
 SipDialogPresenceClient::~SipDialogPresenceClient(){	
 }
 
-void SipDialogPresenceClient::sendSubscribe(const string &branch){
+void SipDialogPresenceClient::sendSubscribe(){
 	
 	MRef<SipRequest*> sub ;
 	
 	sub = SipRequest::createSipMessageSubscribe(
-				branch,
 				dialogState.callId,
 				toUri->getSipUri(),
 				getDialogConfig()->sipIdentity->getSipUri(),

Modified: trunk/libminisip/source/subsystem_signaling/sip/SipDialogPresenceServer.cxx
===================================================================
--- trunk/libminisip/source/subsystem_signaling/sip/SipDialogPresenceServer.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libminisip/source/subsystem_signaling/sip/SipDialogPresenceServer.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -239,7 +239,7 @@
 void SipDialogPresenceServer::sendNotice(string /*onlineStatus*/, string user){ //FIXME: use onlineStatus 
 	++dialogState.seqNo;
 	string cid = "FIXME"+itoa(rand());
-	sendNotify("", user, cid);
+	sendNotify( user, cid );
 
 }
 
@@ -253,7 +253,7 @@
 
 void SipDialogPresenceServer::sendSubscribeOk(MRef<SipRequest*> sub){
 	
-	MRef<SipResponse*> ok= new SipResponse("", 200,"OK", sub);
+	MRef<SipResponse*> ok= new SipResponse( 200,"OK", sub );
 	ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
 
         MRef<SipMessage*> pref(*ok);
@@ -276,7 +276,7 @@
 	usersLock.unlock();
 }
 
-void SipDialogPresenceServer::sendNotify(const string &branch, string toUri, string cid){
+void SipDialogPresenceServer::sendNotify( string toUri, string cid ){
 	
 	MRef<SipRequest*> notify;
 	int32_t localSipPort;
@@ -285,7 +285,6 @@
 	
 	MRef<SipIdentity*> toId( new SipIdentity(toUri));
 	notify = SipRequest::createSipMessageNotify(
-				branch,
 				cid,
 				toId->getSipUri(),
 				getDialogConfig()->sipIdentity->getSipUri(),

Modified: trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoip.cxx
===================================================================
--- trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoip.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoip.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -179,7 +179,7 @@
 			getLogEntry()->handle();
 		}
 
-		sendByeOk(bye, "" );
+		sendByeOk(bye);
 
 		CommandString cmdstr(dialogState.callId, SipCommandString::remote_hang_up);
 		getSipStack()->getCallback()->handleCommand("gui", cmdstr);
@@ -207,7 +207,7 @@
 				SipSMCommand::dialog_layer)){
 		++dialogState.seqNo;
 		
-		sendBye("", dialogState.seqNo);
+		sendBye(dialogState.seqNo);
 		
 		if (getLogEntry()){
 			(dynamic_cast< LogEntrySuccess * >(*( getLogEntry() )))->duration = time( NULL ) - getLogEntry()->start; 
@@ -332,7 +332,7 @@
 
 		string referredUri = command.getCommandString().getParam();
 		++dialogState.seqNo;
-		sendRefer("", dialogState.seqNo, referredUri);
+		sendRefer(dialogState.seqNo, referredUri);
 		
 		return true;
 	}else{
@@ -403,7 +403,7 @@
 		cmd.setSource(command.getSource());
 		getSipStack()->enqueueCommand(cmd, HIGH_PRIO_QUEUE );
 		
-		sendNotifyOk(notif, "" );
+		sendNotifyOk( notif );
 		
 		ret = true;
 	}
@@ -443,7 +443,7 @@
 				SipSMCommand::dialog_layer,
 				SipSMCommand::dialog_layer)){
 
-		sendReferOk(lastRefer->getDestinationBranch() );
+		sendReferOk();
 
 		/* start a new call ... */
 		string uri = getReferredUri(lastRefer);
@@ -469,7 +469,7 @@
 				SipSMCommand::dialog_layer,
 				SipSMCommand::dialog_layer)){
 
-		sendReferReject(lastRefer->getDestinationBranch());
+		sendReferReject();
 
 		return true;
 	}else{
@@ -602,7 +602,7 @@
 	mediaSession->unregister();
 }
 
-void SipDialogVoip::sendBye(const string &branch, int bye_seq_no){
+void SipDialogVoip::sendBye(int bye_seq_no){
 	MRef<SipRequest*> bye = createSipMessageBye();
 
 	MRef<SipMessage*> pref(*bye);
@@ -610,7 +610,7 @@
 	getSipStack()->enqueueCommand(cmd, HIGH_PRIO_QUEUE);
 }
 
-void SipDialogVoip::sendRefer(const string &branch, int refer_seq_no, const string referredUri){
+void SipDialogVoip::sendRefer(int refer_seq_no, const string referredUri){
 	MRef<SipRequest*> refer = createSipMessageRefer( referredUri );
 
 	MRef<SipMessage*> pref(*refer);
@@ -618,14 +618,10 @@
 	getSipStack()->enqueueCommand(cmd, HIGH_PRIO_QUEUE );
 }
 
-void SipDialogVoip::sendCancel(const string &branch){
+void SipDialogVoip::sendCancel(){
 	massert( !lastInvite.isNull());
 	
-	MRef<SipRequest*> cancel = SipRequest::createSipMessageCancel(
-			lastInvite->getFirstViaBranch(),
-			lastInvite
-// 			dialogState.remoteUri
-			);
+	MRef<SipRequest*> cancel = SipRequest::createSipMessageCancel( lastInvite );
 
 	addRoute( cancel );
 
@@ -637,8 +633,8 @@
 	getSipStack()->enqueueCommand( cmd, HIGH_PRIO_QUEUE );
 }
 
-void SipDialogVoip::sendReferOk(const string &branch){
-	MRef<SipResponse*> ok= new SipResponse(branch, 202,"OK", lastRefer);	
+void SipDialogVoip::sendReferOk(){
+	MRef<SipResponse*> ok= new SipResponse( 202,"OK", lastRefer);	
 	ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
 	MRef<SipHeaderValue *> contact = 
 		new SipHeaderValueContact( 
@@ -651,8 +647,8 @@
 	getSipStack()->enqueueCommand(cmd, HIGH_PRIO_QUEUE );
 }
 
-void SipDialogVoip::sendByeOk(MRef<SipRequest*> bye, const string &branch){
-	MRef<SipResponse*> ok= new SipResponse( branch, 200,"OK", bye );
+void SipDialogVoip::sendByeOk(MRef<SipRequest*> bye){
+	MRef<SipResponse*> ok= new SipResponse( 200,"OK", bye );
 	ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
 
 	MRef<SipMessage*> pref(*ok);
@@ -660,8 +656,8 @@
 	getSipStack()->enqueueCommand(cmd, HIGH_PRIO_QUEUE );
 }
 
-void SipDialogVoip::sendNotifyOk(MRef<SipRequest*> notif, const string &branch){
-	MRef<SipResponse*> ok= new SipResponse( branch, 200, "OK", notif );
+void SipDialogVoip::sendNotifyOk(MRef<SipRequest*> notif){
+	MRef<SipResponse*> ok= new SipResponse( 200, "OK", notif );
 	ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
 
 	MRef<SipMessage*> pref(*ok);
@@ -669,10 +665,9 @@
 	getSipStack()->enqueueCommand(cmd, HIGH_PRIO_QUEUE );
 }
 
-void SipDialogVoip::sendReferReject(const string &branch){
+void SipDialogVoip::sendReferReject(){
 	MRef<SipResponse*> forbidden = 
-		new SipResponse(branch,
-				403,"Forbidden", 
+		new SipResponse( 403,"Forbidden", 
 				*lastRefer
 				);	
 	forbidden->getHeaderValueTo()->setParameter("tag",dialogState.localTag);

Modified: trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoipClient.cxx
===================================================================
--- trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoipClient.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoipClient.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -139,7 +139,7 @@
 		//set an "early" remoteUri ... we will update this later
 		dialogState.remoteUri= command.getCommandString().getParam();
 
-		sendInvite("");
+		sendInvite();
 
 		return true;
 	}else{
@@ -185,7 +185,7 @@
   			if( !sortMIME( content , peerUri, 3) ){
 				// MIKEY failed
 				// TODO reason header
-				sendCancel("");
+				sendCancel();
 
 				getMediaSession()->stop();
 				signalIfNoTransactions();
@@ -300,7 +300,7 @@
 				SipSMCommand::dialog_layer,
 				SipSMCommand::dialog_layer)){
 
- 		sendCancel("");
+ 		sendCancel();
 
 		getMediaSession()->stop();
 		signalIfNoTransactions();
@@ -376,7 +376,7 @@
 		}
 
 		++dialogState.seqNo;
-		sendInvite("");
+		sendInvite();
 
 		return true;
 	}else{
@@ -390,7 +390,7 @@
 
 		++dialogState.seqNo;
 
-		sendBye("", dialogState.seqNo);
+		sendBye(dialogState.seqNo);
 
 		CommandString cmdstr(dialogState.callId, SipCommandString::security_failed);
 		getSipStack()->getCallback()->handleCommand("gui", cmdstr);
@@ -523,13 +523,10 @@
 }
 
 
-void SipDialogVoipClient::sendInvite(const string &branch){
-	//	mdbg << "ERROR: SipDialogVoipClient::sendInvite() UNIMPLEMENTED"<< end;
-	
+void SipDialogVoipClient::sendInvite(){
 	MRef<SipRequest*> inv;
 	string keyAgreementMessage;
 	inv = SipRequest::createSipMessageInvite(
-			branch,
 			dialogState.callId,
 			SipUri(dialogState.remoteUri),
 			getDialogConfig()->sipIdentity->getSipUri(),
@@ -579,7 +576,6 @@
 	
 	inv->getHeaderValueFrom()->setParameter("tag",dialogState.localTag );
 
-//	mdbg << "SipDialogVoipClient::sendInvite(): sending INVITE to transaction"<<end;
 //	ts.save( INVITE_END );
 	MRef<SipMessage*> pktr(*inv);
 
@@ -614,8 +610,8 @@
 	sendSipMessage( *prack );
 }
 
-void SipDialogVoipClient::sendInviteOk(const string &branch){
-	MRef<SipResponse*> ok= new SipResponse(branch, 200,"OK", getLastInvite());	
+void SipDialogVoipClient::sendInviteOk(){
+	MRef<SipResponse*> ok= new SipResponse(200,"OK", getLastInvite());	
 	ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
 	
 	MRef<SipHeaderValue *> contact = 

Modified: trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoipServer.cxx
===================================================================
--- trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoipServer.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoipServer.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -274,7 +274,7 @@
 		getSipStack()->getCallback()->handleCommand("gui", cmdstr );
 
 		massert( !getLastInvite().isNull() );
-		sendInviteOk(getLastInvite()->getDestinationBranch() );
+		sendInviteOk();
 
 		getMediaSession()->start();
 
@@ -309,7 +309,7 @@
 			getLogEntry()->handle();
 		}
 
-		sendByeOk(bye, "" );
+		sendByeOk( bye );
 
 		CommandString cmdstr(dialogState.callId, SipCommandString::remote_hang_up);
 		getSipStack()->getCallback()->handleCommand("gui", cmdstr);
@@ -331,14 +331,14 @@
 			    SipSMCommand::dialog_layer)) {
 		MRef<SipRequest*> cancel =
 			(SipRequest*)*command.getCommandPacket();
-		const string branch = cancel->getFirstViaBranch();
 
-		if (getLastInvite()->getFirstViaBranch() != branch)
-			return false;
+///		const string branch = cancel->getFirstViaBranch();
+///
+///		if (getLastInvite()->getFirstViaBranch() != branch)
+///			return false;
 
 		// Send 487 Request Cancelled for INVITE
 		MRef<SipResponse*> cancelledResp = new SipResponse( 
-				branch, 
 				487,
 				"Request Cancelled", 
 				*getLastInvite() 
@@ -350,7 +350,7 @@
 		getSipStack()->enqueueCommand(cancelledCmd, HIGH_PRIO_QUEUE);
 
 		// Send 200 OK for CANCEL
-		MRef<SipResponse*> okResp = new SipResponse( branch, 200,"OK", cancel );
+		MRef<SipResponse*> okResp = new SipResponse( 200,"OK", cancel );
 		okResp->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
 		MRef<SipMessage*> okMsg(*okResp);
 		SipSMCommand okCmd( okMsg, SipSMCommand::dialog_layer,
@@ -383,7 +383,7 @@
 				SipSMCommand::dialog_layer)){
 
 
-		sendReject( getLastInvite()->getDestinationBranch() );
+		sendReject();
 
 		getMediaSession()->stop();
 		signalIfNoTransactions();
@@ -402,7 +402,7 @@
 		
 		dialogState.updateState( getLastInvite() );
 
-		sendNotAcceptable( command.getCommandPacket()->getDestinationBranch() );
+		sendNotAcceptable( );
 
 		signalIfNoTransactions();
 		return true;
@@ -614,8 +614,8 @@
 }
 
 
-void SipDialogVoipServer::sendInviteOk(const string &branch){
-	MRef<SipResponse*> ok= new SipResponse(branch, 200,"OK", getLastInvite() );	
+void SipDialogVoipServer::sendInviteOk(){
+	MRef<SipResponse*> ok= new SipResponse(200,"OK", getLastInvite() );	
 	ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
 	
 	MRef<SipHeaderValue *> contact = 
@@ -667,8 +667,8 @@
 	getSipStack()->enqueueCommand(cmd, HIGH_PRIO_QUEUE );
 }
 
-void SipDialogVoipServer::sendReject(const string &branch){
-	MRef<SipResponse*> ringing = new SipResponse(branch,486,"Temporary unavailable", getLastInvite());	
+void SipDialogVoipServer::sendReject(){
+	MRef<SipResponse*> ringing = new SipResponse(486,"Temporary unavailable", getLastInvite());	
 	ringing->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
 	MRef<SipMessage*> pref(*ringing);
 	SipSMCommand cmd( pref,SipSMCommand::dialog_layer, SipSMCommand::transaction_layer);
@@ -695,8 +695,8 @@
 	sendSipMessage( *ringing );
 }
 
-void SipDialogVoipServer::sendNotAcceptable(const string &branch){
-	MRef<SipResponse*> not_acceptable = new SipResponse(branch,406,"Not Acceptable", getLastInvite());	
+void SipDialogVoipServer::sendNotAcceptable(){
+	MRef<SipResponse*> not_acceptable = new SipResponse(406,"Not Acceptable", getLastInvite());	
 	if( mediaSession && mediaSession->getErrorString() != "" ){
 		not_acceptable->addHeader( 
 			new SipHeader(

Modified: trunk/libmsip/include/libmsip/SipDialogRegister.h
===================================================================
--- trunk/libmsip/include/libmsip/SipDialogRegister.h	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/include/libmsip/SipDialogRegister.h	2007-05-22 20:08:46 UTC (rev 3288)
@@ -53,7 +53,7 @@
 		bool getGuiFeedback();
 		void setGuiFeedback(bool fb);
 
-		void send_register(std::string branch);
+		void sendRegister();
 	private:
 		bool a0_start_trying_register( const SipSMCommand &command);
 		bool a1_trying_registred_2xx( const SipSMCommand &command);

Modified: trunk/libmsip/include/libmsip/SipMessage.h
===================================================================
--- trunk/libmsip/include/libmsip/SipMessage.h	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/include/libmsip/SipMessage.h	2007-05-22 20:08:46 UTC (rev 3288)
@@ -83,15 +83,6 @@
 		 * type. Headers and content must be added to the message
 		 * to make it a valid SIP message. This is typically done
 		 * in the constructor of the sub-class.
-		 * @param branch	All SIP messages have a branch
-		 * 			value (which transaction they
-		 * 			belong to). This argument may be an
-		 * 			empty string.
-		 * @param type		Each SIP message has a type. It 
-		 * 			is a string that for a method
-		 * 			is the method string (for example
-		 * 			"INVITE"), and for a response it
-		 * 			is the string in SipResponse::type.
 		 */
 		SipMessage();
 
@@ -221,14 +212,6 @@
 		std::string getCSeqMethod();
 		
 		/**
-		* @return The branch parameter associated with the top
-		* most via header, or an empty string if there is no via
-		* header or if the branch is not set in the topmost via
-		* header.
-		*/
-		std::string getFirstViaBranch();
-
-		/**
 		* @return The top most via header, or a null reference
 		* if there is no via header in the message.
 		*/
@@ -252,11 +235,6 @@
 		SipUri getTo();
                 
 		/**
-		 * Removes all via headers that may be in the message.
-		 */
-		void removeAllViaHeaders();
-		
-		/**
 		* @return The complete message as a string.
 		*/
 		virtual std::string getString() const =0;
@@ -282,7 +260,7 @@
 		* If it is non empty string it identifies which
 		* transaction it belongs to.
 		*/
-		std::string getDestinationBranch();
+		std::string getBranch();
 
 		/**
 		* @return Number of headers in this message. Notice that
@@ -349,7 +327,6 @@
 		MRef<SipHeaderValueWWWAuthenticate*> getHeaderValueWWWAuthenticate(int i);
 
 	protected:
-		void setBranch(std::string b){branch = b;}
 
 		/**
 		 * Parses one line of text to a SIP header and adds it to
@@ -372,9 +349,6 @@
 		MRef<SipMessageContent*> content;
 
 		int parseHeaders(const std::string &buf, int startIndex);
-		MRef<SipHeaderValueVia*> getViaHeader(bool first);
-		std::string getViaHeaderBranch(bool first);
-		std::string branch;
 
 		MRef<Socket*> sock;
 };

Modified: trunk/libmsip/include/libmsip/SipRequest.h
===================================================================
--- trunk/libmsip/include/libmsip/SipRequest.h	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/include/libmsip/SipRequest.h	2007-05-22 20:08:46 UTC (rev 3288)
@@ -59,19 +59,13 @@
 		 * but for PRACK requests you will have to adjust it.
 		 */
 		static MRef<SipRequest*> createSipMessageAck(
-				const std::string &branch,
 				MRef<SipRequest*> origReq,
 				MRef<SipResponse*> resp,
 				bool provisional=false);
 
-		static MRef<SipRequest*> createSipMessageCancel(
-				const std::string &branch,
-				MRef<SipRequest*> inv
-// 				std::string to_uri
-				);
+		static MRef<SipRequest*> createSipMessageCancel( MRef<SipRequest*> inv );
 
 		static MRef<SipRequest*> createSipMessageIMMessage(
-				const std::string &branch,
 				const std::string &call_id,
 				const SipUri& toUri,
 				const SipUri& fromUri,
@@ -80,7 +74,6 @@
 
 
 		static MRef<SipRequest*> createSipMessageInvite(
-				const std::string &branch,
 				const std::string &call_id,
 				const SipUri &toUri,
 				const SipUri &fromUri,
@@ -90,7 +83,6 @@
 				);
 
 		static MRef<SipRequest*> createSipMessageNotify(
-				const std::string &branch,
 				const std::string &call_id,
 				const SipUri& toUri,
 				const SipUri& fromUri,
@@ -98,7 +90,6 @@
 				);
 
 		static MRef<SipRequest*> createSipMessageRegister(
-				const std::string &branch,
 				const std::string &call_id,
 				const SipUri &registrar,
 				const SipUri &fromUri,
@@ -106,7 +97,6 @@
 				int32_t seq_no);
 
 		static MRef<SipRequest*> createSipMessageSubscribe(
-				const std::string &branch,
 				const std::string &call_id,
 				const SipUri& toUri,
 				const SipUri& fromUri,

Modified: trunk/libmsip/include/libmsip/SipResponse.h
===================================================================
--- trunk/libmsip/include/libmsip/SipResponse.h	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/include/libmsip/SipResponse.h	2007-05-22 20:08:46 UTC (rev 3288)
@@ -49,7 +49,7 @@
 	public:
 		static const std::string type;
 
-		SipResponse(std::string branch, int32_t status, std::string status_desc, MRef<SipRequest*> inv);
+		SipResponse(int32_t status, std::string status_desc, MRef<SipRequest*> inv);
 
 
 		virtual std::string getMemObjectType() const {return "SipResponse";}

Modified: trunk/libmsip/include/libmsip/SipTransaction.h
===================================================================
--- trunk/libmsip/include/libmsip/SipTransaction.h	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/include/libmsip/SipTransaction.h	2007-05-22 20:08:46 UTC (rev 3288)
@@ -123,8 +123,6 @@
 		std::string callId;
 		
 	private:
-		
-		//std::string command;
 		int cSeqNo;
 		std::string cSeqMethod;
 		std::string branch;

Modified: trunk/libmsip/include/libmsip/SipTransactionInviteClient.h
===================================================================
--- trunk/libmsip/include/libmsip/SipTransactionInviteClient.h	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/include/libmsip/SipTransactionInviteClient.h	2007-05-22 20:08:46 UTC (rev 3288)
@@ -81,7 +81,7 @@
 		*/
 		void setDialogRouteSet(MRef<SipResponse *> resp);
 
-		void sendAck(MRef<SipResponse *>, std::string branch="", bool provisional=false); //if no branch specified, use transaction branch attribute
+		void sendAck(MRef<SipResponse *>, bool provisional=false); //if no branch specified, use transaction branch attribute
 
 	private:
 		

Modified: trunk/libmsip/source/SipLayerTransaction.cxx
===================================================================
--- trunk/libmsip/source/SipLayerTransaction.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/source/SipLayerTransaction.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -145,7 +145,7 @@
 	}
 
 	if (c.getType()==SipSMCommand::COMMAND_PACKET){
-		string branch = c.getCommandPacket()->getDestinationBranch();
+		string branch = c.getCommandPacket()->getBranch();
 		if (branch.size()>0)
 			tid = branch + c.getCommandPacket()->getCSeqMethod();
 	}
@@ -166,7 +166,7 @@
 		string branch;
 		string seqMethod;
 		if (c.getType()==SipSMCommand::COMMAND_PACKET){
-			branch = c.getCommandPacket()->getDestinationBranch();
+			branch = c.getCommandPacket()->getBranch();
 			seqMethod = c.getCommandPacket()->getCSeqMethod();
 		}
 		bool hasBranch = (branch!="");

Modified: trunk/libmsip/source/SipLayerTransport.cxx
===================================================================
--- trunk/libmsip/source/SipLayerTransport.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/source/SipLayerTransport.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -348,7 +348,7 @@
 	if( command.getType()==SipSMCommand::COMMAND_PACKET ){
 		MRef<SipMessage*> pack = command.getCommandPacket();
 
-		string branch = pack->getDestinationBranch();
+		string branch = pack->getBranch();
 		bool addVia = pack->getType() != SipResponse::type;
 
 		if (branch==""){
@@ -784,8 +784,7 @@
 			|| !msg->getHeaderValueTo()
 			|| (isInvite && !msg->getHeaderValueNo(SIP_HEADER_TYPE_CONTACT,0))){
 		if (isRequest){
-			MRef<SipMessage*> resp = new SipResponse(msg->getFirstViaBranch(),
-				   400, "Required header missing", (SipRequest*)*msg );
+			MRef<SipMessage*> resp = new SipResponse( 400, "Required header missing", (SipRequest*)*msg );
 			resp->setSocket(msg->getSocket());
 			sendMessage(resp, "TL", false);
 		}
@@ -944,7 +943,7 @@
 		mdbg << "Transport error in SipLayerTransport: " << message << end;
 		cerr << "SipLayerTransport: sendMessage: exception thrown! " << message << endl;
 #endif
-		CommandString transportError( pack->getDestinationBranch()+pack->getCSeqMethod(), 
+		CommandString transportError( pack->getBranch()+pack->getCSeqMethod(), 
 					      SipCommandString::transport_error,
 					      "SipLayerTransport: "+message );
 		SipSMCommand transportErrorCommand(

Modified: trunk/libmsip/source/dialogs/SipDialog.cxx
===================================================================
--- trunk/libmsip/source/dialogs/SipDialog.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/source/dialogs/SipDialog.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -281,7 +281,7 @@
 }
 
 MRef<SipResponse*> SipDialog::createSipResponse( MRef<SipRequest*> req, int32_t status, const std::string &reason ){
-	MRef<SipResponse*> resp = new SipResponse( req->getDestinationBranch(), status, reason, *req );
+	MRef<SipResponse*> resp = new SipResponse( status, reason, *req );
 	// FIXME don't change the To tag if it's already present in the request.
 	resp->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
 	return resp;

Modified: trunk/libmsip/source/dialogs/SipDialogRegister.cxx
===================================================================
--- trunk/libmsip/source/dialogs/SipDialogRegister.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/source/dialogs/SipDialogRegister.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -57,9 +57,9 @@
         +-------------+                            a10 GUI(failed)
                    |  +---------------------------------------------------------------+
 cmdstr:proxy_regist|  | 401                                                           |
-  a0 send_register |  | a2 send_register                                              |
+  a0 sendRegister  |  | a2 sendRegister                                               |
                    |  | +-+              cmdstr:setpass                               |
-                   V  | | V              a5 send_register                             |
+                   V  | | V              a5 sendRegister                              |
             +-------------+<-------------------------+                                |
             |   S1        | 401                      |                                |
         +-->|   Trying    | a3 ask_dialog    +---------------+                        |
@@ -74,7 +74,7 @@
         |   |  S2         |                                        +----------+
         +---|  Registred  |                                              |
  register   |             |                                              |
- send_reg.. +-------------+                                              V     a13: notransactions
+ sendRegist +-------------+                                              V     a13: notransactions
         |       |                                                  +----------+
         --------+                                                  |          |
              a12 cmdstr:register <proxy>                           |terminated|
@@ -118,7 +118,7 @@
 		}
 			
 		++dialogState.seqNo;
-		send_register("");
+		sendRegister();
 		
 		CommandString cmdstr( dialogState.callId, SipCommandString::register_sent);
 		cmdstr["identityId"] = getDialogConfig()->sipIdentity->getId();
@@ -200,7 +200,7 @@
 		}
 
 		++dialogState.seqNo;
-		send_register("");
+		sendRegister();
 		//TODO: inform GUI
 
 		return true;
@@ -257,7 +257,7 @@
 
 		++dialogState.seqNo;
 
-		send_register(/*trans->getBranch()*/"");
+		sendRegister();
 		return true;
 	}else{
 		return false;
@@ -337,7 +337,7 @@
 		}		
 		
 		++dialogState.seqNo;
-		send_register("");
+		sendRegister();
 		
 		CommandString cmdstr(dialogState.callId, SipCommandString::register_sent);
 		cmdstr["identityId"] = getDialogConfig()->sipIdentity->getId();
@@ -528,7 +528,7 @@
 	return ret;
 }
 
-void SipDialogRegister::send_register(string branch){
+void SipDialogRegister::sendRegister(){
 	
 //	mdbg << "SipDialogRegister: domain is "<< proxy_domain<< end;
 
@@ -547,7 +547,6 @@
 	}
 
 	MRef<SipRequest*> reg= SipRequest::createSipMessageRegister(
-		branch, 
 		dialogState.callId,
 		identity->getSipRegistrar()->getUri(),
 		identity->getSipUri(),

Modified: trunk/libmsip/source/messages/SipMessage.cxx
===================================================================
--- trunk/libmsip/source/messages/SipMessage.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/source/messages/SipMessage.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -143,14 +143,12 @@
 }
 
 int32_t SipMessage::getContentLength(){
-	for (int32_t i=0; i< headers.size(); i++){
-		MRef<SipHeaderValueContentLength*> len;
-		if ((headers[i])->getType() == SIP_HEADER_TYPE_CONTENTLENGTH){
-			len = MRef<SipHeaderValueContentLength*>((SipHeaderValueContentLength*)*(headers[i]->getHeaderValue(0)));
-			return len->getContentLength();
-		}
+	MRef<SipHeaderValue*> cl = getHeaderValueNo( SIP_HEADER_TYPE_CONTENTLENGTH, 0 );
+	if (cl){
+		return ((SipHeaderValueContentLength*)*cl)->getContentLength();
+	}else{
+		return 0;
 	}
-	return 0;
 }
 
 string SipMessage::getHeadersAndContent() const{
@@ -229,7 +227,6 @@
 {
 	uint32_t i;
 
-	//string header;
 	for (i=0; buildFrom[i]!='\r' && buildFrom[i]!='\n'; i++){
 		if(i==buildFrom.size()){
 #ifdef DEBUG_OUTPUT
@@ -265,51 +262,33 @@
 			merr << "WARNING: Sip message has content, but no content type! Content ignored."<< end;
 		}
 	}
-	
-	branch = getFirstViaBranch();
 }
 
 
 
 
 bool SipMessage::addLine(string line){
-	//ts.save("SipMessage-creating header start");
 	MRef<SipHeader*> hdr = SipHeader::parseHeader(line);
-	//ts.save("SipMessage-creating header end");
-	if( hdr.isNull() ) //do not add if null
+	if( hdr.isNull() )
 		return false;
 	addHeader(hdr);
 	return true;
 }
 
-
-MRef<SipHeaderValue*> findFirstHeaderValue(minilist<MRef<SipHeader*> > headers, int type)
-{
-	for (int32_t i=0; i< headers.size(); i++){
-		if ((headers[i])->getType() == type){
-			return headers[i]->getHeaderValue(0);
-			
-		}
-	}
-	return NULL;
-}
-
 void SipMessage::setContent(MRef<SipMessageContent*> c){
 	this->content=c;
 	if( content ){
 		string contentType = content->getContentType();
 		if( contentType != "" ){
-			MRef<SipHeaderValue*> hdr = findFirstHeaderValue( headers, SIP_HEADER_TYPE_CONTENTTYPE );
+			MRef<SipHeaderValue*> hdr = getHeaderValueNo(SIP_HEADER_TYPE_CONTENTTYPE, 0);
 
 			if( hdr ){
-				MRef<SipHeaderValueContentType*> contentTypeHdr = 
-					dynamic_cast<SipHeaderValueContentType*>(*hdr);
+				MRef<SipHeaderValueContentType*> contentTypeHdr = (SipHeaderValueContentType*)*hdr;
 				contentTypeHdr->setString(contentType);
+			} else{
+				MRef<SipHeaderValue*> contenttypep = new SipHeaderValueContentType( contentType );
+				addHeader( new SipHeader(contenttypep) );
 			}
-			else{
-				MRef<SipHeaderValueContentType*> contenttypep = new SipHeaderValueContentType( contentType );
-				addHeader(new SipHeader(*contenttypep));
-			}
 		}
 	}
 }
@@ -319,77 +298,56 @@
 }
 
 string SipMessage::getCallId(){
-	for (int32_t i=0; i< headers.size(); i++){
-		MRef<SipHeaderValueCallID*> id;
-		if ((headers[i])->getType() == SIP_HEADER_TYPE_CALLID){
-			id = MRef<SipHeaderValueCallID*>((SipHeaderValueCallID*)*(headers[i]->getHeaderValue(0)));
-			return id->getString();
-		}
-	}
-	return "";
+	MRef<SipHeaderValue*> id = getHeaderValueNo( SIP_HEADER_TYPE_CALLID, 0 );
+	if (id)
+		return ((SipHeaderValue*)*id)->getString();
+	else
+		return "";
 }
 
 int32_t  SipMessage::getCSeq(){
-	for (int32_t i=0; i< headers.size(); i++){
-		MRef<SipHeaderValueCSeq*> seq;
-		if ((headers[i])->getType() == SIP_HEADER_TYPE_CSEQ){
-			seq = MRef<SipHeaderValueCSeq*>((SipHeaderValueCSeq *)*(headers[i]->getHeaderValue(0)));
-			return seq->getCSeq();
-		}
+	MRef<SipHeaderValue*> seq = getHeaderValueNo( SIP_HEADER_TYPE_CSEQ, 0 );
+	if (seq){
+		return ((SipHeaderValueCSeq*)*seq)->getCSeq();
+	}else{
+		mdbg << "ERROR: Could not find command sequence number in sip Message."<< end;
+		return -1;
 	}
- 	mdbg << "ERROR: Could not find command sequence number in sip Message."<< end;
-	return -1;
 }
 
-string SipMessage::getViaHeaderBranch(bool first){
-	string b;
-	MRef<SipHeaderValueVia*> via = getViaHeader(first);
-
-	if( !via.isNull() ){
-		b = via->getParameter("branch");
-	}
-	
-	return b;
+MRef<SipHeaderValueVia*> SipMessage::getFirstVia(){
+	MRef<SipHeaderValue*> via = getHeaderValueNo( SIP_HEADER_TYPE_VIA, 0 );
+	if (via)
+		return (SipHeaderValueVia*) *via;
+	else
+		return NULL;
 }
 
-MRef<SipHeaderValueVia*> SipMessage::getViaHeader(bool first){
-	MRef<SipHeaderValueVia*> via;
-	
-	for (int32_t i=0; i< headers.size(); i++){
-		if ((headers[i])->getType() == SIP_HEADER_TYPE_VIA){
-			via = MRef<SipHeaderValueVia*>((SipHeaderValueVia*)*(headers[i]->getHeaderValue(0)));
-			if (first)
-				return via;
-		}
+void SipMessage::removeFirstVia(){
+	MRef<SipHeader*> hdr = getHeaderOfType( SIP_HEADER_TYPE_VIA, 0 );
+	if( hdr->getNoValues() > 1 ){
+		hdr->removeHeaderValue( 0 );
+	} else{
+		removeHeader( hdr );
 	}
-	return via;
 }
 
-
-MRef<SipHeaderValueVia*> SipMessage::getFirstVia(){
-	return getViaHeader(true);
+string SipMessage::getBranch(){
+	MRef<SipHeaderValue*> firstVia = getHeaderValueNo( SIP_HEADER_TYPE_VIA, 0 );
+	if (firstVia){
+		return firstVia->getParameter("branch");
+	}else
+		return "";
 }
 
-
-string SipMessage::getFirstViaBranch(){
-	return getViaHeaderBranch(true);
-}
-
-string SipMessage::getDestinationBranch(){
-	return branch;
-}
-
 string SipMessage::getCSeqMethod(){
-	for (int32_t i=0; i < headers.size(); i++){
-		MRef<SipHeaderValueCSeq*> seq;
-		if ((headers[i])->getType() == SIP_HEADER_TYPE_CSEQ){
-			seq = MRef<SipHeaderValueCSeq*>((SipHeaderValueCSeq *)*(headers[i]->getHeaderValue(0)));
-			return seq->getMethod();
-		}
-	
+	MRef<SipHeaderValue*> seq = getHeaderValueNo( SIP_HEADER_TYPE_CSEQ, 0 );
+	if (seq){
+		return ((SipHeaderValueCSeq*)*seq)->getMethod();
+	}else{
+		mdbg << "ERROR: Could not find command sequence method in sip Message."<< end;
+		return "";
 	}
-	mdbg << "ERROR: Could not find command sequence method in sip Message."<< end;
-	return "";
 }
 
 SipUri SipMessage::getFrom(){
@@ -410,41 +368,10 @@
 	return ret;
 }
 
-void SipMessage::removeFirstVia(){
-	MRef<SipHeader*> hdr = getHeaderOfType( SIP_HEADER_TYPE_VIA, 0 );
-	if( hdr->getNoValues() > 1 ){
-		hdr->removeHeaderValue( 0 );
-	}
-	else{
-		removeHeader( hdr );
-	}
-
-	branch = getFirstViaBranch();
-}
-
 void SipMessage::removeHeader(MRef<SipHeader*> header){
 	headers.remove( header );
 }
 
-void SipMessage::removeAllViaHeaders(){
-	bool done=false;
-	int n=0;
-	while (!done){
-		done=true;
-
-		for (int i=0; i<headers.size(); i++){
-			if ((headers[i])->getType()==SIP_HEADER_TYPE_VIA){
-				headers.remove(i);
-				done=false;
-				n++;
-				i--;
-				break;
-			}
-			
-		}
-	}
-}
-
 MRef<SipHeaderValueFrom*> SipMessage::getHeaderValueFrom(){
 	MRef<SipHeader*> from = getHeaderOfType( SIP_HEADER_TYPE_FROM );
 
@@ -469,8 +396,7 @@
 	MRef<SipHeader *> h = getHeaderOfType( SIP_HEADER_TYPE_CONTACT );
 
 	if( h ){
-		return MRef<SipHeaderValueContact*>( 
-			(SipHeaderValueContact*)*(h->getHeaderValue(0) ) );
+		return (SipHeaderValueContact*)*(h->getHeaderValue(0) );
 	}
 	return NULL;
 }
@@ -512,28 +438,23 @@
 }
 
 string SipMessage::getWarningMessage(){
-	for (uint32_t i = 0; i< (uint32_t)headers.size(); i++)
-		if ((headers[i])->getType() == SIP_HEADER_TYPE_WARNING){
-			string warning = ((SipHeaderValueWarning *)*(headers[i]->getHeaderValue(0)))->getWarning();
-			return warning;
-		}
-	return "";
+
+	MRef<SipHeaderValue*> warn = getHeaderValueNo( SIP_HEADER_TYPE_WARNING, 0 );
+	if (warn)
+		return ((SipHeaderValueWarning*)*warn)->getWarning();
+	else{
+		return "";
+	}
 }
 
 list<string> SipMessage::getRouteSet() {
 	list<string> set;
-
-	//merr << "CESC: SipMessage::getRouteSet() " << end;
-	for( int i=0; i<headers.size(); i++ ) {
-		if( headers[i]->getType() == SIP_HEADER_TYPE_RECORDROUTE ) {
-			for( int j=0; j<headers[i]->getNoValues(); j++ ) {
-				MRef<SipHeaderValueRecordRoute *> rr = (MRef<SipHeaderValueRecordRoute *>) ((SipHeaderValueRecordRoute *)*headers[i]->getHeaderValue(j));
-				//merr << "CESC: SipMessage: Record-Route: (" << i << "," << j << ") : " << rr->getStringWithParameters() << end;
-				set.push_back( rr->getStringWithParameters() );	
-			}
-			//merr << "CESC: SipMessage: Record-Route: " << headers[i]->getString() << end;
-		} 
+	int n=0;
+	MRef<SipHeaderValue*> rr;
+	while ( ! (rr=getHeaderValueNo(SIP_HEADER_TYPE_RECORDROUTE,n++)).isNull() ){
+		set.push_back( ((SipHeaderValueRecordRoute*)*rr)->getStringWithParameters() );
 	}
+
 	return set;
 }
 

Modified: trunk/libmsip/source/messages/SipRequest.cxx
===================================================================
--- trunk/libmsip/source/messages/SipRequest.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/source/messages/SipRequest.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -55,8 +55,7 @@
 
 using namespace std;
 
-MRef<SipRequest*> SipRequest::createSipMessageAck(const string &branch,
-		MRef<SipRequest*> origReq,
+MRef<SipRequest*> SipRequest::createSipMessageAck( MRef<SipRequest*> origReq,
 		MRef<SipResponse*> resp,
 		bool provisional)
 {
@@ -95,19 +94,16 @@
 }
 
 
-MRef<SipRequest*> SipRequest::createSipMessageCancel(const string &branch,
-							MRef<SipRequest*> inv
-// 							string to_uri
-							)
+MRef<SipRequest*> SipRequest::createSipMessageCancel( MRef<SipRequest*> r )
 {
-	MRef<SipRequest*> req = new SipRequest("CANCEL", inv->getUri());
+	MRef<SipRequest*> req = new SipRequest("CANCEL", r->getUri());
 
 	req->addHeader(new SipHeader( new SipHeaderValueMaxForwards(70)));
 	
 	MRef<SipHeader *> header;
-	int noHeaders = inv->getNoHeaders();
+	int noHeaders = r->getNoHeaders();
 	for (int32_t i=0; i< noHeaders; i++){
-		header = inv->getHeaderNo(i);
+		header = r->getHeaderNo(i);
 		int type = header->getType();
 		bool add=false;
 		switch (type){
@@ -143,8 +139,7 @@
 }
 
 
-MRef<SipRequest*> SipRequest::createSipMessageIMMessage(const string& branch,
-							const string& callId,
+MRef<SipRequest*> SipRequest::createSipMessageIMMessage(const string& callId,
 							const SipUri& toUri,
 							const SipUri& fromUri,
 							int32_t seqNo,
@@ -170,8 +165,7 @@
 	}
 }
 
-MRef<SipRequest*> SipRequest::createSipMessageInvite(const string &branch,
-							const string &call_id,
+MRef<SipRequest*> SipRequest::createSipMessageInvite( const string &call_id,
 							const SipUri &toUri,
 							const SipUri &fromUri,
 							const SipUri &contact,
@@ -187,8 +181,7 @@
 	return req;
 }
 
-MRef<SipRequest*> SipRequest::createSipMessageNotify(const string& branch,
-							const string& callId,
+MRef<SipRequest*> SipRequest::createSipMessageNotify( const string& callId,
 							const SipUri& toUri,
 							const SipUri& fromUri,
 							int32_t seqNo
@@ -201,8 +194,7 @@
 	return req;
 }
 
-MRef<SipRequest*> SipRequest::createSipMessageRegister(const string &branch,
-							const string &call_id,
+MRef<SipRequest*> SipRequest::createSipMessageRegister( const string &call_id,
 							const SipUri &registrar,
 							const SipUri &fromUri,
 						       MRef<SipHeaderValueContact *> contactHdr,
@@ -220,8 +212,7 @@
 }
 
 
-MRef<SipRequest*> SipRequest::createSipMessageSubscribe(const string &branch,
-							const string &call_id,
+MRef<SipRequest*> SipRequest::createSipMessageSubscribe(const string &call_id,
 							const SipUri &toUri,
 							const SipUri &fromUri,
 							const SipUri &contact,

Modified: trunk/libmsip/source/messages/SipResponse.cxx
===================================================================
--- trunk/libmsip/source/messages/SipResponse.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/source/messages/SipResponse.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -51,15 +51,13 @@
 
 const string SipResponse::type="RESPONSE";
 
-SipResponse::SipResponse(string branch_, 
-		int32_t status, 
+SipResponse::SipResponse( int32_t status, 
 		string status_desc_, 
 		MRef<SipRequest*> req)
 {
 	this->status_code=status;
 	this->status_desc=status_desc_;
 
-	setBranch(branch_);
 	setContent(NULL);
 
 	MRef<SipHeaderValue*> mf = new SipHeaderValueMaxForwards(70);

Modified: trunk/libmsip/source/transactions/SipTransaction.cxx
===================================================================
--- trunk/libmsip/source/transactions/SipTransaction.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/source/transactions/SipTransaction.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -83,7 +83,7 @@
 	int seqNo = req->getCSeq();
 	string seqMethod = req->getCSeqMethod();
 	string callId = req->getCallId();
-	string branch= req->getDestinationBranch();
+	string branch= req->getBranch();
 	
 #ifdef DEBUG_OUTPUT
 	mdbg << "TRANSACTION_CREATE: "<< seqMethod<<" "<<seqNo<<" branch="<<branch<<" callid=" << callId<<" client="<<fromTU<< endl;

Modified: trunk/libmsip/source/transactions/SipTransactionInviteClient.cxx
===================================================================
--- trunk/libmsip/source/transactions/SipTransactionInviteClient.cxx	2007-05-22 17:50:30 UTC (rev 3287)
+++ trunk/libmsip/source/transactions/SipTransactionInviteClient.cxx	2007-05-22 20:08:46 UTC (rev 3288)
@@ -557,20 +557,9 @@
 }
 
 
-void SipTransactionInviteClient::sendAck(MRef<SipResponse*> resp, string br, bool provisional){
+void SipTransactionInviteClient::sendAck(MRef<SipResponse*> resp, bool provisional){
 
-//	MRef<SipStackConfig *> conf;
-//	if (dialog){
-//		conf = dialog->getDialogConfig()->inherited;
-//	}else{
-//		conf = sipStack->getStackConfig();
-//	}
-
-	//merr << "CESC: SipTransInvClie:sendACK : dialogstate.remoteUri=" << dialog->dialogState.remoteUri << end;
-	
-// 	MRef<SipMessage*> ref( *resp);
-
-	MRef<SipRequest*> ack= SipRequest::createSipMessageAck( br, 
+	MRef<SipRequest*> ack= SipRequest::createSipMessageAck( 
 			lastInvite,
 			resp,
 			provisional
@@ -582,7 +571,7 @@
 		//((SipHeaderValueCSeq*)*ack->getHeaderValueNo(SIP_HEADER_TYPE_CSEQ, 0))->setCSeq(seq);
 	}
 		
-	send(MRef<SipMessage*>(*ack), true, br);
+	send(MRef<SipMessage*>(*ack), true, lastInvite->getBranch() );
 }
 
 



More information about the Minisip-devel mailing list