[reSIProcate] [PATCH] Expand REFER w/ Replaces API

Aron Rosenberg arosenberg at logitech.com
Fri Feb 4 21:56:11 CST 2011


Anybody see any issues with the following patch to expand InviteSession's
REFER w/ Replaces API to be able to take a Contents* just like the normal
REFER call does?

If I don't hear anything in the next few days, I will commit it.


Index: resip/dum/InviteSession.hxx
===================================================================
--- resip/dum/InviteSession.hxx (revision 9004)
+++ resip/dum/InviteSession.hxx (working copy)
@@ -78,7 +78,9 @@

       /** sends a refer request with a replaces header */
       virtual void refer(const NameAddr& referTo, InviteSessionHandle
sessionToReplace, bool referSub = true);
+      virtual void refer(const NameAddr& referTo, InviteSessionHandle
sessionToReplace, std::auto_ptr<resip::Contents> contents, bool referSub =
true);
       virtual void refer(const NameAddr& referTo, const CallId& replaces,
bool referSub = true);
+      virtual void refer(const NameAddr& referTo, const CallId& replaces,
std::auto_ptr<resip::Contents> contents, bool referSub = true);

       /** sends an info request */
       virtual void info(const Contents& contents);
Index: resip/dum/InviteSession.cxx
===================================================================
--- resip/dum/InviteSession.cxx (revision 9004)
+++ resip/dum/InviteSession.cxx (working copy)
@@ -896,6 +896,12 @@
 void
 InviteSession::refer(const NameAddr& referTo, InviteSessionHandle
sessionToReplace, bool referSub)
 {
+
refer(referTo,sessionToReplace,std::auto_ptr<resip::Contents>(0),referSub);
+}
+
+void
+InviteSession::refer(const NameAddr& referTo, InviteSessionHandle
sessionToReplace, std::auto_ptr<resip::Contents> contents, bool referSub)
+{
    if (!sessionToReplace.isValid())
    {
       throw UsageUseException("Attempted to make a refer w/ and invalid
replacement target", __FILE__, __LINE__);
@@ -907,17 +913,23 @@
    replaces.param(p_toTag) = id.getRemoteTag();
    replaces.param(p_fromTag) = id.getLocalTag();

-   refer(referTo, replaces, referSub);
+   refer(referTo, replaces, contents, referSub);
 }

 void
 InviteSession::refer(const NameAddr& referTo, const CallId& replaces, bool
referSub)
 {
+   refer(referTo,replaces,std::auto_ptr<resip::Contents>(0),referSub);
+}
+
+void
+InviteSession::refer(const NameAddr& referTo, const CallId& replaces,
std::auto_ptr<resip::Contents> contents, bool referSub)
+{
    if (isConnected())  // ?slg? likely not safe in any state except
Connected - what should behaviour be if state is ReceivedReinvite?
    {
       SharedPtr<SipMessage> refer(new SipMessage());
       mDialog.makeRequest(*refer, REFER);
-
+      refer->setContents(contents);
       refer->header(h_ReferTo) = referTo;
       refer->header(h_ReferredBy) = myAddr();
       refer->header(h_ReferredBy).remove(p_tag);


Aron Rosenberg
Sr. Director, Engineering
Logitech Inc. (SightSpeed Group)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20110204/5278605e/attachment.htm>


More information about the resiprocate-devel mailing list