Small error fix.
[openssl.git] / crypto / threads / mttest.c
index 97f705dbc5ded22e90e1014d80fa583f7f5efd13..47faef53c4641313efe16038e1f7b3a04ea8a11a 100644 (file)
 #include <ulocks.h>
 #include <sys/prctl.h>
 #endif
-#include "lhash.h"
-#include "crypto.h"
-#include "buffer.h"
-#include "../e_os.h"
-#include "x509.h"
-#include "ssl.h"
-#include "err.h"
+#ifdef PTHREADS
+#include <pthread.h>
+#endif
+#include <openssl/lhash.h>
+#include <openssl/crypto.h>
+#include <openssl/buffer.h>
+#include "../../e_os.h"
+#include <openssl/x509.h>
+#include <openssl/ssl.h>
+#include <openssl/err.h>
 
 #ifdef NO_FP_API
 #define APPS_WIN16
-#include "../crypto/buffer/bss_file.c"
+#include "../buffer/bss_file.c"
 #endif
 
-#define TEST_SERVER_CERT "../apps/server.pem"
-#define TEST_CLIENT_CERT "../apps/client.pem"
+#define TEST_SERVER_CERT "../../apps/server.pem"
+#define TEST_CLIENT_CERT "../../apps/client.pem"
 
 #define MAX_THREAD_NUMBER      100
 
-#ifndef NOPROTO
-int MS_CALLBACK verify_callback(int ok, X509 *xs, X509 *xi, int depth,
-       int error,char *arg);
+int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *xs);
 void thread_setup(void);
 void thread_cleanup(void);
 void do_threads(SSL_CTX *s_ctx,SSL_CTX *c_ctx);
@@ -108,23 +109,6 @@ unsigned long irix_thread_id(void );
 unsigned long solaris_thread_id(void );
 unsigned long pthreads_thread_id(void );
 
-#else
-int MS_CALLBACK verify_callback();
-void thread_setup();
-void thread_cleanup();
-void do_threads();
-
-void irix_locking_callback();
-void solaris_locking_callback();
-void win32_locking_callback();
-void pthreads_locking_callback();
-
-unsigned long irix_thread_id();
-unsigned long solaris_thread_id();
-unsigned long pthreads_thread_id();
-
-#endif
-
 BIO *bio_err=NULL;
 BIO *bio_stdout=NULL;
 
@@ -139,12 +123,7 @@ int number_of_loops=10;
 int reconnect=0;
 int cache_stats=0;
 
-#ifndef  NOPROTO
 int doit(char *ctx[4]);
-#else
-int doit();
-#endif
-
 static void print_stats(FILE *fp, SSL_CTX *ctx)
 {
        fprintf(fp,"%4ld items in the session cache\n",
@@ -267,7 +246,7 @@ bad:
        if (cipher == NULL) cipher=getenv("SSL_CIPHER");
 
        SSL_load_error_strings();
-       SSLeay_add_ssl_algorithms();
+       OpenSSL_add_ssl_algorithms();
 
        c_ctx=SSL_CTX_new(ssl_method);
        s_ctx=SSL_CTX_new(ssl_method);
@@ -675,18 +654,23 @@ err:
        return(0);
        }
 
-int MS_CALLBACK verify_callback(int ok, X509 *xs, X509 *xi, int depth,
-            int error, char *arg)
+int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
        {
-       char buf[256];
+       char *s, buf[256];
 
        if (verbose)
                {
-               X509_NAME_oneline(X509_get_subject_name(xs),buf,256);
-               if (ok)
-                       fprintf(stderr,"depth=%d %s\n",depth,buf);
-               else
-                       fprintf(stderr,"depth=%d error=%d %s\n",depth,error,buf);
+               s=X509_NAME_oneline(X509_get_subject_name(ctx->current_cert),
+                                   buf,256);
+               if (s != NULL)
+                       {
+                       if (ok)
+                               fprintf(stderr,"depth=%d %s\n",
+                                       ctx->error_depth,buf);
+                       else
+                               fprintf(stderr,"depth=%d error=%d %s\n",
+                                       ctx->error_depth,ctx->error,buf);
+                       }
                }
        return(ok);
        }
@@ -695,13 +679,14 @@ int MS_CALLBACK verify_callback(int ok, X509 *xs, X509 *xi, int depth,
 
 #ifdef WIN32
 
-static HANDLE lock_cs[CRYPTO_NUM_LOCKS];
+static HANDLE *lock_cs;
 
 void thread_setup(void)
        {
        int i;
 
-       for (i=0; i<CRYPTO_NUM_LOCKS; i++)
+       lock_cs=Malloc(CRYPTO_num_locks() * sizeof(HANDLE));
+       for (i=0; i<CRYPTO_num_locks(); i++)
                {
                lock_cs[i]=CreateMutex(NULL,FALSE,NULL);
                }
@@ -715,8 +700,9 @@ void thread_cleanup(void)
        int i;
 
        CRYPTO_set_locking_callback(NULL);
-       for (i=0; i<CRYPTO_NUM_LOCKS; i++)
+       for (i=0; i<CRYPTO_num_locks(); i++)
                CloseHandle(lock_cs[i]);
+       Free(lock_cs);
        }
 
 void win32_locking_callback(int mode, int type, char *file, int line)
@@ -786,15 +772,17 @@ void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
 
 #ifdef SOLARIS
 
-static mutex_t lock_cs[CRYPTO_NUM_LOCKS];
-/*static rwlock_t lock_cs[CRYPTO_NUM_LOCKS]; */
-static long lock_count[CRYPTO_NUM_LOCKS];
+static mutex_t *lock_cs;
+/*static rwlock_t *lock_cs; */
+static long *lock_count;
 
 void thread_setup(void)
        {
        int i;
 
-       for (i=0; i<CRYPTO_NUM_LOCKS; i++)
+       lock_cs=Malloc(CRYPTO_num_locks() * sizeof(mutex_t));
+       lock_count=Malloc(CRYPTO_num_locks() * sizeof(long));
+       for (i=0; i<CRYPTO_num_locks(); i++)
                {
                lock_count[i]=0;
                /* rwlock_init(&(lock_cs[i]),USYNC_THREAD,NULL); */
@@ -810,31 +798,37 @@ void thread_cleanup(void)
        int i;
 
        CRYPTO_set_locking_callback(NULL);
-fprintf(stderr,"cleanup\n");
-       for (i=0; i<CRYPTO_NUM_LOCKS; i++)
+
+       fprintf(stderr,"cleanup\n");
+
+       for (i=0; i<CRYPTO_num_locks(); i++)
                {
                /* rwlock_destroy(&(lock_cs[i])); */
                mutex_destroy(&(lock_cs[i]));
                fprintf(stderr,"%8ld:%s\n",lock_count[i],CRYPTO_get_lock_name(i));
                }
-fprintf(stderr,"done cleanup\n");
+       Free(lock_cs);
+       Free(lock_count);
+
+       fprintf(stderr,"done cleanup\n");
+
        }
 
 void solaris_locking_callback(int mode, int type, char *file, int line)
        {
 #ifdef undef
-fprintf(stderr,"thread=%4d mode=%s lock=%s %s:%d\n",
-       CRYPTO_thread_id(),
-       (mode&CRYPTO_LOCK)?"l":"u",
-       (type&CRYPTO_READ)?"r":"w",file,line);
+       fprintf(stderr,"thread=%4d mode=%s lock=%s %s:%d\n",
+               CRYPTO_thread_id(),
+               (mode&CRYPTO_LOCK)?"l":"u",
+               (type&CRYPTO_READ)?"r":"w",file,line);
 #endif
 
-/*
-if (CRYPTO_LOCK_SSL_CERT == type)
+       /*
+       if (CRYPTO_LOCK_SSL_CERT == type)
        fprintf(stderr,"(t,m,f,l) %ld %d %s %d\n",
                CRYPTO_thread_id(),
                mode,file,line);
-*/
+       */
        if (mode & CRYPTO_LOCK)
                {
        /*      if (mode & CRYPTO_READ)
@@ -894,7 +888,7 @@ unsigned long solaris_thread_id(void)
 
 
 static usptr_t *arena;
-static usema_t *lock_cs[CRYPTO_NUM_LOCKS];
+static usema_t **lock_cs;
 
 void thread_setup(void)
        {
@@ -911,7 +905,8 @@ void thread_setup(void)
        arena=usinit(filename);
        unlink(filename);
 
-       for (i=0; i<CRYPTO_NUM_LOCKS; i++)
+       lock_cs=Malloc(CRYPTO_num_locks() * sizeof(usema_t *));
+       for (i=0; i<CRYPTO_num_locks(); i++)
                {
                lock_cs[i]=usnewsema(arena,1);
                }
@@ -925,7 +920,7 @@ void thread_cleanup(void)
        int i;
 
        CRYPTO_set_locking_callback(NULL);
-       for (i=0; i<CRYPTO_NUM_LOCKS; i++)
+       for (i=0; i<CRYPTO_num_locks(); i++)
                {
                char buf[10];
 
@@ -933,6 +928,7 @@ void thread_cleanup(void)
                usdumpsema(lock_cs[i],stdout,buf);
                usfreesema(lock_cs[i],arena);
                }
+       Free(lock_cs);
        }
 
 void irix_locking_callback(int mode, int type, char *file, int line)
@@ -985,14 +981,16 @@ unsigned long irix_thread_id(void)
 
 #ifdef PTHREADS
 
-static pthread_mutex_t lock_cs[CRYPTO_NUM_LOCKS];
-static long lock_count[CRYPTO_NUM_LOCKS];
+static pthread_mutex_t *lock_cs;
+static long *lock_count;
 
 void thread_setup(void)
        {
        int i;
 
-       for (i=0; i<CRYPTO_NUM_LOCKS; i++)
+       lock_cs=Malloc(CRYPTO_num_locks() * sizeof(pthread_mutex_t));
+       lock_count=Malloc(CRYPTO_num_locks() * sizeof(long));
+       for (i=0; i<CRYPTO_num_locks(); i++)
                {
                lock_count[i]=0;
                pthread_mutex_init(&(lock_cs[i]),NULL);
@@ -1008,12 +1006,15 @@ void thread_cleanup(void)
 
        CRYPTO_set_locking_callback(NULL);
        fprintf(stderr,"cleanup\n");
-       for (i=0; i<CRYPTO_NUM_LOCKS; i++)
+       for (i=0; i<CRYPTO_num_locks(); i++)
                {
                pthread_mutex_destroy(&(lock_cs[i]));
                fprintf(stderr,"%8ld:%s\n",lock_count[i],
                        CRYPTO_get_lock_name(i));
                }
+       Free(lock_cs);
+       Free(lock_count);
+
        fprintf(stderr,"done cleanup\n");
        }
 
@@ -1068,7 +1069,7 @@ void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
                }
 
        printf("pthreads threads done (%d,%d)\n",
-       s_ctx->references,c_ctx->references);
+               s_ctx->references,c_ctx->references);
        }
 
 unsigned long pthreads_thread_id(void)