struct session* worker_find_tcp_waiting(struct worker_ctx *worker,
const struct sockaddr *addr);
static void on_tcp_connect_timeout(uv_timer_t *timer);
-static void on_udp_timeout(uv_timer_t *req);
+static void on_udp_timeout(uv_timer_t *timer);
static void subreq_finalize(struct qr_task *task, const struct sockaddr *packet_source, knot_pkt_t *pkt);
/* We're done, no more iterations needed */
if (state & (KR_STATE_DONE|KR_STATE_FAIL)) {
return qr_task_finalize(task, state);
- } else if (!task->transport->protocol) {
+ } else if (!task->transport || !task->transport->protocol) {
return qr_task_step(task, NULL, NULL);
}
void *prefix_key(const uint8_t *ip, size_t len) {
void *key = malloc(len+1);
*(char*) key = KEY_PREFIX;
- memcpy(key+1, ip, len);
+ memcpy((uint8_t *)key+1, ip, len);
return key;
}
const struct rtt_state default_rtt_state = {0, DEFAULT_TIMEOUT/4, 0};
struct rtt_state get_rtt_state(const uint8_t *ip, size_t len, struct kr_cache *cache) {
- struct rtt_state state = {0,0};
+ struct rtt_state state;
knot_db_val_t value;
knot_db_t *db = cache->db;
struct kr_cdb_stats *stats = &cache->stats;
struct rtt_state ret;
- ret.srtt = 0.75 * old.srtt + 0.25 * new_rtt;
- ret.variance = 0.875 * old.variance + 0.125 * abs(old.srtt - new_rtt);
+ ret.srtt = (int32_t)(0.75 * old.srtt + 0.25 * new_rtt);
+ ret.variance = (int32_t)(0.875 * old.variance + 0.125 * abs(old.srtt - (int32_t)new_rtt));
ret.consecutive_timeouts = 0;
return ret;
}
void forward_success(struct kr_query *qry, const struct kr_transport *transport) {
- return;
}
void forward_error(struct kr_query *qry, const struct kr_transport *transport, enum kr_selection_error sel_error) {
} else {
// We have some addresses to work with, let's iterate over them
for(uint8_t *obj = pack_head(*addresses); obj != pack_tail(*addresses); obj = pack_obj_next(obj)) {
- uint8_t *address = (uint8_t *)pack_obj_val(obj);
+ uint8_t *address = pack_obj_val(obj);
size_t address_len = pack_obj_len(obj);
trie_val_t *val = trie_get_ins(local_state->addresses, (char *)address, address_len);
if (!*val) {
}
void iter_success(struct kr_query *qry, const struct kr_transport *transport) {
- return;
}
void iter_error(struct kr_query *qry, const struct kr_transport *transport, enum kr_selection_error sel_error) {