Mercurial > hg > nginx-quic
view src/os/unix/ngx_thread.h @ 6548:8a34e92d8ab5
SSL: made it possible to iterate though all certificates.
A pointer to a previously configured certificate now stored in a certificate.
This makes it possible to iterate though all certificates configured in
the SSL context. This is now used to configure OCSP stapling for all
certificates, and in ngx_ssl_session_id_context().
As SSL_CTX_use_certificate() frees previously loaded certificate of the same
type, and we have no way to find out if it's the case, X509_free() calls
are now posponed till ngx_ssl_cleanup_ctx().
Note that in OpenSSL 1.0.2+ this can be done without storing things in exdata
using the SSL_CTX_set_current_cert() and SSL_CTX_get0_certificate() functions.
These are not yet available in all supported versions though, so it's easier
to continue to use exdata for now.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 19 May 2016 14:46:32 +0300 |
parents | ac7c7241ed8c |
children | d230c797b168 |
line wrap: on
line source
/* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */ #ifndef _NGX_THREAD_H_INCLUDED_ #define _NGX_THREAD_H_INCLUDED_ #include <ngx_config.h> #include <ngx_core.h> #if (NGX_THREADS) #include <pthread.h> typedef pthread_mutex_t ngx_thread_mutex_t; ngx_int_t ngx_thread_mutex_create(ngx_thread_mutex_t *mtx, ngx_log_t *log); ngx_int_t ngx_thread_mutex_destroy(ngx_thread_mutex_t *mtx, ngx_log_t *log); ngx_int_t ngx_thread_mutex_lock(ngx_thread_mutex_t *mtx, ngx_log_t *log); ngx_int_t ngx_thread_mutex_unlock(ngx_thread_mutex_t *mtx, ngx_log_t *log); typedef pthread_cond_t ngx_thread_cond_t; ngx_int_t ngx_thread_cond_create(ngx_thread_cond_t *cond, ngx_log_t *log); ngx_int_t ngx_thread_cond_destroy(ngx_thread_cond_t *cond, ngx_log_t *log); ngx_int_t ngx_thread_cond_signal(ngx_thread_cond_t *cond, ngx_log_t *log); ngx_int_t ngx_thread_cond_wait(ngx_thread_cond_t *cond, ngx_thread_mutex_t *mtx, ngx_log_t *log); #if (NGX_LINUX) typedef pid_t ngx_tid_t; #define NGX_TID_T_FMT "%P" #elif (NGX_FREEBSD) typedef uint32_t ngx_tid_t; #define NGX_TID_T_FMT "%uD" #elif (NGX_DARWIN) typedef uint64_t ngx_tid_t; #define NGX_TID_T_FMT "%uA" #else typedef uint64_t ngx_tid_t; #define NGX_TID_T_FMT "%uA" #endif ngx_tid_t ngx_thread_tid(void); #define ngx_log_tid ngx_thread_tid() #else #define ngx_log_tid 0 #define NGX_TID_T_FMT "%d" #endif #endif /* _NGX_THREAD_H_INCLUDED_ */