static bool (*request_handlers[])(connection_t *, const char *) = {
id_h, metakey_h, challenge_h, chal_reply_h, ack_h,
- status_h, error_h, termreq_h,
+ NULL, NULL, termreq_h,
ping_h, pong_h,
add_subnet_h, del_subnet_h,
add_edge_h, del_edge_h,
request[sizeof(request) - 1] = 0;
va_end(args);
- if(len < 0 || len > sizeof(request) - 1) {
+ if(len < 0 || (size_t)len > sizeof(request) - 1) {
logger(DEBUG_ALWAYS, LOG_ERR, "Output buffer overflow while sending request to %s (%s)",
c->name, c->hostname);
return false;
}
- logger(DEBUG_META, LOG_DEBUG, "Sending %s to %s (%s): %s", request_name[atoi(request)], c->name, c->hostname, request);
+ int id = atoi(request);
+ logger(DEBUG_META, LOG_DEBUG, "Sending %s to %s (%s): %s", request_name[id], c->name, c->hostname, request);
request[len++] = '\n';
broadcast_meta(NULL, request, len);
return true;
} else {
- return send_meta(c, request, len);
+ if(id) {
+ return send_meta(c, request, len);
+ } else {
+ send_meta_raw(c, request, len);
+ return true;
+ }
}
}
}
static void free_past_request(past_request_t *r) {
- if(r->request) {
- free((char *)r->request);
- }
-
+ free((char *)r->request);
free(r);
}
static timeout_t past_request_timeout;
static void age_past_requests(void *data) {
+ (void)data;
int left = 0, deleted = 0;
for splay_each(past_request_t, p, past_request_tree) {
}
bool seen_request(const char *request) {
- past_request_t *new, p = {NULL};
+ past_request_t *new, p = {0};
p.request = request;