+
+ wrbuf_destroy(w);
+ }
+ else if (query->which == Z_Query_type_2)
+ {
+ // CCL
+ WRBUF w = wrbuf_alloc();
+ wrbuf_write(w, (const char *) query->u.type_2->buf,
+ query->u.type_2->len);
+ int cerror, cpos;
+ struct ccl_rpn_node *cn;
+ cn = ccl_find_str(b->sptr->ccl_bibset, wrbuf_cstr(w), &cerror, &cpos);
+ wrbuf_destroy(w);
+
+ if (!cn)
+ {
+ char *addinfo = odr_strdup(odr, ccl_err_msg(cerror));
+
+ apdu_res =
+ odr.create_searchResponse(apdu_req,
+ YAZ_BIB1_MALFORMED_QUERY,
+ addinfo);
+ package.response() = apdu_res;
+ return;
+ }
+ w = wrbuf_alloc();
+ ccl_pquery(w, cn);
+
+ b->search_pqf(wrbuf_cstr(w), &hits, &error, &addinfo);
+
+ ccl_rpn_delete(cn);