05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

6.3 Open<strong>SSL</strong>-Basisfunktionalität 343<br />

Im Gegensatz zur ERR_get_error()-Funktion entfernen ERR_peek_error()<br />

<strong>und</strong> ERR_peek_last_error() allerdings die abgerufenen Fehlerinformationen<br />

nicht aus der Error-Queue, sondern spitzeln lediglich in diese hinein. Die<br />

ERR_peek_error()-Funktion liefert dabei als Ergebnis den ersten, die Schwesterfunktion<br />

ERR_peek_last_error() den letzten <strong>und</strong> da<strong>mit</strong> jüngsten Fehler<br />

aus der Warteschlange zurück.<br />

Mit der ERR_get_error()-Funktion wird der erste <strong>und</strong> da<strong>mit</strong> der am längsten<br />

zurückliegende Fehler einer Error-Queue er<strong>mit</strong>telt <strong>und</strong> aus der Fehlerwarteschlange<br />

entfernt. Die Funktion <strong>und</strong> ihre beiden Schwesterfunktionen<br />

ERR_peek_error() <strong>und</strong> ERR_peek_last_error() liefern einen Open<strong>SSL</strong>spezifischen<br />

Fehlercode, der dann weiter analysiert werden kann.<br />

In Ergänzung zu diesen drei Gr<strong>und</strong>funktionen bietet Open<strong>SSL</strong> sechs weitere<br />

Fehlerbehandlungsfunktionen an, die über ihre jeweiligen Parameter erweiterte<br />

Auskünfte über die Fehler erteilen:<br />

#include<br />

<br />

unsigned long ERR_get_error_line( const char **file,<br />

int *line );<br />

unsigned long ERR_peek_error_line( const char **file,<br />

int *line );<br />

unsigned long ERR_peek_last_error_line(<br />

const char **file, int *line );<br />

unsigned long ERR_get_error_line_data(<br />

const char **file, int *line, const char **data,<br />

int *flags );<br />

unsigned long ERR_peek_error_line_data(<br />

const char **file, int *line, const char **data,<br />

int *flags );<br />

unsigned long ERR_peek_last_error_line_data(<br />

const char **file, int *line, const char **data,<br />

int *flags );<br />

Die ERR_*_error_line()-Funktionen liefern über den Parameter file <strong>und</strong><br />

line Informationen über die Quelldatei <strong>und</strong> die Zeile, in der der Fehler<br />

aufgetreten ist. Die drei ERR_*_error_line_data()-Funktionen geben<br />

darüber hinaus noch zusätzliche, fehlerspezifische Daten zurück. In welcher<br />

Form die über data referenzierten Daten dann tatsächlich vorliegen, wird<br />

durch den Parameter flags angezeigt. Ist in flags nach einem Aufruf von<br />

ERR_get_error_line_data() etwa das Flag ERR_TXT_STRING gesetzt, so handelt<br />

es sich um eine C-typische, Null-terminierte Zeichenkette, die dann z. B.<br />

<strong>mit</strong> der printf()-Funktion ausgegeben werden kann:

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!