int pn_do_init(pn_dispatcher_t *disp) { pn_sasl_t *sasl = disp->context; pn_bytes_t mech; pn_bytes_t recv; int err = pn_scan_args(disp, "D.[sz]", &mech, &recv); if (err) return err; sasl->remote_mechanisms = pn_strndup(mech.start, mech.size); sasl->recv_data = pn_bytes_dup(recv.size, recv.start); sasl->rcvd_init = true; return 0; }
// Received Server side int pn_do_init(pn_transport_t *transport, uint8_t frame_type, uint16_t channel, pn_data_t *args, const pn_bytes_t *payload) { pni_sasl_t *sasl = transport->sasl; pn_bytes_t mech; pn_bytes_t recv; int err = pn_data_scan(args, "D.[sz]", &mech, &recv); if (err) return err; sasl->selected_mechanism = pn_strndup(mech.start, mech.size); pni_process_init(transport, sasl->selected_mechanism, &recv); return 0; }