BUG/MEDIUM: peers: check that p->srv actually exists before using p->srv->use_ssl

Commit 1055e687a ("MINOR: peers: Make outgoing connection to SSL/TLS
peers work.") introduced an "srv" field in the peers, which points to
the equivalent server to hold SSL settings. This one is not set when
the peer is local so we must always test it before testing p->srv->use_ssl
otherwise haproxy dies during reloads.

No backport is needed, this is purely 2.0.
This commit is contained in:
Willy Tarreau 2019-02-08 10:22:31 +01:00
parent 18cca781f5
commit 1417f0b5dc

View File

@ -32,7 +32,7 @@
#if defined(USE_OPENSSL)
static inline enum obj_type *peer_session_target(struct peer *p, struct stream *s)
{
if (p->srv->use_ssl)
if (p->srv && p->srv->use_ssl)
return &p->srv->obj_type;
else
return &s->be->obj_type;
@ -40,7 +40,7 @@ static inline enum obj_type *peer_session_target(struct peer *p, struct stream *
static inline struct xprt_ops *peer_xprt(struct peer *p)
{
return p->srv->use_ssl ? xprt_get(XPRT_SSL) : xprt_get(XPRT_RAW);
return (p->srv && p->srv->use_ssl) ? xprt_get(XPRT_SSL) : xprt_get(XPRT_RAW);
}
#else
static inline enum obj_type *peer_session_target(struct peer *p, struct stream *s)