X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Firc-server.c;h=317a3e1a1bf99c8379cb20e83419684024c262af;hp=2e031bd5b37d906f16efd73ebfcc2e011d3ccadf;hb=HEAD;hpb=93e36555e3f03bd1375f8c35913c54459604c7c2 diff --git a/src/ngircd/irc-server.c b/src/ngircd/irc-server.c index 2e031bd5..6aa37574 100644 --- a/src/ngircd/irc-server.c +++ b/src/ngircd/irc-server.c @@ -1,6 +1,6 @@ /* * ngIRCd -- The Next Generation IRC Daemon - * Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors. + * Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,6 +32,7 @@ #include "numeric.h" #include "ngircd.h" #include "irc.h" +#include "irc-channel.h" #include "irc-info.h" #include "irc-write.h" #include "op.h" @@ -87,6 +88,19 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req ) return DISCONNECTED; } +#ifdef SSL_SUPPORT + /* Does this server require an SSL connection? */ + if (Conf_Server[i].SSLConnect && + !(Conn_Options(Client_Conn(Client)) & CONN_SSL)) { + Log(LOG_ERR, + "Connection %d: Server \"%s\" requires a secure connection!", + Client_Conn(Client), Req->argv[0]); + Conn_Close(Client_Conn(Client), NULL, + "Secure connection required", true); + return DISCONNECTED; + } +#endif + /* Check server password */ if (strcmp(Conn_Password(Client_Conn(Client)), Conf_Server[i].pwd_in) != 0) { @@ -320,6 +334,12 @@ IRC_NJOIN( CLIENT *Client, REQUEST *Req ) IRC_WriteStrChannelPrefix(Client, chan, c, false, "JOIN :%s", channame); + /* If the client is connected to this server, it was remotely + * joined to the channel by another server/service: So send + * TOPIC and NAMES messages like on a regular JOIN command! */ + if(Client_Conn(c) != NONE) + IRC_Send_Channel_Info(c, chan); + /* Announce "channel user modes" to the channel, if any */ strlcpy(modes, Channel_UserModes(chan, c), sizeof(modes)); if (modes[0])