Revision: 9155
Author: emmartins
Date: Tue Dec 29 05:25:00 2009
Log: Fixes issue 1136
http://code.google.com/p/mobicents/source/detail?r=9155

Modified:
/trunk/servers/jain-slee/resources/sip11/ra/src/main/java/org/mobicents/slee/resource/sip11/SipResourceAdaptor.java /trunk/servers/jain-slee/resources/sip11/ra/src/main/java/org/mobicents/slee/resource/sip11/SleeSipProviderImpl.java

=======================================
--- /trunk/servers/jain-slee/resources/sip11/ra/src/main/java/org/mobicents/slee/resource/sip11/SipResourceAdaptor.java Mon Nov 16 10:27:50 2009 +++ /trunk/servers/jain-slee/resources/sip11/ra/src/main/java/org/mobicents/slee/resource/sip11/SipResourceAdaptor.java Tue Dec 29 05:25:00 2009
@@ -471,6 +471,8 @@
                        ctw.setResourceAdaptor(this);
                        // get address where to fire event
                        address = ctw.getEventFiringAddress();
+ //FIXME: determine if we should check here if dw is also an activity and fire on it. + //specs do not cover this. See SleeSipProviderImpl.getNewDialog(Transaction);
                        if (!ctw.isActivity()) {
                                handle = dw.getActivityHandle();
                                // (client tx that has a final response and is 
not an activity must be
=======================================
--- /trunk/servers/jain-slee/resources/sip11/ra/src/main/java/org/mobicents/slee/resource/sip11/SleeSipProviderImpl.java Mon Dec 21 04:00:29 2009 +++ /trunk/servers/jain-slee/resources/sip11/ra/src/main/java/org/mobicents/slee/resource/sip11/SleeSipProviderImpl.java Tue Dec 29 05:25:00 2009
@@ -471,12 +471,33 @@
                } else if (transaction.getClass() == 
ClientTransactionWrapper.class) {
                        // this is not efficient, but should not be used anyway 
and saves
                        // more code scenarios
+ //FIXME: make ctw.isActivity == false, since dialog becomes transaction, specs dont cover this. + //lets stick with ctw as response handler, dw will get state, but RA impl will fire on ctw handle. + final ClientTransactionWrapper ctw = (ClientTransactionWrapper) transaction;
+                       final Dialog d = 
provider.getNewDialog(ctw.getWrappedTransaction());
                        final Request r = transaction.getRequest();
+                       final FromHeader fh = 
(FromHeader)r.getHeader(FromHeader.NAME);
+                       String localTag = d.getLocalTag();
+                       if(localTag == null)
+                       {
+                               localTag = Utils.getInstance().generateTag();
+                               try {
+
+                                       fh.setTag(localTag);
+                               } catch (ParseException e) {
+                                       throw new SipException("Failed to set local 
tag.", e);
+                               }
+                       }
+
                        final DialogWrapper dw = _getNewDialog(
-                                       ((FromHeader) 
r.getHeader(FromHeader.NAME)).getAddress(),
-                                       Utils.getInstance().generateTag(),
+                                       fh.getAddress(),
+                                       localTag,
                                        ((ToHeader) 
r.getHeader(ToHeader.NAME)).getAddress(), null);
+                       //set wrapped dialog first.
+                       dw.setWrappedDialog(d);
+                       d.setApplicationData(dw);
                        dw.addOngoingTransaction((ClientTransactionWrapper) 
transaction);
+
                        return dw;
                } else {
                        throw new IllegalArgumentException("unknown transaction 
class");

Reply via email to