Hallo Christoph,
if(head.clients.clientnum > MAX_CLIENT_NUM) {
fo_log(LOG_STD,__FILE__,__LINE__,"rejecting connection\n");
writen(connfd,"507 Server has to many connections\n",35);
close(connfd);
pthread_mutex_unlock(&head.clients.lock);
}Ist aber sehr brutal.
Das habe ich jetzt abgeaendert. Da die Art des Problems ein
schlecht moegliches Timeslicing ist, habe ich jetzt einfach
den oberen Code-Block umgeaendert in
if(head.clients.clientnum > MAX_CLIENT_NUM) {
fo_log(LOG_STD,__FILE__,__LINE__,"handling request directly...\n");
handle_request((void *)connfd);
pthread_mutex_unlock(&head.clients.lock);
}
Damit sind zwei Sachen gegeben: ich *garantiere* dadurch,
dass an bestimmten Stellen Timeslicing moeglich ist und
zweitens kommen fuer die Zeit keine neuen Verbindungen dazu.
Gruesse,
CK