X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=blobdiff_plain;f=ircd%2Flistener.c;fp=ircd%2Flistener.c;h=5339fd9f52896cfc4f28c280a31fe70be750564f;hp=a3c9e93785e2fd3ce4a302c3a3ca99323e9d8d94;hb=7fbfc390d32f9acc3192d011b813f66f35370faa;hpb=0400a5a6479398d82526785c18c0df8bc8b92dce diff --git a/ircd/listener.c b/ircd/listener.c index a3c9e93..5339fd9 100644 --- a/ircd/listener.c +++ b/ircd/listener.c @@ -40,6 +40,7 @@ #include "s_misc.h" #include "s_stats.h" #include "send.h" +#include "ssl.h" #include "sys.h" /* MAXCLIENTS */ /* #include -- Now using assert in ircd_log.h */ @@ -131,7 +132,7 @@ void show_ports(struct Client* sptr, const struct StatDesc* sd, char* param) { struct Listener *listener = 0; - char flags[8]; + char flags[9]; int show_hidden = IsOper(sptr); int count = (IsOper(sptr) || MyUser(sptr)) ? 100 : 8; int port = 0; @@ -147,6 +148,11 @@ void show_ports(struct Client* sptr, const struct StatDesc* sd, continue; len = 0; flags[len++] = listener_server(listener) ? 'S' : 'C'; + + if (FlagHas(&listener->flags, LISTEN_SSL)) + { + flags[len++] = 'E'; + } if (FlagHas(&listener->flags, LISTEN_HIDDEN)) { if (!show_hidden) @@ -310,8 +316,18 @@ void add_listener(int port, const char* vhost_ip, const char* mask, { new_listener = 1; listener = make_listener(port, &vaddr); + + } memcpy(&listener->flags, flags, sizeof(listener->flags)); + + if(FlagHas(&listener->flags, LISTEN_SSL) && !listener->ssl_listener) { + listener->ssl_listener = ssl_create_listener(); + } else if(!FlagHas(&listener->flags, LISTEN_SSL) && listener->ssl_listener) { + ssl_free_listener(listener->ssl_listener); + listener->ssl_listener = NULL; + } + FlagSet(&listener->flags, LISTEN_ACTIVE); if (mask) ipmask_parse(mask, &listener->mask, &listener->mask_bits);