apache / brpc

brpc is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. "brpc" means "better RPC".
https://brpc.apache.org
Apache License 2.0
16.04k stars 3.92k forks source link

Fix tcp connect interrupt #2664

Open chenBright opened 2 weeks ago

chenBright commented 2 weeks ago

What problem does this PR solve?

Issue Number:

Problem Summary:

tcp_connect被中断之后,返回结果是有问题的:

  1. bthread_timed_connect / bthread_connectbutex_wait返回0,errno等于EWOULDBLOCK或者EINTR,最后tcp_connect返回一个未连接成功的socket fd。
  2. pthread_timed_connect:返回-1,errno等于EINTR

What is changed and the side effects?

Changed:

当errno等于EWOULDBLOCK或者EINTRpthread_fd_wait / bthread_fd_wait继续wait到连接成功或者失败。

Side effects:


Check List: