rendered paste body--- config.c~ Wed May 18 12:27:15 2011
+++ config.c Wed May 18 12:29:18 2011
@@ -103,6 +103,7 @@ config_init(struct relayd *env)
TAILQ_INIT(env->sc_protos);
bzero(&env->sc_proto_default, sizeof(env->sc_proto_default));
+ env->sc_proto_default.id = EMPTY_ID;
env->sc_proto_default.flags = F_USED;
env->sc_proto_default.cache = RELAY_CACHESIZE;
env->sc_proto_default.tcpflags = TCPFLAG_DEFAULT;
@@ -795,11 +796,15 @@ config_getrelay(struct relayd *env, struct imsg *imsg)
memcpy(&rlay->rl_conf, imsg->data, sizeof(rlay->rl_conf));
rlay->rl_s = imsg->fd;
- if ((ps->ps_what[privsep_process] & CONFIG_PROTOS) &&
- (rlay->rl_proto = proto_find(env, rlay->rl_conf.proto)) == NULL) {
- log_debug("%s: unknown protocol", __func__);
- free(rlay);
- return (-1);
+ if (ps->ps_what[privsep_process] & CONFIG_PROTOS) {
+ if (rlay->rl_conf.proto == EMPTY_ID)
+ rlay->rl_proto = &env->sc_proto_default;
+ else if ((rlay->rl_proto =
+ proto_find(env, rlay->rl_conf.proto)) == NULL) {
+ log_debug("%s: unknown protocol", __func__);
+ free(rlay);
+ return (-1);
+ }
}
if (rlay->rl_conf.dsttable != EMPTY_ID &&