Hi Antony, On 20/03/17 10:27, Antony Antony via Unbound-users wrote: > Hello, > I am using ub_resolve_event, with libvent. The result in the callback > function is type void* packet. Which is new to me. ub_resolve and > ub_resolve_async return a type ub_result. >
This is the description from the header file. * with packet: a buffer with DNS wireformat packet with the answer. * do not inspect if rcode != 0. * do not write or free the packet buffer, it is used internally * in unbound (for other callbacks that want the same data). > How do I convert the 'void *packet' to 'struct ub_result*'? ldns has functions to convert a wireformat packet to something readable. > > from unbound-event.h > void callback(void* mydata, int rcode, void* packet, int packet_len, > int sec, char* why_bogus) > > The ub_result is documented. I couldn't find anything about packet. > > The the program already use libevent and call event_base_loop. I gave try > with ub_resolve_async. The forked thread get stuck in event loop. It never > call the callback function or ub_process. tcpdump can see dns queries going > out and replies coming back. Still You have to call ub_process. It does not call that for you. You either listen on the fd (from the fd() function) for a wakeup and then call ub_process, or you call ub_process at some other time when it is convenient for you. Best regards, Wouter > > regards, > -antony >
signature.asc
Description: OpenPGP digital signature