static void parse_listen(const json_t *listeners) { int i, len; len = json_array_size(listeners); for (i = 0; i < len; i++) { json_t *obj; const char *host_str, *proto_str, *proxy_str; int port; struct listen_cfg *lc; obj = json_array_get(listeners, i); host_str = json_string_value(json_object_get(obj, "host")); if (host_str && (!*host_str || !strcmp(host_str, "*"))) host_str = NULL; port = json_integer_value(json_object_get(obj, "port")); if (port < 1 || port > 65535) { applog(LOG_WARNING, "invalid listen config: port"); continue; } proxy_str = json_string_value(json_object_get(obj, "proxy")); if (proxy_str && !*proxy_str) proxy_str = NULL; lc = calloc(1, sizeof(*lc)); if (!lc) { applog(LOG_ERR, "OOM"); exit(1); } lc->proto = LP_BC_BINARY; proto_str = json_string_value(json_object_get(obj, "protocol")); if (proto_str) { if (!strcmp(proto_str, "http-json")) lc->proto = LP_HTTP_JSON; else if (!strcmp(proto_str, "binary")) lc->proto = LP_BC_BINARY; } INIT_ELIST_HEAD(&lc->listeners_node); if (host_str) lc->host = strdup(host_str); lc->port = port; if (proxy_str) lc->proxy = strdup(proxy_str); elist_add_tail(&lc->listeners_node, &srv.listeners); } }
extern void attrlayer_add_dirtylist(t_elist *what) { elist_add_tail(&dirtylist, what); }
extern void attrlayer_accessed(t_attrgroup* attrgroup) { /* move the attrgroup at the end of loaded list for the "flush" loop */ elist_del(&attrgroup->loadedlist); elist_add_tail(&loadedlist, &attrgroup->loadedlist); }
extern void attrlayer_add_loadedlist(t_elist *what) { elist_add_tail(&loadedlist, what); }