view src/os/win32/ngx_time.h @ 8743:5d09596909c6 stable-1.20

Upstream: fixed timeouts with gRPC, SSL and select (ticket #2229). With SSL it is possible that an established connection is ready for reading after the handshake. Further, events might be already disabled in case of level-triggered event methods. If this happens and ngx_http_upstream_send_request() blocks waiting for some data from the upstream, such as flow control in case of gRPC, the connection will time out due to no read events on the upstream connection. Fix is to explicitly check the c->read->ready flag if sending request blocks and post a read event if it is set. Note that while it is possible to modify ngx_ssl_handshake() to keep read events active, this won't completely resolve the issue, since there can be data already received during the SSL handshake (see 573bd30e46b4).
author Maxim Dounin <mdounin@mdounin.ru>
date Fri, 20 Aug 2021 03:53:56 +0300
parents d620f497c50f
children
line wrap: on
line source


/*
 * Copyright (C) Igor Sysoev
 * Copyright (C) Nginx, Inc.
 */


#ifndef _NGX_TIME_H_INCLUDED_
#define _NGX_TIME_H_INCLUDED_


#include <ngx_config.h>
#include <ngx_core.h>


typedef ngx_rbtree_key_t      ngx_msec_t;
typedef ngx_rbtree_key_int_t  ngx_msec_int_t;

typedef SYSTEMTIME            ngx_tm_t;
typedef FILETIME              ngx_mtime_t;

#define ngx_tm_sec            wSecond
#define ngx_tm_min            wMinute
#define ngx_tm_hour           wHour
#define ngx_tm_mday           wDay
#define ngx_tm_mon            wMonth
#define ngx_tm_year           wYear
#define ngx_tm_wday           wDayOfWeek

#define ngx_tm_sec_t          u_short
#define ngx_tm_min_t          u_short
#define ngx_tm_hour_t         u_short
#define ngx_tm_mday_t         u_short
#define ngx_tm_mon_t          u_short
#define ngx_tm_year_t         u_short
#define ngx_tm_wday_t         u_short


#define ngx_msleep            Sleep

#define NGX_HAVE_GETTIMEZONE  1

#define  ngx_timezone_update()

ngx_int_t ngx_gettimezone(void);
void ngx_libc_localtime(time_t s, struct tm *tm);
void ngx_libc_gmtime(time_t s, struct tm *tm);
void ngx_gettimeofday(struct timeval *tp);


#endif /* _NGX_TIME_H_INCLUDED_ */