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