Mercurial > hg > nginx-quic
view src/os/unix/ngx_thread_id.c @ 7870:e169cce912c7 quic
Avoid retransmitting of packets with discarded keys.
Sections 4.10.1 and 4.10.2 of quic transport describe discarding of initial
and handshake keys. Since the keys are discarded, we no longer need
to retransmit packets and corresponding queues should be emptied.
This patch removes previously added workaround that did not require
acknowledgement for initial packets, resulting in avoiding retransmission,
which is wrong because a packet could be lost and we have to retransmit it.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Mon, 18 May 2020 13:54:53 +0300 |
parents | 466bd63b63d1 |
children |
line wrap: on
line source
/* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */ #include <ngx_config.h> #include <ngx_core.h> #include <ngx_thread_pool.h> #if (NGX_LINUX) /* * Linux thread id is a pid of thread created by clone(2), * glibc does not provide a wrapper for gettid(). */ ngx_tid_t ngx_thread_tid(void) { return syscall(SYS_gettid); } #elif (NGX_FREEBSD) && (__FreeBSD_version >= 900031) #include <pthread_np.h> ngx_tid_t ngx_thread_tid(void) { return pthread_getthreadid_np(); } #elif (NGX_DARWIN) /* * MacOSX thread has two thread ids: * * 1) MacOSX 10.6 (Snow Leoprad) has pthread_threadid_np() returning * an uint64_t value, which is obtained using the __thread_selfid() * syscall. It is a number above 300,000. */ ngx_tid_t ngx_thread_tid(void) { uint64_t tid; (void) pthread_threadid_np(NULL, &tid); return tid; } /* * 2) Kernel thread mach_port_t returned by pthread_mach_thread_np(). * It is a number in range 100-100,000. * * return pthread_mach_thread_np(pthread_self()); */ #else ngx_tid_t ngx_thread_tid(void) { return (uint64_t) (uintptr_t) pthread_self(); } #endif