- /* Check if this is a known, ASN.1 type tucked away in an octet string */
- Z_ext_typeent *etype = z_ext_getentbyref(ent->value);
- if (ent && (r->which == Z_External_octet || r->which == Z_External_single)
- && (etype = z_ext_getentbyref(ent->value)))
-
- {
- void *rr;
- /*
- * Call the given decoder to process the record.
- */
- odr_setbuf(odr_decode(), (char*)record->u.octet_aligned->buf,
- record->u.octet_aligned->len, 0);
- if (!(*etype->fun)(odr_decode(), (char **)&rr, 0, 0))
- {
- odr_perror(odr_decode(), "Decoding constructed record.");
- fprintf(stderr, "[Near %ld]\n", (long) odr_offset(odr_decode()));
- fprintf(stderr, "Packet dump:\n---------\n");
- odr_dumpBER(stderr, (char*)record->u.octet_aligned->buf,
- record->u.octet_aligned->len);
- fprintf(stderr, "---------\n");
- }
- if (etype->what == Z_External_sutrs)
- {
- Z_SUTRS *sutrs = (Z_SUTRS *) rr;
- recv_textRecord ((int) VAL_SUTRS, (const char *) sutrs->buf,
- (size_t) sutrs->len);
- }
- return;
- }