Open Roxanne63 opened 1 year ago
I used the source code(resty.apisix.stream.xrpc.socket.lua) to develop a program to interface to our devices, This batch of devices is showing some connection to the server but not sending data. The data transfer goes through the public network, tcp disconnected packets are filtered, I need the read API to have a timeout So that I don't have multiple invalid connections on my server
About settimeouts doesn't work when i use read
If I connect to the server but I don't send any data
The read API does not timeout and return timeout
I read the source code(resty.apisix.stream.xrpc.socket.lua) and found that it wait here at [coroutine._yield], but I did not find the location of the call to [coroutine.resume]. If we use [coroutine._yield] is required to use [coroutine.resume] back here, I wonder if my understanding is wrong
Reproduction code:
preread_by_lua_block {
}
$ openresty -V nginx version: openresty/1.21.4.1 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) built with OpenSSL 1.1.1o 3 May 2022 TLS SNI support enabled configure arguments: --prefix=/app/openresty/nginx --with-cc-opt='-O2 -DAPISIX_BASE_VER=latest -DNGX_GRPC_CLI_ENGINE_PATH=/app/openresty/libgrpc_engine.so -DNGX_HTTP_GRPC_CLI_ENGINE_PATH=/app/openresty/libgrpc_engine.so' --add-module=../ngx_devel_kit-0.3.1 --add-module=../echo-nginx-module-0.62 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.33 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.09 --add-module=../srcache-nginx-module-0.32 --add-module=../ngx_lua-0.10.21 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.9 --add-module=../ngx_stream_lua-0.0.11 --with-ld-opt='-Wl,-rpath,/app/openresty/luajit/lib -Wl,-rpath,' --add-module=/app/install/openresty-1.21.4.1/../mod_dubbo-master --add-module=/app/install/openresty-1.21.4.1/../ngx_multi_upstream_module-master --add-module=/app/install/openresty-1.21.4.1/../apisix-nginx-module-main --add-module=/app/install/openresty-1.21.4.1/../apisix-nginx-module-main/src/stream --add-module=/app/install/openresty-1.21.4.1/../apisix-nginx-module-main/src/meta --add-module=/app/install/openresty-1.21.4.1/../lua-var-nginx-module-master --add-module=/app/install/openresty-1.21.4.1/../grpc-client-nginx-module-main --with-poll_module --with-pcre-jit --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_v2_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_auth_request_module --with-http_secure_link_module --with-http_random_index_module --with-http_gzip_static_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-threads --with-compat --with-openssl=/app/install/openssl-1.1.1o --with-openssl-opt=-g --with-stream --with-http_ssl_module