Mercurial > hg > nginx-quic
view src/os/win32/ngx_time.h @ 8910:f3510cb959d1
Events: fixed EPOLLRDHUP with FIONREAD (ticket #2367).
When reading exactly rev->available bytes, rev->available might become 0
after FIONREAD usage introduction in efd71d49bde0. On the next call of
ngx_readv_chain() on systems with EPOLLRDHUP this resulted in return without
any actions, that is, with rev->ready set, and this in turn resulted in no
timers set in event pipe, leading to socket leaks.
Fix is to reset rev->ready in ngx_readv_chain() when returning due to
rev->available being 0 with EPOLLRDHUP, much like it is already done in
ngx_unix_recv(). This ensures that if rev->available will become 0, on
systems with EPOLLRDHUP support appropriate EPOLLRDHUP-specific handling
will happen on the next ngx_readv_chain() call.
While here, also synced ngx_readv_chain() to match ngx_unix_recv() and
reset rev->ready when returning due to rev->available being 0 with kqueue.
This is mostly cosmetic change, as rev->ready is anyway reset when
rev->available is set to 0.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 15 Jul 2022 15:19:32 +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_ */