Beispiel #1
0
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);
	}
}
Beispiel #2
0
		extern void attrlayer_add_dirtylist(t_elist *what)
		{
			elist_add_tail(&dirtylist, what);
		}
Beispiel #3
0
		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);
		}
Beispiel #4
0
		extern void attrlayer_add_loadedlist(t_elist *what)
		{
			elist_add_tail(&loadedlist, what);
		}