-} /* Handle_Read */
-
-
-LOCAL BOOLEAN
-Handle_Write( CONN_ID Idx )
-{
- /* Daten aus Schreibpuffer versenden bzw. Connection aufbauen */
-
- INT len, res, err;
- socklen_t sock_len;
- CLIENT *c;
-
- assert( Idx > NONE );
- assert( My_Connections[Idx].sock > NONE );
-
- if( FD_ISSET( My_Connections[Idx].sock, &My_Connects ))
- {
- /* es soll nichts geschrieben werden, sondern ein
- * connect() hat ein Ergebnis geliefert */
-
- FD_CLR( My_Connections[Idx].sock, &My_Connects );
-
- /* Ergebnis des connect() ermitteln */
- sock_len = sizeof( err );
- res = getsockopt( My_Connections[Idx].sock, SOL_SOCKET, SO_ERROR, &err, &sock_len );
- assert( sock_len == sizeof( err ));
-
- /* Fehler aufgetreten? */
- if(( res != 0 ) || ( err != 0 ))
- {
- /* Fehler! */
- if( res != 0 ) Log( LOG_CRIT, "getsockopt (connection %d): %s!", Idx, strerror( errno ));
- else Log( LOG_CRIT, "Can't connect socket to \"%s:%d\" (connection %d): %s!", My_Connections[Idx].host, Conf_Server[Conf_GetServer( Idx )].port, Idx, strerror( err ));
-
- /* Clean up socket, connection and client structures */
- FD_CLR( My_Connections[Idx].sock, &My_Sockets );
- c = Client_GetFromConn( Idx );
- if( c ) Client_DestroyNow( c );
- close( My_Connections[Idx].sock );
- Init_Conn_Struct( Idx );
-
- /* Bei Server-Verbindungen lasttry-Zeitpunkt auf "jetzt" setzen */
- Conf_Server[Conf_GetServer( Idx )].lasttry = time( NULL );
- Conf_UnsetServer( Idx );
-
- return FALSE;
- }
-#ifdef DEBUG
- Log( LOG_DEBUG, "Connection %d with \"%s:%d\" established, now sendig PASS and SERVER ...", Idx, My_Connections[Idx].host, Conf_Server[Conf_GetServer( Idx )].port );