+ /* Connected using SSL? */
+ if (Conn_UsesSSL(Client_Conn(c)) &&
+ !IRC_WriteStrClient(from, RPL_WHOISSSL_MSG, Client_ID(from),
+ Client_ID(c)))
+ return DISCONNECTED;
+
+ /* Registered nick name? */
+ if (Client_HasMode(c, 'R') &&
+ !IRC_WriteStrClient(from, RPL_WHOISREGNICK_MSG,
+ Client_ID(from), Client_ID(c)))
+ return DISCONNECTED;
+
+ if (Client_Conn(c) > NONE && (Client_OperByMe(from) || from == c) &&
+ !IRC_WriteStrClient(from, RPL_WHOISHOST_MSG, Client_ID(from),
+ Client_ID(c), Client_Hostname(c),
+ Conn_GetIPAInfo(Client_Conn(c))))
+ return DISCONNECTED;
+
+ /* Idle and signon time (local clients only!) */
+ if (!Conf_MorePrivacy && Client_Conn(c) > NONE &&
+ !IRC_WriteStrClient(from, RPL_WHOISIDLE_MSG,
+ Client_ID(from), Client_ID(c),
+ (unsigned long)Conn_GetIdle(Client_Conn(c)),
+ (unsigned long)Conn_GetSignon(Client_Conn(c))))
+ return DISCONNECTED;
+
+ /* Away? */
+ if (Client_HasMode(c, 'a') &&
+ !IRC_WriteStrClient(from, RPL_AWAY_MSG,
+ Client_ID(from), Client_ID(c), Client_Away(c)))
+ return DISCONNECTED;
+
+ return CONNECTED;
+} /* IRC_WHOIS_SendReply */