r3282 - in trunk: libminisip/source/subsystem_signaling/sip libmsip/include/libmsip libmsip/source libmsip/source/dialogs libmsip/source/messages
erik at minisip.org
erik at minisip.org
Tue May 22 13:27:23 CEST 2007
Author: erik
Date: 2007-05-22 13:27:22 +0200 (Tue, 22 May 2007)
New Revision: 3282
Modified:
trunk/libminisip/source/subsystem_signaling/sip/DefaultDialogHandler.cxx
trunk/libminisip/source/subsystem_signaling/sip/SipDialogConfVoip.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/SipMessage.h
trunk/libmsip/include/libmsip/SipRequest.h
trunk/libmsip/include/libmsip/SipResponse.h
trunk/libmsip/source/SipLayerTransport.cxx
trunk/libmsip/source/dialogs/SipDialog.cxx
trunk/libmsip/source/messages/SipMessage.cxx
trunk/libmsip/source/messages/SipRequest.cxx
trunk/libmsip/source/messages/SipResponse.cxx
Log:
Improved/fixed SIP message constructors:
* SipMessage objects does not need to be assigned a branch
parameter when they are created. Example: Requests generated
by a UAC will be assigned a branch by the transaction layer,
and not when the object is created.
* The "dummy" parameter when parsing a SIP message object from
a buffer is removed.
* SipRequest: Don't have a default value for the request
uri. The branch parameter has been removed (it made no sence).
* SipResponse objects take a SipRequest as parameter
instead of a SipMessage (you can only respond to requests).
* SipMessage::setDestinationBranch(string) is
renamed to SipMessage::setBranch(string).
Modified: trunk/libminisip/source/subsystem_signaling/sip/DefaultDialogHandler.cxx
===================================================================
--- trunk/libminisip/source/subsystem_signaling/sip/DefaultDialogHandler.cxx 2007-05-21 13:09:11 UTC (rev 3281)
+++ trunk/libminisip/source/subsystem_signaling/sip/DefaultDialogHandler.cxx 2007-05-22 11:27:22 UTC (rev 3282)
@@ -301,11 +301,10 @@
reasonPhrase = "Method Not Allowed";
}
- MRef<SipMessage*> req = *pkt;
+ MRef<SipRequest*> req = (SipRequest*)*pkt;
string branch = req->getDestinationBranch();
MRef<SipResponse*> resp =
- new SipResponse(branch, statusCode, reasonPhrase,
- *req);
+ new SipResponse(branch, statusCode, reasonPhrase, req);
if (statusCode==405)
resp->addHeader(new SipHeader(new SipHeaderValueAllow("INVITE,MESSAGE,BYE,ACK,OPTIONS,PRACK") ));
@@ -967,7 +966,7 @@
void DefaultDialogHandler::sendIMOk(MRef<SipRequest*> bye, const string &branch){
- MRef<SipResponse*> ok= new SipResponse( branch, 200,"OK", MRef<SipMessage*>(*bye) );
+ MRef<SipResponse*> ok= new SipResponse( branch, 200,"OK", bye );
ok->getHeaderValueTo()->setParameter("tag","libminisip");
MRef<SipMessage*> pref(*ok);
Modified: trunk/libminisip/source/subsystem_signaling/sip/SipDialogConfVoip.cxx
===================================================================
--- trunk/libminisip/source/subsystem_signaling/sip/SipDialogConfVoip.cxx 2007-05-21 13:09:11 UTC (rev 3281)
+++ trunk/libminisip/source/subsystem_signaling/sip/SipDialogConfVoip.cxx 2007-05-22 11:27:22 UTC (rev 3282)
@@ -1187,7 +1187,7 @@
}
void SipDialogConfVoip::sendInviteOk(const string &branch){
- MRef<SipResponse*> ok= new SipResponse(branch, 200,"OK", MRef<SipMessage*>(*getLastInvite()));
+ MRef<SipResponse*> ok= new SipResponse(branch, 200,"OK", getLastInvite());
ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
// There might be so that there are no SDP. Check!
@@ -1233,7 +1233,7 @@
}
void SipDialogConfVoip::sendByeOk(MRef<SipRequest*> bye, const string &branch){
- MRef<SipResponse*> ok= new SipResponse( branch, 200,"OK", MRef<SipMessage*>(*bye) );
+ MRef<SipResponse*> ok= new SipResponse( branch, 200,"OK", bye );
ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
MRef<SipMessage*> pref(*ok);
@@ -1242,7 +1242,7 @@
}
void SipDialogConfVoip::sendReject(const string &branch){
- MRef<SipResponse*> ringing = new SipResponse(branch,486,"Temporary unavailable", MRef<SipMessage*>(*getLastInvite()));
+ MRef<SipResponse*> ringing = new SipResponse(branch,486,"Temporary unavailable", getLastInvite());
ringing->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
MRef<SipMessage*> pref(*ringing);
SipSMCommand cmd( pref,SipSMCommand::dialog_layer, SipSMCommand::transaction_layer);
@@ -1250,7 +1250,7 @@
}
void SipDialogConfVoip::sendRinging(const string &branch){
- MRef<SipResponse*> ringing = new SipResponse(branch,180,"Ringing", MRef<SipMessage*>(*getLastInvite()));
+ MRef<SipResponse*> ringing = new SipResponse(branch,180,"Ringing", getLastInvite());
ringing->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
MRef<SipMessage*> pref(*ringing);
SipSMCommand cmd( pref, SipSMCommand::dialog_layer, SipSMCommand::transaction_layer);
@@ -1258,7 +1258,7 @@
}
void SipDialogConfVoip::sendNotAcceptable(const string &branch){
- MRef<SipResponse*> not_acceptable = new SipResponse(branch,606,"Not Acceptable", MRef<SipMessage*>(*getLastInvite()));
+ MRef<SipResponse*> not_acceptable = new SipResponse(branch,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/SipDialogPresenceServer.cxx
===================================================================
--- trunk/libminisip/source/subsystem_signaling/sip/SipDialogPresenceServer.cxx 2007-05-21 13:09:11 UTC (rev 3281)
+++ trunk/libminisip/source/subsystem_signaling/sip/SipDialogPresenceServer.cxx 2007-05-22 11:27:22 UTC (rev 3282)
@@ -253,7 +253,7 @@
void SipDialogPresenceServer::sendSubscribeOk(MRef<SipRequest*> sub){
- MRef<SipResponse*> ok= new SipResponse("", 200,"OK", MRef<SipMessage*>(*sub));
+ MRef<SipResponse*> ok= new SipResponse("", 200,"OK", sub);
ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
MRef<SipMessage*> pref(*ok);
Modified: trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoip.cxx
===================================================================
--- trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoip.cxx 2007-05-21 13:09:11 UTC (rev 3281)
+++ trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoip.cxx 2007-05-22 11:27:22 UTC (rev 3282)
@@ -638,7 +638,7 @@
}
void SipDialogVoip::sendReferOk(const string &branch){
- MRef<SipResponse*> ok= new SipResponse(branch, 202,"OK", MRef<SipMessage*>(*lastRefer));
+ MRef<SipResponse*> ok= new SipResponse(branch, 202,"OK", lastRefer);
ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
MRef<SipHeaderValue *> contact =
new SipHeaderValueContact(
@@ -652,7 +652,7 @@
}
void SipDialogVoip::sendByeOk(MRef<SipRequest*> bye, const string &branch){
- MRef<SipResponse*> ok= new SipResponse( branch, 200,"OK", MRef<SipMessage*>(*bye) );
+ MRef<SipResponse*> ok= new SipResponse( branch, 200,"OK", bye );
ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
MRef<SipMessage*> pref(*ok);
@@ -661,7 +661,7 @@
}
void SipDialogVoip::sendNotifyOk(MRef<SipRequest*> notif, const string &branch){
- MRef<SipResponse*> ok= new SipResponse( branch, 200, "OK", MRef<SipMessage*>(*notif) );
+ MRef<SipResponse*> ok= new SipResponse( branch, 200, "OK", notif );
ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
MRef<SipMessage*> pref(*ok);
Modified: trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoipClient.cxx
===================================================================
--- trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoipClient.cxx 2007-05-21 13:09:11 UTC (rev 3281)
+++ trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoipClient.cxx 2007-05-22 11:27:22 UTC (rev 3282)
@@ -615,7 +615,7 @@
}
void SipDialogVoipClient::sendInviteOk(const string &branch){
- MRef<SipResponse*> ok= new SipResponse(branch, 200,"OK", MRef<SipMessage*>(*getLastInvite()));
+ MRef<SipResponse*> ok= new SipResponse(branch, 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-21 13:09:11 UTC (rev 3281)
+++ trunk/libminisip/source/subsystem_signaling/sip/SipDialogVoipServer.cxx 2007-05-22 11:27:22 UTC (rev 3282)
@@ -350,7 +350,7 @@
getSipStack()->enqueueCommand(cancelledCmd, HIGH_PRIO_QUEUE);
// Send 200 OK for CANCEL
- MRef<SipResponse*> okResp = new SipResponse( branch, 200,"OK", MRef<SipMessage*>(*cancel) );
+ MRef<SipResponse*> okResp = new SipResponse( branch, 200,"OK", cancel );
okResp->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
MRef<SipMessage*> okMsg(*okResp);
SipSMCommand okCmd( okMsg, SipSMCommand::dialog_layer,
@@ -615,7 +615,7 @@
void SipDialogVoipServer::sendInviteOk(const string &branch){
- MRef<SipResponse*> ok= new SipResponse(branch, 200,"OK", MRef<SipMessage*>(*getLastInvite()));
+ MRef<SipResponse*> ok= new SipResponse(branch, 200,"OK", getLastInvite() );
ok->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
MRef<SipHeaderValue *> contact =
@@ -668,7 +668,7 @@
}
void SipDialogVoipServer::sendReject(const string &branch){
- MRef<SipResponse*> ringing = new SipResponse(branch,486,"Temporary unavailable", MRef<SipMessage*>(*getLastInvite()));
+ MRef<SipResponse*> ringing = new SipResponse(branch,486,"Temporary unavailable", getLastInvite());
ringing->getHeaderValueTo()->setParameter("tag",dialogState.localTag);
MRef<SipMessage*> pref(*ringing);
SipSMCommand cmd( pref,SipSMCommand::dialog_layer, SipSMCommand::transaction_layer);
@@ -696,7 +696,7 @@
}
void SipDialogVoipServer::sendNotAcceptable(const string &branch){
- MRef<SipResponse*> not_acceptable = new SipResponse(branch,406,"Not Acceptable", MRef<SipMessage*>(*getLastInvite()));
+ MRef<SipResponse*> not_acceptable = new SipResponse(branch,406,"Not Acceptable", getLastInvite());
if( mediaSession && mediaSession->getErrorString() != "" ){
not_acceptable->addHeader(
new SipHeader(
Modified: trunk/libmsip/include/libmsip/SipMessage.h
===================================================================
--- trunk/libmsip/include/libmsip/SipMessage.h 2007-05-21 13:09:11 UTC (rev 3281)
+++ trunk/libmsip/include/libmsip/SipMessage.h 2007-05-22 11:27:22 UTC (rev 3282)
@@ -93,7 +93,7 @@
* "INVITE"), and for a response it
* is the string in SipResponse::type.
*/
- SipMessage(std::string branch);
+ SipMessage();
@@ -102,7 +102,7 @@
* Creates a SIP message from a buffer. This superclass
* parses the buffer and creates headers and content.
*/
- SipMessage(int dummy, std::string &build_from);
+ SipMessage(std::string &build_from);
public:
virtual ~SipMessage();
@@ -349,7 +349,7 @@
MRef<SipHeaderValueWWWAuthenticate*> getHeaderValueWWWAuthenticate(int i);
protected:
- void setDestinationBranch(std::string b){branch = b;}
+ void setBranch(std::string b){branch = b;}
/**
* Parses one line of text to a SIP header and adds it to
Modified: trunk/libmsip/include/libmsip/SipRequest.h
===================================================================
--- trunk/libmsip/include/libmsip/SipRequest.h 2007-05-21 13:09:11 UTC (rev 3281)
+++ trunk/libmsip/include/libmsip/SipRequest.h 2007-05-22 11:27:22 UTC (rev 3282)
@@ -118,8 +118,7 @@
SipRequest(std::string &build_from);
- SipRequest(std::string branch, const std::string &method,
- const std::string &uri = "");
+ SipRequest(const std::string &method, const SipUri &uri);
virtual ~SipRequest();
@@ -132,8 +131,6 @@
virtual void setMethod(const std::string &method);
virtual std::string getMethod() const;
-// virtual void setUri(const std::string &uri);
-
virtual void setUri(const SipUri &uri);
virtual const SipUri& getUri() const;
Modified: trunk/libmsip/include/libmsip/SipResponse.h
===================================================================
--- trunk/libmsip/include/libmsip/SipResponse.h 2007-05-21 13:09:11 UTC (rev 3281)
+++ trunk/libmsip/include/libmsip/SipResponse.h 2007-05-22 11:27:22 UTC (rev 3282)
@@ -37,6 +37,7 @@
#include<libmsip/libmsip_config.h>
#include<libmsip/SipMessage.h>
+#include<libmsip/SipRequest.h>
/**
*
@@ -48,7 +49,7 @@
public:
static const std::string type;
- SipResponse(std::string branch, int32_t status, std::string status_desc, MRef<SipMessage*> inv);
+ SipResponse(std::string branch, int32_t status, std::string status_desc, MRef<SipRequest*> inv);
virtual std::string getMemObjectType() const {return "SipResponse";}
Modified: trunk/libmsip/source/SipLayerTransport.cxx
===================================================================
--- trunk/libmsip/source/SipLayerTransport.cxx 2007-05-21 13:09:11 UTC (rev 3281)
+++ trunk/libmsip/source/SipLayerTransport.cxx 2007-05-22 11:27:22 UTC (rev 3282)
@@ -781,7 +781,7 @@
|| (isInvite && !msg->getHeaderValueNo(SIP_HEADER_TYPE_CONTACT,0))){
if (isRequest){
MRef<SipMessage*> resp = new SipResponse(msg->getFirstViaBranch(),
- 400, "Required header missing", msg );
+ 400, "Required header missing", (SipRequest*)*msg );
resp->setSocket(msg->getSocket());
sendMessage(resp, "TL", false);
}
Modified: trunk/libmsip/source/dialogs/SipDialog.cxx
===================================================================
--- trunk/libmsip/source/dialogs/SipDialog.cxx 2007-05-21 13:09:11 UTC (rev 3281)
+++ trunk/libmsip/source/dialogs/SipDialog.cxx 2007-05-22 11:27:22 UTC (rev 3282)
@@ -196,7 +196,7 @@
}
MRef<SipRequest*> SipDialog::createSipMessageSeq( const std::string &method, int seqNo ){
- MRef<SipRequest*> req = new SipRequest("", method);
+ MRef<SipRequest*> req = new SipRequest(method, dialogState.getRemoteTarget());
req->setUri( dialogState.getRemoteTarget() );
Modified: trunk/libmsip/source/messages/SipMessage.cxx
===================================================================
--- trunk/libmsip/source/messages/SipMessage.cxx 2007-05-21 13:09:11 UTC (rev 3281)
+++ trunk/libmsip/source/messages/SipMessage.cxx 2007-05-22 11:27:22 UTC (rev 3282)
@@ -118,8 +118,7 @@
-SipMessage::SipMessage(string b):branch(b){
- content=NULL;
+SipMessage::SipMessage(){
}
@@ -226,7 +225,7 @@
return i;
}
-SipMessage::SipMessage(int, string &buildFrom)
+SipMessage::SipMessage(string &buildFrom)
{
uint32_t i;
Modified: trunk/libmsip/source/messages/SipRequest.cxx
===================================================================
--- trunk/libmsip/source/messages/SipRequest.cxx 2007-05-21 13:09:11 UTC (rev 3281)
+++ trunk/libmsip/source/messages/SipRequest.cxx 2007-05-22 11:27:22 UTC (rev 3282)
@@ -66,8 +66,7 @@
}else{
method = "ACK";
}
- MRef<SipRequest*> req = new SipRequest(branch, method);
- req->setUri(origReq->getUri());
+ MRef<SipRequest*> req = new SipRequest(method, origReq->getUri() );
req->addHeader(new SipHeader(new SipHeaderValueMaxForwards(70)));
@@ -99,8 +98,7 @@
// string to_uri
)
{
- MRef<SipRequest*> req = new SipRequest(branch, "CANCEL");
- req->setUri(inv->getUri());
+ MRef<SipRequest*> req = new SipRequest("CANCEL", inv->getUri());
req->addHeader(new SipHeader( new SipHeaderValueMaxForwards(70)));
@@ -148,8 +146,7 @@
int32_t seqNo,
const string& msg)
{
- MRef<SipRequest*> req = new SipRequest(branch, "MESSAGE");
- req->setUri(toUri);
+ MRef<SipRequest*> req = new SipRequest("MESSAGE", toUri);
req->addDefaultHeaders(fromUri,toUri,"MESSAGE",seqNo,callId);
req->addHeader(new SipHeader(new SipHeaderValueUserAgent(HEADER_USER_AGENT_DEFAULT)));
req->setContent(new SipMessageContentIM(msg));
@@ -178,8 +175,7 @@
MRef<SipStack*> stack
)
{
- MRef<SipRequest*> req = new SipRequest(branch,"INVITE");
- req->setUri(toUri);
+ MRef<SipRequest*> req = new SipRequest("INVITE", toUri);
req->addDefaultHeaders( fromUri, toUri, "INVITE", seq_no, call_id );
addHeaders(req, contact, stack);
@@ -194,8 +190,7 @@
int32_t seqNo
)
{
- MRef<SipRequest*> req = new SipRequest(branch, "NOTIFY");
- req->setUri(toUri);
+ MRef<SipRequest*> req = new SipRequest("NOTIFY", toUri);
req->addDefaultHeaders(fromUri, toUri,"NOTIFY",seqNo,callId);
req->addHeader(new SipHeader(new SipHeaderValueUserAgent(HEADER_USER_AGENT_DEFAULT)));
req->addHeader(new SipHeader(new SipHeaderValueEvent("presence")));
@@ -209,8 +204,7 @@
MRef<SipHeaderValueContact *> contactHdr,
int32_t seq_no)
{
- MRef<SipRequest*> req = new SipRequest(branch, "REGISTER");
- req->setUri( registrar );
+ MRef<SipRequest*> req = new SipRequest("REGISTER", registrar);
req->addDefaultHeaders(fromUri,fromUri,"REGISTER",seq_no,call_id);
@@ -229,10 +223,8 @@
const SipUri &contact,
int32_t seq_no)
{
- MRef<SipRequest*> req = new SipRequest(branch, "SUBSCRIBE", toUri.getString() );
+ MRef<SipRequest*> req = new SipRequest("SUBSCRIBE", toUri );
- req->setUri(toUri);
-
req->addDefaultHeaders(fromUri, toUri,"SUBSCRIBE",seq_no, call_id);
req->addHeader(new SipHeader(new SipHeaderValueContact(contact)));
req->addHeader(new SipHeader(new SipHeaderValueEvent("presence")));
@@ -255,16 +247,14 @@
}
-SipRequest::SipRequest(string branch, const string &method,
- const string &uri) :
- SipMessage(branch), method(method),
+SipRequest::SipRequest(const string &method,
+ const SipUri &uri) :
+ method(method),
uri(uri)
{
-// if( this->uri == "" )
-// this->uri = "sip:";
}
-SipRequest::SipRequest(string &build_from): SipMessage(-1, build_from){
+SipRequest::SipRequest(string &build_from): SipMessage(build_from){
init(build_from);
}
Modified: trunk/libmsip/source/messages/SipResponse.cxx
===================================================================
--- trunk/libmsip/source/messages/SipResponse.cxx 2007-05-21 13:09:11 UTC (rev 3281)
+++ trunk/libmsip/source/messages/SipResponse.cxx 2007-05-22 11:27:22 UTC (rev 3282)
@@ -54,9 +54,9 @@
SipResponse::SipResponse(string branch,
int32_t status,
string status_desc,
- MRef<SipMessage*> inv)
- :SipMessage(branch)
+ MRef<SipRequest*> req)
{
+ setBranch(branch);
setContent(NULL);
this->status_code=status;
@@ -65,9 +65,9 @@
MRef<SipHeaderValue*> mf = new SipHeaderValueMaxForwards(70);
addHeader(new SipHeader(*mf));
- int noHeaders = inv->getNoHeaders();
+ int noHeaders = req->getNoHeaders();
for (int i=0 ; i < noHeaders; i++){ //FIX: deep copy
- MRef<SipHeader*> header = inv->getHeaderNo(i);
+ MRef<SipHeader*> header = req->getHeaderNo(i);
int headerType = header->getType();
switch (headerType){
case SIP_HEADER_TYPE_VIA:
@@ -83,7 +83,7 @@
}
//TODO: This constructor needs rewriting (re-use from sipmessage)
-SipResponse::SipResponse(string &resp): SipMessage(-1, resp)
+SipResponse::SipResponse(string &resp): SipMessage(resp)
{
int len = resp.size();
More information about the Minisip-devel
mailing list