+ if(( My_Connections[i].sock >= 0 ) && ( My_Connections[i].rdatalen > 0 ))
+ {
+ /* Kann aus dem Buffer noch ein Befehl extrahiert werden? */
+ Handle_Buffer( i );
+ }
+ }
+
+ /* noch volle Schreib-Puffer suchen */
+ FD_ZERO( &write_sockets );
+ for( i = 0; i < MAX_CONNECTIONS; i++ )
+ {
+ if(( My_Connections[i].sock >= 0 ) && ( My_Connections[i].wdatalen > 0 ))
+ {
+ /* Socket der Verbindung in Set aufnehmen */
+ FD_SET( My_Connections[i].sock, &write_sockets );
+ }
+ }
+
+ read_sockets = My_Sockets;
+ if( select( My_Max_Fd + 1, &read_sockets, &write_sockets, NULL, &tv ) == -1 )
+ {
+ if( errno != EINTR ) Log( LOG_ALERT, "select(): %s!", strerror( errno ));
+ return;
+ }
+
+ /* Koennen Daten geschrieben werden? */
+ for( i = 0; i < My_Max_Fd + 1; i++ )
+ {
+ if( FD_ISSET( i, &write_sockets )) Handle_Write( Socket2Index( i ));
+ }
+
+ /* Daten zum Lesen vorhanden? */
+ for( i = 0; i < My_Max_Fd + 1; i++ )
+ {
+ if( FD_ISSET( i, &read_sockets )) Handle_Read( i );