GLOBAL void
Conn_Init( void )
{
- /* Modul initialisieren: statische Strukturen "ausnullen". */
-
CONN_ID i;
/* Speicher fuer Verbindungs-Pool anfordern */
GLOBAL void
Conn_Exit( void )
{
- /* Modul abmelden: alle noch offenen Connections
- * schliessen und freigeben. */
-
CONN_ID idx;
Conn_ExitListeners();
GLOBAL void
-Conn_Close( CONN_ID Idx, char *LogMsg, char *FwdMsg, bool InformClient )
+Conn_Close( CONN_ID Idx, const char *LogMsg, const char *FwdMsg, bool InformClient )
{
/* Close connection. Open pipes of asyncronous resolver
* sub-processes are closed down. */
CLIENT *c;
- char *txt;
+ const char *txt;
double in_k, out_k;
UINT16 port;
#ifdef ZLIB
static CONN_ID
Socket2Index( int Sock )
{
- /* zum Socket passende Connection suchen */
-
assert( Sock >= 0 );
if( Sock >= Pool_Size || My_Connections[Sock].sock != Sock ) {
- /* die Connection wurde vermutlich (wegen eines
- * Fehlers) bereits wieder abgebaut ... */
+ /* the Connection was already closed again, likely due to
+ * an error. */
LogDebug("Socket2Index: can't get connection for socket %d!", Sock);
return NONE;
}
* if this doesn't help either, disconnect client. */
CLIENT *c;
CONN_ID i;
+ char msg[64];
for (i = 0; i < Pool_Size; i++) {
if (My_Connections[i].sock < 0)
LogDebug
("Connection %d: Ping timeout: %d seconds.",
i, Conf_PongTimeout);
- Conn_Close(i, NULL, "Ping timeout",
- true);
+ snprintf(msg, sizeof(msg), "Ping timeout: %d seconds", Conf_PongTimeout);
+ Conn_Close(i, NULL, msg, true);
}
} else if (My_Connections[i].lastdata <
time(NULL) - Conf_PingTimeout) {
GLOBAL bool
Conn_GetCipherInfo(CONN_ID Idx, char *buf, size_t len)
{
+ if (Idx < 0)
+ return false;
+ assert(Idx < (int) array_length(&My_ConnArray, sizeof(CONNECTION)));
return ConnSSL_GetCipherInfo(&My_Connections[Idx], buf, len);
}
GLOBAL bool
Conn_UsesSSL(CONN_ID Idx)
{
+ if (Idx < 0)
+ return false;
+ assert(Idx < (int) array_length(&My_ConnArray, sizeof(CONNECTION)));
return Conn_OPTION_ISSET(&My_Connections[Idx], CONN_SSL);
}
#endif