AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein FreePascal Exception abfangen und Fortsetzen
Thema durchsuchen
Ansicht
Themen-Optionen

Exception abfangen und Fortsetzen

Ein Thema von DelTurbo · begonnen am 22. Dez 2020 · letzter Beitrag vom 29. Dez 2020
Antwort Antwort
Seite 2 von 2     12   
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#11

AW: Exception abfangen und Forsetzen

  Alt 28. Dez 2020, 14:53
Im Trace sieht man, dass das Logout noch ein "Quit" hinschicken will.
Ist vielleicht hier eine Race Condition vorhanden, dass z.B. das SSL nicht mehr richtig geladen ist oder so?
Du hast ja was mit 40 Threads gearbeitet wird.

Die Fragen die mir in den Kopf springen:
Alles über eine Verbindung?
Jeder Thread eine eigene?
Wie wurde das SSL initialisiert bzw. wie wird das abgeräumt?
Ist das OpenSSL threadsafe?


___
Zu Try / Except gibt es auf Coding BOTT ein Video:

try / finally / except - Schutzblöcke in Delphi kurz erklärt
https://www.youtube.com/watch?v=mag5Qp17NM4
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#12

AW: Exception abfangen und Forsetzen

  Alt 28. Dez 2020, 15:05
Hi,
Jeder Thread hat seinen eigenen SMTP den er beim Start des Threads im Thread erstellt. Im Fehlerfall wird der gelöscht und neu erstellt. Das ist aber nur zur Sicherheit und meines wissen noch nicht passiert.

OpenSSL wird beim Programm Start Initialisiert. OpenSSL ist Threadfest.

Nochmal kurz an @himitsu. Es handelt sich um FreePascal. Ich selber arbeite, wenn ich es brauche, mit CodeTyphon. Da ich auch Programme für ARM Prozessoren schreibe.

Meint ihr die Class TThread wäre besser und ich könnte dann nur den einen Thread beenden?
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#13

AW: Exception abfangen und Forsetzen

  Alt 28. Dez 2020, 15:23
Hmm, dann hab ich nur noch folgende Idee:


Das Quit wird an den SMTP Server übermittelt. Was ist wenn ein Quit#13#10 geschickt wird und "der" aktuell SMTP auf Linux läuft und dann die Verbindung nach dem #13 beendet, dass das "Broken Pipe" entsteht, weil das #10 noch durch will?


Du könntest also mal Loggen, bei welchen SMTP Server das entsteht.

Edit:
In der RFC steht CRLF

Code:
4.1.1.10. QUIT (QUIT)

   This command specifies that the receiver MUST send a "221 OK" reply,
   and then close the transmission channel.

   The receiver MUST NOT intentionally close the transmission channel
   until it receives and replies to a QUIT command (even if there was an
   error). The sender MUST NOT intentionally close the transmission
   channel until it sends a QUIT command, and it SHOULD wait until it
   receives the reply (even if there was an error response to a previous
   command). If the connection is closed prematurely due to violations
   of the above or system or network failure, the server MUST cancel any
   pending transaction, but not undo any previously completed
   transaction, and generally MUST act as if the command or transaction
   in progress had received a temporary error (i.e., a 4yz response).

   The QUIT command may be issued at any time. Any current uncompleted
   mail transaction will be aborted.

   Syntax:

      quit = "QUIT" CRLF

Evtl. das hier?
https://stackoverflow.com/questions/...pe-broken-pipe
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott

Geändert von generic (28. Dez 2020 um 15:28 Uhr)
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#14

AW: Exception abfangen und Forsetzen

  Alt 28. Dez 2020, 15:42
Hi,
also ich habe hier 10 MailServer. Dort habe ich eben knapp 100.000 Mails hin gesendet. Natürlich Fehlerfrei.
Wie schon angemerkt, der Fehler ist nicht Reproduzierbar. Leider.

Ich glaube nach einem "generellen" Fehler braucht man nicht suchen. Ich schätze das ich vor Weihnachten locker 1 Mio. Mails ohne Fehler gesendet habe.

Wenn ich doch nur diese blöde Exception mitbekommen würde. Trotzdem vielen dank für die Hilfe.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#15

AW: Exception abfangen und Forsetzen

  Alt 29. Dez 2020, 08:08
Zitat:
also ich habe hier 10 MailServer. Dort habe ich eben knapp 100.000 Mails hin gesendet
[Scherz ON]
...Spammer.
[Scherz OFF]
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#16

AW: Exception abfangen und Forsetzen

  Alt 29. Dez 2020, 10:34
Ne, Newsletter. Außerdem sind es lokale Mailserver mserver100.intern - mserver109.intern mit der EMailadresse test@

Irgendwie muss ich das Programm ja "fordern". Ich glaube fast das ich den Fehler nie finden werde....

Mit ist aber was eingefallen. Kann man vielleicht folgendes abfangen? Dann könnte ich einfach diesen einen Thread neu Starten.

Code:
Thread 5 "newsletter" received signal SIGPIPE, Broken pipe.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#17

AW: Exception abfangen und Fortsetzen

  Alt 29. Dez 2020, 11:11
Abfang ist ja kein Problem.

Schutzblock drum und im
Code:
on e: Exception
die e.message auslesen und reagieren.

Besser wäre noch, wenn es eine spezifischere Exception gibt als "Exception".

Ich denke aber auch, dass die Mail bereits richtig versandt ist. Das Problem halte ich für ein ungünstiges Abräumen.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#18

AW: Exception abfangen und Fortsetzen

  Alt 29. Dez 2020, 11:16
Hi,
leider geht das nicht mit dem Schutzblock (try/except). Da der Fehler nicht im Programm auftritt sondern in OpenSSL (siehe 1. Post von mir). Das habe ich schon alles versucht.

Wie gesagt, ich stehe total auf dem Schlauch..........
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz