nginx-quic/src/event/ngx_event_busy_lock.h
Igor Sysoev c7af0c0db0 nginx-0.3.3-RELEASE import
*) Change: the "bl" and "af" parameters of the "listen" directive was
       renamed to the "backlog" and "accept_filter".

    *) Feature: the "rcvbuf" and "sndbuf" parameters of the "listen"
       directive.

    *) Change: the "$msec" log parameter does not require now the
       additional the gettimeofday() system call.

    *) Feature: the -t switch now tests the "listen" directives.

    *) Bugfix: if the invalid address was specified in the "listen"
       directive, then after the -HUP signal nginx left an open socket in
       the CLOSED state.

    *) Bugfix: the mime type may be incorrectly set to default value for
       index file with variable in the name; the bug had appeared in 0.3.0.

    *) Feature: the "timer_resolution" directive.

    *) Feature: the millisecond "$upstream_response_time" log parameter.

    *) Bugfix: a temporary file with client request body now is removed
       just after the response header was transferred to a client.

    *) Bugfix: OpenSSL 0.9.6 compatibility.

    *) Bugfix: the SSL certificate and key file paths could not be relative.

    *) Bugfix: the "ssl_prefer_server_ciphers" directive did not work in
       the ngx_imap_ssl_module.

    *) Bugfix: the "ssl_protocols" directive allowed to specify the single
       protocol only.
2005-10-19 12:33:58 +00:00

64 lines
1.6 KiB
C

/*
* Copyright (C) Igor Sysoev
*/
#ifndef _NGX_EVENT_BUSY_LOCK_H_INCLUDED_
#define _NGX_EVENT_BUSY_LOCK_H_INCLUDED_
#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_event.h>
typedef struct ngx_event_busy_lock_ctx_s ngx_event_busy_lock_ctx_t;
struct ngx_event_busy_lock_ctx_s {
ngx_event_t *event;
ngx_event_handler_pt handler;
void *data;
ngx_msec_t timer;
unsigned locked:1;
unsigned waiting:1;
unsigned cache_updated:1;
char *md5;
ngx_int_t slot;
ngx_event_busy_lock_ctx_t *next;
};
typedef struct {
u_char *md5_mask;
char *md5;
ngx_uint_t cachable;
ngx_uint_t busy;
ngx_uint_t max_busy;
ngx_uint_t waiting;
ngx_uint_t max_waiting;
ngx_event_busy_lock_ctx_t *events;
ngx_event_busy_lock_ctx_t *last;
#if (NGX_THREADS)
ngx_mutex_t *mutex;
#endif
} ngx_event_busy_lock_t;
ngx_int_t ngx_event_busy_lock(ngx_event_busy_lock_t *bl,
ngx_event_busy_lock_ctx_t *ctx);
ngx_int_t ngx_event_busy_lock_cachable(ngx_event_busy_lock_t *bl,
ngx_event_busy_lock_ctx_t *ctx);
void ngx_event_busy_unlock(ngx_event_busy_lock_t *bl,
ngx_event_busy_lock_ctx_t *ctx);
void ngx_event_busy_lock_cancel(ngx_event_busy_lock_t *bl,
ngx_event_busy_lock_ctx_t *ctx);
#endif /* _NGX_EVENT_BUSY_LOCK_H_INCLUDED_ */