Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Indy10 TCPServer Spam erkennen, hohe CPU Auslastung

  Alt 5. Okt 2024, 11:52
Ich würde allerdings eher mal den Stacktrace an der Stelle als Ausgangspunkt nehmen und schauen, was da vorher passiert. Sprich ein wenig debuggen und schauen, ob es einen besseren Eingriffspunkt gibt.
Dann habe ich das mal kurz gemacht.

Das Akzeptieren kannst du ohne Modifikation des Indy-Quelltextes nicht verhindern (je nach Projekt lohnt es sich aber, das dort zu implementieren), aber es gibt dort schon einen entsprechenden Kommentar (IdCustomTCPServer.pas --> TIdListenerThread.Run):
Delphi-Quellcode:
    // TODO: under Windows at least, use SO_CONDITIONAL_ACCEPT to allow
    // the user to reject connections before they are accepted. Somehow
    // expose an event here for the user to decide with...
Aber:
Dort wird auch die maximale Anzahl an Verbindungen geprüft. Wenn diese erreicht ist, wird dort mit Abort reagiert. Insofern ist das dort die korrekte Wahl, wenn du das im OnContextCreated auslöst. Das OnConnect wird dann gar nicht erst ausgeführt, insbesondere wird Server.Scheduler.StartYarn gar nicht erst erreicht.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat