vp = fr_dcursor_current(&child_cursor);
fr_proto_da_stack_build(da_stack, vp->da);
- slen = encode_tlv_hdr_internal(&FR_DBUFF_MAX(&work_dbuff, 253), da_stack, depth, &child_cursor, encode_ctx);
- if (slen <= 0) return slen;
+ slen = encode_tlv_hdr_internal(&work_dbuff, da_stack, depth, &child_cursor, encode_ctx);
+ if (slen <= 0) {
+ if (slen == PAIR_ENCODE_SKIPPED) continue;
+ return slen;
+ }
vp = fr_dcursor_next(cursor);
fr_proto_da_stack_build(da_stack, vp ? vp->da : NULL);
} else {
slen = encode_rfc_hdr_internal(&work_dbuff, da_stack, depth + 1, cursor, encode_ctx);
}
-
- if (slen <= 0) return slen;
+ if (slen <= 0) {
+ if (slen == PAIR_ENCODE_SKIPPED) continue;
+ return slen;
+ }
/*
* If nothing updated the attribute, stop
default:
encode:
slen = fr_value_box_to_network(&value_dbuff, &vp->data);
- if (slen < 0) return slen;
+ if (slen <= 0) return slen;
break;
}
if (da_stack->da[depth + 1]) {
slen = encode_vendor_attr_hdr(&work_dbuff, da_stack, depth, cursor, encode_ctx);
- if (slen < 0) return slen;
+ if (slen <= 0) return slen;
} else {
fr_pair_t *vp;
fr_dcursor_t child_cursor;
* continue.
*/
slen = encode_vendor_attr_hdr(&work_dbuff, da_stack, depth, &child_cursor, encode_ctx);
- if (slen < 0) return slen;
+ if (slen <= 0) {
+ if (slen == PAIR_ENCODE_SKIPPED) continue;
+ return slen;
+ }
}
vp = fr_dcursor_next(cursor);
} else {
slen = encode_vendor_hdr(&FR_DBUFF_MAX(&work_dbuff, 253), da_stack, depth, &child_cursor, encode_ctx);
}
- if (slen <= 0) return slen;
+ if (slen <= 0) {
+ if (slen == PAIR_ENCODE_SKIPPED) continue;
+ return slen;
+ }
}
/*