Hello tech@ There is a bug in relayd which is related to udp relays. It can be triggered with the following relayd.conf:
relayd_addr="192.168.10.2" relayd_port="53" table <dns_servers> { 10.10.10.2 } dns_servers_port="53" interval 10 timeout 200 dns protocol "dnsfilter" { tcp { nodelay, sack, socket buffer 1024, backlog 1000 } } relay dnsproxy { listen on $relayd_addr port $relayd_port protocol "dnsfilter" forward to <dns_servers> port $dns_servers_port \ mode loadbalance check tcp } nslookup via 192.168.10.2 triggers a coredump in relayd. The problem is within relay_dns_request() in relay_udp.c, env is a NULL pointer but &env->sc_timeout is used in event_again(). Here is my patch: --- relay_udp.c.orig Mon Feb 13 16:29:07 2012 +++ relay_udp.c Mon Feb 13 16:32:20 2012 @@ -474,6 +474,8 @@ if (gettimeofday(&con->se_tv_start, NULL) == -1) return (-1); + bcopy( &rlay->rl_conf.timeout, & con->se_timeout, sizeof( con->se_timeout )); + if (rlay->rl_dsttable != NULL) { if (relay_from_table(con) != 0) return (-1); @@ -508,7 +510,7 @@ } event_again(&con->se_ev, con->se_out.s, EV_TIMEOUT|EV_READ, - relay_udp_response, &con->se_tv_start, &env->sc_timeout, con); + relay_udp_response, &con->se_tv_start, &con->se_timeout, con); return (0); } Best regards, Tom