Show connection flag "s" (SSL) in RPL_TRACE{LINK|SERVER}
authorAlexander Barton <alex@barton.de>
Sat, 31 Aug 2013 12:15:09 +0000 (14:15 +0200)
committerAlexander Barton <alex@barton.de>
Sat, 31 Aug 2013 12:15:24 +0000 (14:15 +0200)
Now you can check if a server-to-server link is SSL-encrypted or not
using the IRC "TRACE" command.

Idea by Götz Hoffart, thanks!

src/ngircd/irc.c

index d1e1d41..968bcea 100644 (file)
@@ -450,6 +450,12 @@ Help(CLIENT *Client, const char *Topic)
        return CONNECTED;
 }
 
+/**
+ * Get pointer to a static string representing the connection "options".
+ *
+ * @param Idx Connection index.
+ * @return Pointer to static (global) string buffer.
+ */
 static char *
 #ifdef ZLIB
 Option_String(CONN_ID Idx)
@@ -460,16 +466,22 @@ Option_String(UNUSED CONN_ID Idx)
        static char option_txt[8];
 #ifdef ZLIB
        UINT16 options;
-
-       options = Conn_Options(Idx);
 #endif
 
+       assert(Idx != NONE);
+
+       options = Conn_Options(Idx);
        strcpy(option_txt, "F");        /* No idea what this means, but the
                                         * original ircd sends it ... */
+#ifdef SSL_SUPPORT
+       if(options & CONN_SSL)          /* SSL encrypted link */
+               strlcat(option_txt, "s", sizeof(option_txt));
+#endif
 #ifdef ZLIB
-       if(options & CONN_ZIP)          /* zlib compression supported. */
-               strcat(option_txt, "z");
+       if(options & CONN_ZIP)          /* zlib compression enabled */
+               strlcat(option_txt, "z", sizeof(option_txt));
 #endif
+       LogDebug(" *** %d: %d = %s", Idx, options, option_txt);
 
        return option_txt;
 } /* Option_String */