[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnurl] 149/411: multi: reuse WinSock events variable in Curl_multi_wait
From: |
gnunet |
Subject: |
[gnurl] 149/411: multi: reuse WinSock events variable in Curl_multi_wait |
Date: |
Wed, 13 Jan 2021 01:19:24 +0100 |
This is an automated email from the git hooks/post-receive script.
nikita pushed a commit to branch master
in repository gnurl.
commit 40d67da7caaef4c23399306cbcac7883a925ce6f
Author: Marc Hoersken <info@marc-hoersken.de>
AuthorDate: Sat Sep 12 21:59:26 2020 +0200
multi: reuse WinSock events variable in Curl_multi_wait
Since the struct is quite large (1 long and 10 ints) we
declare it once at the beginning of the function instead
of multiple times inside loops to avoid stack movements.
Reviewed-by: Viktor Szakats
Reviewed-by: Daniel Stenberg
Closes #5886
---
lib/multi.c | 23 +++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)
diff --git a/lib/multi.c b/lib/multi.c
index b9316b3c4..f374b2721 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -1095,6 +1095,7 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi,
bool ufds_malloc = FALSE;
#else
struct pollfd pre_poll;
+ WSANETWORKEVENTS wsa_events;
DEBUGASSERT(multi->wsa_event != WSA_INVALID_EVENT);
#endif
@@ -1295,18 +1296,17 @@ static CURLMcode Curl_multi_wait(struct Curl_multi
*multi,
for(i = 0; i < extra_nfds; i++) {
unsigned short mask = 0;
#ifdef USE_WINSOCK
- WSANETWORKEVENTS events = {0};
+ wsa_events.lNetworkEvents = 0;
mask = extra_fds[i].revents;
if(WSAEnumNetworkEvents(extra_fds[i].fd, multi->wsa_event,
- &events) == 0) {
- if(events.lNetworkEvents & (FD_READ|FD_ACCEPT|FD_CLOSE))
+ &wsa_events) == 0) {
+ if(wsa_events.lNetworkEvents & (FD_READ|FD_ACCEPT|FD_CLOSE))
mask |= CURL_WAIT_POLLIN;
- if(events.lNetworkEvents & (FD_WRITE|FD_CONNECT|FD_CLOSE))
+ if(wsa_events.lNetworkEvents & (FD_WRITE|FD_CONNECT|FD_CLOSE))
mask |= CURL_WAIT_POLLOUT;
- if(events.lNetworkEvents & FD_OOB)
+ if(wsa_events.lNetworkEvents & FD_OOB)
mask |= CURL_WAIT_POLLPRI;
-
- if(ret && events.lNetworkEvents != 0)
+ if(ret && wsa_events.lNetworkEvents != 0)
retcode++;
}
WSAEventSelect(extra_fds[i].fd, multi->wsa_event, 0);
@@ -1320,7 +1320,6 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi,
if(r & POLLPRI)
mask |= CURL_WAIT_POLLPRI;
#endif
-
extra_fds[i].revents = mask;
}
@@ -1334,13 +1333,13 @@ static CURLMcode Curl_multi_wait(struct Curl_multi
*multi,
for(i = 0; i < MAX_SOCKSPEREASYHANDLE; i++) {
if(bitmap & (GETSOCK_READSOCK(i) | GETSOCK_WRITESOCK(i))) {
- WSANETWORKEVENTS events = {0};
+ wsa_events.lNetworkEvents = 0;
if(WSAEnumNetworkEvents(sockbunch[i], multi->wsa_event,
- &events) == 0) {
- if(ret && events.lNetworkEvents != 0)
+ &wsa_events) == 0) {
+ if(ret && wsa_events.lNetworkEvents != 0)
retcode++;
}
- if(ret && !timeout_ms && !events.lNetworkEvents) {
+ if(ret && !timeout_ms && wsa_events.lNetworkEvents == 0) {
if((bitmap & GETSOCK_READSOCK(i)) &&
SOCKET_READABLE(sockbunch[i], 0) > 0)
retcode++;
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [gnurl] 177/411: KNOWN_BUGS: Unable to use PKCS12 certificate with Secure Transport, (continued)
- [gnurl] 177/411: KNOWN_BUGS: Unable to use PKCS12 certificate with Secure Transport, gnunet, 2021/01/12
- [gnurl] 130/411: RELEASE-NOTES: synced, gnunet, 2021/01/12
- [gnurl] 181/411: tests/data: Fix some mismatched XML tags in test cases, gnunet, 2021/01/12
- [gnurl] 142/411: travis: use libressl v3.1.4 instead of master, gnunet, 2021/01/12
- [gnurl] 156/411: easy_reset: clear retry counter, gnunet, 2021/01/12
- [gnurl] 140/411: tests/FILEFORMAT: document nonewline support for <file>, gnunet, 2021/01/12
- [gnurl] 153/411: github: remove the duplicate "Security vulnerability" entry, gnunet, 2021/01/12
- [gnurl] 158/411: RELEASE-NOTES: synced, gnunet, 2021/01/12
- [gnurl] 183/411: Curl_send: return error when pre_receive_plain can't malloc, gnunet, 2021/01/12
- [gnurl] 162/411: docs/TheArtOfHttpScripting: convert to markdown, gnunet, 2021/01/12
- [gnurl] 149/411: multi: reuse WinSock events variable in Curl_multi_wait,
gnunet <=
- [gnurl] 148/411: TODO: dynamically decide to use socketpair, gnunet, 2021/01/12
- [gnurl] 139/411: tool_writeout: add new writeout variable, %{num_headers}, gnunet, 2021/01/12
- [gnurl] 182/411: ftp: separate FTPS from FTP over "HTTPS proxy", gnunet, 2021/01/12
- [gnurl] 197/411: configure: use "no" instead of "disabled" for the end summary, gnunet, 2021/01/12
- [gnurl] 232/411: CI/tests: use verification curl for test reporting APIs, gnunet, 2021/01/12
- [gnurl] 233/411: strerror: Revert to local codepage for Windows error string, gnunet, 2021/01/12
- [gnurl] 226/411: mbedtls: add missing header when defining MBEDTLS_DEBUG, gnunet, 2021/01/12
- [gnurl] 159/411: CHECKSRC: document two missing warnings, gnunet, 2021/01/12
- [gnurl] 133/411: curl: make file2memory use dynbuf, gnunet, 2021/01/12
- [gnurl] 154/411: man pages: switch to https://example.com URLs, gnunet, 2021/01/12