[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnurl] 99/256: asyn-thread: Fixed cleanup after OOM
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnurl] 99/256: asyn-thread: Fixed cleanup after OOM |
Date: |
Fri, 06 Oct 2017 19:43:10 +0200 |
This is an automated email from the git hooks/post-receive script.
ng0 pushed a commit to branch master
in repository gnurl.
commit df29455dbce7f75f61339067c6f6ac43a9ff3fd7
Author: Dan Fandrich <address@hidden>
AuthorDate: Tue Aug 29 00:30:30 2017 +0200
asyn-thread: Fixed cleanup after OOM
destroy_async_data() assumes that if the flag "done" is not set yet, the
thread itself will clean up once the request is complete. But if an
error (generally OOM) occurs before the thread even has a chance to
start, it will never get a chance to clean up and memory will be leaked.
By clearing "done" only just before starting the thread, the correct
cleanup sequence will happen in all cases.
---
lib/asyn-thread.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/lib/asyn-thread.c b/lib/asyn-thread.c
index c9f443167..a86772965 100644
--- a/lib/asyn-thread.c
+++ b/lib/asyn-thread.c
@@ -210,6 +210,10 @@ int init_thread_sync_data(struct thread_data * td,
tsd->td = td;
tsd->port = port;
+ /* Treat the request as done until the thread actually starts so any early
+ * cleanup gets done properly.
+ */
+ tsd->done = 1;
#ifdef HAVE_GETADDRINFO
DEBUGASSERT(hints);
tsd->hints = *hints;
@@ -403,6 +407,9 @@ static bool init_resolve_thread(struct connectdata *conn,
if(!conn->async.hostname)
goto err_exit;
+ /* The thread will set this to 1 when complete. */
+ td->tsd.done = 0;
+
#ifdef HAVE_GETADDRINFO
td->thread_hnd = Curl_thread_create(getaddrinfo_thread, &td->tsd);
#else
@@ -410,6 +417,8 @@ static bool init_resolve_thread(struct connectdata *conn,
#endif
if(!td->thread_hnd) {
+ /* The thread never started, so mark it as done here for proper cleanup. */
+ td->tsd.done = 1;
err = errno;
goto err_exit;
}
--
To stop receiving notification emails like this one, please contact
address@hidden
- [GNUnet-SVN] [gnurl] 36/256: scripts/contri*sh: use "git log --use-mailmap", (continued)
- [GNUnet-SVN] [gnurl] 36/256: scripts/contri*sh: use "git log --use-mailmap", gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 141/256: test1135: fixed after bd8070085f9, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 70/256: vtls: convert the have_curlssl_* constants to runtime flags, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 104/256: curl_global_sslset.3: clarify, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 118/256: ossfuzz: Move to C++ for curl_fuzzer., gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 129/256: mime: fix some implicit curl_off_t --> size_t conversion warnings., gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 106/256: makefile.m32: add multissl support, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 85/256: vtls: refactor out essential information about the SSL backends, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 148/256: configure: add MultiSSL to FEATURES when enabled, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 211/256: RELEASE-NOTES: synced with 5fe85587c, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 99/256: asyn-thread: Fixed cleanup after OOM,
gnunet <=
- [GNUnet-SVN] [gnurl] 109/256: polarssl: fix multissl breakage, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 84/256: vtls: allow selecting which SSL backend to use at runtime, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 125/256: test564: Add a warning comment about shell profile output., gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 179/256: mbedtls: enable CA path processing, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 216/256: examples/post-callback: use long for CURLOPT_POSTFIELDSIZE, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 184/256: checksrc: detect and warn for lack of spaces next to plus signs, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 202/256: schannel: Support partial send for when data is too large, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 162/256: configure: remove --enable-soname-bump and SONAME_BUMP, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 207/256: ossfuzz: don't write out to stdout, gnunet, 2017/10/06
- [GNUnet-SVN] [gnurl] 108/256: configure: remove the leading comma from the backends list, gnunet, 2017/10/06