Author: gsim
Date: Wed Oct 22 19:12:16 2014
New Revision: 1633682

URL: http://svn.apache.org/r1633682
Log:
PROTON-723: quick and dirty fix to allow a sender to be attached to a remote 
Coordinator for transaction control

Modified:
    qpid/proton/branches/examples/proton-c/src/transport/transport.c

Modified: qpid/proton/branches/examples/proton-c/src/transport/transport.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/transport/transport.c?rev=1633682&r1=1633681&r2=1633682&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-c/src/transport/transport.c (original)
+++ qpid/proton/branches/examples/proton-c/src/transport/transport.c Wed Oct 22 
19:12:16 2014
@@ -1326,34 +1326,59 @@ int pn_process_link_setup(pn_transport_t
     {
       pni_map_local_handle(link);
       const pn_distribution_mode_t dist_mode = link->source.distribution_mode;
-      int err = pn_post_frame(transport->disp, ssn_state->local_channel,
-                              "DL[SIoBB?DL[SIsIoC?sCnCC]?DL[SIsIoCC]nnI]", 
ATTACH,
-                              pn_string_get(link->name),
-                              state->local_handle,
-                              endpoint->type == RECEIVER,
-                              link->snd_settle_mode,
-                              link->rcv_settle_mode,
-                              (bool) link->source.type, SOURCE,
-                              pn_string_get(link->source.address),
-                              link->source.durability,
-                              expiry_symbol(link->source.expiry_policy),
-                              link->source.timeout,
-                              link->source.dynamic,
-                              link->source.properties,
-                              (dist_mode != PN_DIST_MODE_UNSPECIFIED), 
dist_mode2symbol(dist_mode),
-                              link->source.filter,
-                              link->source.outcomes,
-                              link->source.capabilities,
-                              (bool) link->target.type, TARGET,
-                              pn_string_get(link->target.address),
-                              link->target.durability,
-                              expiry_symbol(link->target.expiry_policy),
-                              link->target.timeout,
-                              link->target.dynamic,
-                              link->target.properties,
-                              link->target.capabilities,
-                              0);
-      if (err) return err;
+      if (link->target.type == PN_COORDINATOR) {
+        int err = pn_post_frame(transport->disp, ssn_state->local_channel,
+                                "DL[SIoBB?DL[SIsIoC?sCnCC]?DL[C]nnI]", ATTACH,
+                                pn_string_get(link->name),
+                                state->local_handle,
+                                endpoint->type == RECEIVER,
+                                link->snd_settle_mode,
+                                link->rcv_settle_mode,
+                                (bool) link->source.type, SOURCE,
+                                pn_string_get(link->source.address),
+                                link->source.durability,
+                                expiry_symbol(link->source.expiry_policy),
+                                link->source.timeout,
+                                link->source.dynamic,
+                                link->source.properties,
+                                (dist_mode != PN_DIST_MODE_UNSPECIFIED), 
dist_mode2symbol(dist_mode),
+                                link->source.filter,
+                                link->source.outcomes,
+                                link->source.capabilities,
+                                true, ((uint64_t) 0x30),
+                                link->target.capabilities,
+                                0);
+        if (err) return err;
+      } else {
+        int err = pn_post_frame(transport->disp, ssn_state->local_channel,
+                                "DL[SIoBB?DL[SIsIoC?sCnCC]?DL[SIsIoCC]nnI]", 
ATTACH,
+                                pn_string_get(link->name),
+                                state->local_handle,
+                                endpoint->type == RECEIVER,
+                                link->snd_settle_mode,
+                                link->rcv_settle_mode,
+                                (bool) link->source.type, SOURCE,
+                                pn_string_get(link->source.address),
+                                link->source.durability,
+                                expiry_symbol(link->source.expiry_policy),
+                                link->source.timeout,
+                                link->source.dynamic,
+                                link->source.properties,
+                                (dist_mode != PN_DIST_MODE_UNSPECIFIED), 
dist_mode2symbol(dist_mode),
+                                link->source.filter,
+                                link->source.outcomes,
+                                link->source.capabilities,
+                                (bool) link->target.type, TARGET,
+                                pn_string_get(link->target.address),
+                                link->target.durability,
+                                expiry_symbol(link->target.expiry_policy),
+                                link->target.timeout,
+                                link->target.dynamic,
+                                link->target.properties,
+                                link->target.capabilities,
+                                0);
+        if (err) return err;
+      }
     }
   }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to