aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2011-12-02 21:10:28 +0100
committerDaniel Stenberg <daniel@haxx.se>2011-12-02 21:10:28 +0100
commitd81f5ea3e0a5f9a532fcf685898e041fafa93a5b (patch)
tree110bf924cebab2cbaf17cf819f3243a122afb472
parentadc88ca203bbb602cc9a1726669526fa7b3723ef (diff)
multi interface: only use non-NULL function pointer!
If the socket callback function pointer hasn't been set, we must not attempt to use it. Commit adc88ca20 made it more likely to occur.
-rw-r--r--lib/multi.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/lib/multi.c b/lib/multi.c
index 3059e49be..f3b892c91 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -1940,11 +1940,12 @@ static void singlesocket(struct Curl_multi *multi,
}
/* we know (entry != NULL) at this point, see the logic above */
- multi->socket_cb(easy->easy_handle,
- s,
- action,
- multi->socket_userp,
- entry->socketp);
+ if(multi->socket_cb)
+ multi->socket_cb(easy->easy_handle,
+ s,
+ action,
+ multi->socket_userp,
+ entry->socketp);
entry->action = action; /* store the current action state */
}
@@ -2019,11 +2020,12 @@ static void singlesocket(struct Curl_multi *multi,
remove_sock_from_hash = FALSE;
if(remove_sock_from_hash) {
- multi->socket_cb(easy->easy_handle,
- s,
- CURL_POLL_REMOVE,
- multi->socket_userp,
- entry ? entry->socketp : NULL);
+ if(multi->socket_cb)
+ multi->socket_cb(easy->easy_handle,
+ s,
+ CURL_POLL_REMOVE,
+ multi->socket_userp,
+ entry ? entry->socketp : NULL);
sh_delentry(multi->sockhash, s);
}