All pastes #2063291 Raw Edit

Someone

public text v1 · immutable
#2063291 ·published 2011-05-18 10:31 UTC
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 &&