Fix deadlock in ftppr
Some checks are pending
C/C++ CI Linux / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Waiting to run
C/C++ CI Linux / ${{ matrix.target }} (ubuntu-latest) (push) Waiting to run
C/C++ CI MacOS / ${{ matrix.target }} (macos-15) (push) Waiting to run
C/C++ CI Windows / ${{ matrix.target }} (windows-2022) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (macos-15) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (ubuntu-latest) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (windows-2022) (push) Waiting to run

This commit is contained in:
Vladimir Dubrovin 2026-06-02 13:06:53 +03:00
parent 74d5b67ef4
commit ab11e6c4a3

View File

@ -215,6 +215,11 @@ void * ftpprchild(struct clientparam* param) {
sasize = sizeof(param->sincr); sasize = sizeof(param->sincr);
ss = param->srv->so._accept(param->sostate, clidatasock, (struct sockaddr *)&param->sincr, &sasize); ss = param->srv->so._accept(param->sostate, clidatasock, (struct sockaddr *)&param->sincr, &sasize);
if (ss == INVALID_SOCKET) { RETURN (858);} if (ss == INVALID_SOCKET) { RETURN (858);}
#ifdef _WIN32
{ unsigned long ul = 1; ioctlsocket(ss, FIONBIO, &ul); }
#else
fcntl(ss, F_SETFL, O_NONBLOCK | fcntl(ss, F_GETFL));
#endif
param->srv->so._shutdown(param->sostate, clidatasock, SHUT_RDWR); param->srv->so._shutdown(param->sostate, clidatasock, SHUT_RDWR);
param->srv->so._closesocket(param->sostate, clidatasock); param->srv->so._closesocket(param->sostate, clidatasock);
clidatasock = ss; clidatasock = ss;