+ if (version < 3000) {
+ return set_state_2X (node, version);
+ }
+
+ XMLProperty const * prop;
+
+ Delivery::set_state (node, version);
+
+ if (node.property ("ignore-bitslot") == 0) {
+
+ /* don't try to reset bitslot if there is a node for it already: this can cause
+ issues with the session's accounting of send ID's
+ */
+
+ if ((prop = node.property ("bitslot")) == 0) {
+ if (_role == Delivery::Aux) {
+ _bitslot = _session.next_aux_send_id ();
+ } else if (_role == Delivery::Send) {
+ _bitslot = _session.next_send_id ();
+ } else {
+ // bitslot doesn't matter but make it zero anyway
+ _bitslot = 0;
+ }
+ } else {
+ if (_role == Delivery::Aux) {
+ _session.unmark_aux_send_id (_bitslot);
+ sscanf (prop->value().c_str(), "%" PRIu32, &_bitslot);
+ _session.mark_aux_send_id (_bitslot);
+ } else if (_role == Delivery::Send) {
+ _session.unmark_send_id (_bitslot);
+ sscanf (prop->value().c_str(), "%" PRIu32, &_bitslot);
+ _session.mark_send_id (_bitslot);
+ } else {
+ // bitslot doesn't matter but make it zero anyway
+ _bitslot = 0;
+ }
+ }
+ }
+
+ if ((prop = node.property (X_("selfdestruct"))) != 0) {
+ _remove_on_disconnect = string_is_affirmative (prop->value());
+ }
+