# HG changeset patch # User David Demelier # Date 1624263634 -7200 # Node ID 9f3e01eec9412541cfff3aa4dbb04544f9a13d5c # Parent c42b2540f849f2cc06ec998219e829475f369607 irccd: fix build without SSL diff -r c42b2540f849 -r 9f3e01eec941 lib/irccd/conn.c --- a/lib/irccd/conn.c Mon Jun 21 10:11:55 2021 +0200 +++ b/lib/irccd/conn.c Mon Jun 21 10:20:34 2021 +0200 @@ -120,6 +120,8 @@ return 0; } +#if defined(IRCCD_WITH_SSL) + static inline int update_ssl_state(struct irc_conn *conn, int ret) { @@ -168,6 +170,8 @@ return nr; } +#endif + static inline ssize_t input_clear(struct irc_conn *conn, char *buf, size_t bufsz) { @@ -188,9 +192,11 @@ size_t cap = sizeof (conn->in) - len - 1; ssize_t nr = 0; +#if defined(IRCCD_WITH_SSL) if (conn->flags & IRC_CONN_SSL) nr = input_ssl(conn, conn->in + len, cap); else +#endif nr = input_clear(conn, conn->in + len, cap); if (nr > 0) @@ -199,6 +205,8 @@ return nr; } +#if defined(IRCCD_WITH_SSL) + static inline ssize_t output_ssl(struct irc_conn *conn) { @@ -219,6 +227,8 @@ return ns; } +#endif + static inline ssize_t output_clear(struct irc_conn *conn) { @@ -235,9 +245,11 @@ { ssize_t ns = 0; +#if defined(IRCCD_WITH_SSL) if (conn->flags & IRC_CONN_SSL) ns = output_ssl(conn); else +#endif ns = output_clear(conn); if (ns > 0) { @@ -254,8 +266,8 @@ static int handshake(struct irc_conn *conn) { +#if defined(IRCCD_WITH_SSL) if (conn->flags & IRC_CONN_SSL) { -#if defined(IRCCD_WITH_SSL) int r; conn->state = IRC_CONN_STATE_HANDSHAKING; @@ -295,8 +307,8 @@ conn->state = IRC_CONN_STATE_READY; conn->ssl_cond = IRC_CONN_SSL_ACT_NONE; conn->ssl_step = IRC_CONN_SSL_ACT_NONE; + } else #endif - } else conn->state = IRC_CONN_STATE_READY; return 0; @@ -367,10 +379,11 @@ return handshake(conn); } +#if defined(IRCCD_WITH_SSL) + static inline void prepare_ssl(const struct irc_conn *conn, struct pollfd *pfd) { -#if defined(IRCCD_WITH_SSL) switch (conn->ssl_cond) { case IRC_CONN_SSL_ACT_READ: irc_log_debug("server %s: need read condition", conn->sv->name); @@ -383,9 +396,6 @@ default: break; } -#else - (void)conn; -#endif } static inline int @@ -398,12 +408,25 @@ : output(conn); } +#endif + int irc_conn_connect(struct irc_conn *conn) { assert(conn); +<<<<<<< dest conn->statetime = time(NULL); +======= +#if !defined(IRCCD_WITH_SSL) + if (conn->flags & IRC_CONN_SSL) { + irc_log_warn("server %s: SSL requested but not available", conn->sv->name); + errno = EINVAL; + + return -1; + } +#endif +>>>>>>> source if (lookup(conn) < 0) return irc_conn_disconnect(conn), -1; @@ -427,9 +450,11 @@ pfd->fd = conn->fd; +#if defined(IRCCD_WITH_SSL) if (conn->ssl_cond) prepare_ssl(conn, pfd); else { +#endif switch (conn->state) { case IRC_CONN_STATE_CONNECTING: pfd->events = POLLOUT; @@ -443,7 +468,9 @@ default: break; } +#if defined(IRCCD_WITH_SSL) } +#endif } int @@ -461,15 +488,19 @@ if (pfd->revents & (POLLERR | POLLHUP)) return irc_conn_disconnect(conn), -1; +#if defined(IRCCD_WITH_SSL) if (conn->ssl_cond) { if (renegotiate(conn) < 0) return irc_conn_disconnect(conn), -1; } else { +#endif if (pfd->revents & POLLIN && input(conn) < 0) return irc_conn_disconnect(conn), -1; if (pfd->revents & POLLOUT && output(conn) < 0) return irc_conn_disconnect(conn), -1; +#if defined(IRCCD_WITH_SSL) } +#endif break; default: break;