[curl/curl] bcca17: Revert "Revert 'multi: implement wait using winsoc...

Marc Hörsken <[email protected]>
Newsgroups gmane.comp.web.curl.cvs
Message-ID <curl/curl/push/refs/heads/master/[email protected]>
  Branch: refs/heads/master
  Home:   https://github.com/curl/curl
  Commit: bcca174cfa727ffa0442d059609e60591080599a
      https://github.com/curl/curl/commit/bcca174cfa727ffa0442d059609e60591080599a
  Author: Marc Hoersken <[email protected]>
  Date:   2021-04-21 (Wed, 21 Apr 2021)

  Changed paths:
    M lib/multi.c
    M lib/multihandle.h

  Log Message:
  -----------
  Revert "Revert 'multi: implement wait using winsock events'"

This reverts commit 2260e0ebe6d45529495231b3e37a0c58fb92a6a2,
also restoring previous follow up changes which were reverted.

Authored-by: rcombs on github
Authored-by: Marc Hörsken
Reviewed-by: Jay Satiro
Reviewed-by: Marcel Raad

Restores #5634
Reverts #6281
Part of #6245


  Commit: e92998a3121ac0752d86fd90d9d6053af760048e
      https://github.com/curl/curl/commit/e92998a3121ac0752d86fd90d9d6053af760048e
  Author: Marc Hoersken <[email protected]>
  Date:   2021-04-21 (Wed, 21 Apr 2021)

  Changed paths:
    M lib/multi.c

  Log Message:
  -----------
  multi: reduce Win32 API calls to improve performance

1. Consolidate pre-checks into a single Curl_poll call:

This is an attempt to restructure the code in Curl_multi_wait
in such a way that less syscalls are made by removing individual
calls to Curl_socket_check via SOCKET_READABLE/SOCKET_WRITABLE.

2. Avoid resetting the WinSock event multiple times:

We finally call WSAResetEvent anyway, so specifying it as
an optional parameter to WSAEnumNetworkEvents is redundant.

3. Wakeup directly in case no sockets are being monitoring:

Fix the WinSock based implementation to skip extra waiting by
not sleeping in case no sockets are to be waited on and just
the WinSock event is being monitored for wakeup functionality.

Assisted-by: Tommy Odom
Reviewed-by: Jay Satiro
Reviewed-by: Marcel Raad

Bug: #6146
Closes #6245


  Commit: b36442b24305f3cda7c13cc64b46838995a4985b
      https://github.com/curl/curl/commit/b36442b24305f3cda7c13cc64b46838995a4985b
  Author: Marc Hoersken <[email protected]>
  Date:   2021-04-21 (Wed, 21 Apr 2021)

  Changed paths:
    M lib/multi.c

  Log Message:
  -----------
  multi: fix slow write/upload performance on Windows

Reset FD_WRITE by sending zero bytes which is permissible
and will be treated by implementations as successful send.

Without this we won't be notified in case a socket is still
writable if we already received such a notification and did
not send any data afterwards on the socket. This would lead
to waiting forever on a writable socket being writable again.

Assisted-by: Tommy Odom
Reviewed-by: Jay Satiro
Reviewed-by: Marcel Raad
Tested-by: tmkk on github

Bug: #6146
Closes #6245


  Commit: 2df64390b3031f7219b5dc5d21f9e64aea5a7c13
      https://github.com/curl/curl/commit/2df64390b3031f7219b5dc5d21f9e64aea5a7c13
  Author: Marc Hoersken <[email protected]>
  Date:   2021-04-21 (Wed, 21 Apr 2021)

  Changed paths:
    M tests/libtest/lib1564.c

  Log Message:
  -----------
  lib1564.c: enable last wakeup test part on Windows

Suggested-by: Gergely Nagy
Reviewed-by: Jay Satiro
Reviewed-by: Marcel Raad

Closes #6245


Compare: https://github.com/curl/curl/compare/3057c6cd736d...2df64390b303

_______________________________________________
curl-commits mailing list
[email protected]
https://cool.haxx.se/cgi-bin/mailman/listinfo/curl-commits
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.