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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

350 6 Netzwerkprogrammierung <strong>mit</strong> <strong>SSL</strong><br />

39 /* Speicher für neuen Mutex anfordern ... */<br />

40 dl = malloc( sizeof( pthread_t ) );<br />

41 if( dl != NULL )<br />

42 {<br />

43 /* ... <strong>und</strong> Mutex initialisieren */<br />

44 st = pthread_mutex_init( &dl->mutex , NULL );<br />

45 if( st != 0 ) /* Fehler beim Mutex Initialisieren? */<br />

46 {<br />

47 free( dl ); /* belegten Speicher wieder freigeben */<br />

48 dl = NULL; /* ... <strong>und</strong> Nullzeiger zurückgeben */<br />

49 }<br />

50 }<br />

51<br />

52 return( dl ); /* Zeiger auf neue Struktur liefern */<br />

53 }<br />

54<br />

55 void openssl_dl_destroy(<br />

56 struct CRYPTO_dynlock_value *dl, const char *file,<br />

57 int line )<br />

58 {<br />

59 /* Mutex zerstören <strong>und</strong> Speicher freigeben */<br />

60 pthread_mutex_destroy( &dl->mutex );<br />

61 free( dl );<br />

62 }<br />

63<br />

64 void openssl_dl_lock( int mode,<br />

65 struct CRYPTO_dynlock_value *dl, const char *file,<br />

66 int line )<br />

67 {<br />

68 if( mode & CRYPTO_LOCK ) /* Lock oder Unlock? */<br />

69 pthread_mutex_lock( &dl->mutex );<br />

70 else<br />

71 pthread_mutex_unlock( &dl->mutex );<br />

72 }<br />

73<br />

74 int openssl_thread_init( void )<br />

75 {<br />

76 int i, st, max = CRYPTO_num_locks();<br />

77<br />

78 /* Initialisierung des Felds der statischen Mutexe */<br />

79 if( openssl_mutex == NULL ) /* schon initialisiert? */<br />

80 {<br />

81 /* Feld <strong>mit</strong> Mutex-Variablen anlegen ... */<br />

82 openssl_mutex = calloc( max, sizeof( pthread_t ) );<br />

83 if( openssl_mutex == NULL )<br />

84 return( 0 ); /* Rücksprung <strong>mit</strong> Fehler */<br />

85<br />

86 /* ... <strong>und</strong> Mutex -Variablen initialisieren */<br />

87 for( i = 0; i < max; i++ )

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!