+#ifdef ZLIB
+#include <zlib.h>
+typedef struct _ZipData
+{
+ z_stream in; /* "Handle" for input stream */
+ z_stream out; /* "Handle" for output stream */
+ array rbuf; /* Read buffer (compressed) */
+ array wbuf; /* Write buffer (uncompressed) */
+ long bytes_in, bytes_out; /* Counter for statistics (uncompressed!) */
+} ZIPDATA;
+#endif /* ZLIB */
+
+typedef struct _Connection
+{
+ int sock; /* Socket handle */
+ ng_ipaddr_t addr; /* Client address */
+ PROC_STAT proc_stat; /* Status of resolver process */
+ char host[HOST_LEN]; /* Hostname */
+ char *pwd; /* password received of the client */
+ array rbuf; /* Read buffer */
+ array wbuf; /* Write buffer */
+ time_t signon; /* Signon ("connect") time */
+ time_t lastdata; /* Last activity */
+ time_t lastping; /* Last PING */
+ time_t lastprivmsg; /* Last PRIVMSG */
+ time_t delaytime; /* Ignore link ("penalty") */
+ long bytes_in, bytes_out; /* Received and sent bytes */
+ long msg_in, msg_out; /* Received and sent IRC messages */
+ int flag; /* Flag (see "irc-write" module) */
+ UINT16 options; /* Link options / connection state */
+ UINT16 bps; /* bytes processed within last second */
+ CLIENT *client; /* pointer to client structure */
+#ifdef ZLIB
+ ZIPDATA zip; /* Compression information */
+#endif /* ZLIB */
+#ifdef SSL_SUPPORT
+ struct ConnSSL_State ssl_state; /* SSL/GNUTLS state information */
+#endif
+#ifndef STRICT_RFC
+ long auth_ping; /** PING response expected on login */
+#endif
+#ifdef ICONV
+ iconv_t iconv_from; /** iconv: convert from client to server */
+ iconv_t iconv_to; /** iconv: convert from server to client */
+#endif
+} CONNECTION;