summaryrefslogtreecommitdiff
path: root/lib/urldata.h
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2013-08-02 00:09:59 +0200
committerDaniel Stenberg <daniel@haxx.se>2013-08-03 22:51:35 +0200
commit09b9fc9009bfe6b7b6fd5ba82e81b4ca76539d8d (patch)
treef3ac39747fce5bad3f067cb2746783b3473bf202 /lib/urldata.h
parent7da3caaf954c3688acbfcb0be7cf188bbfd65fa4 (diff)
downloadcurl-09b9fc9009bfe6b7b6fd5ba82e81b4ca76539d8d.tar.gz
multi: remove 'Curl_one_easy' struct, phase 1
The motivation for having a separate struct that keep track of an easy handle when using the multi handle was removed when we switched to always using the multi interface internally. Now they were just two separate struct that was always allocated for each easy handle. This first step just moves the Curl_one_easy struct members into the SessionHandle struct and hides this somehow (== keeps the source code changes to a minimum) by defining Curl_one_easy to SessionHandle The biggest changes in this commit are: 1 - the linked list of easy handles had to be changed somewhat due to the new struct layout. This made the main linked list pointer get renamed to 'easyp' and there's also a new pointer to the last node, called easylp. It is no longer circular but ends with ->next pointing to NULL. New nodes are still added last. 2 - easy->state is now called easy->mstate to avoid name collision
Diffstat (limited to 'lib/urldata.h')
-rw-r--r--lib/urldata.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/urldata.h b/lib/urldata.h
index e245bfb4f..520fe2ca6 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -188,6 +188,7 @@
#include "http.h"
#include "rtsp.h"
#include "wildcard.h"
+#include "multihandle.h"
#ifdef HAVE_GSSAPI
# ifdef HAVE_GSSGNU
@@ -1619,6 +1620,25 @@ struct Names {
*/
struct SessionHandle {
+ /* first, two fields for the linked list of these */
+ struct Curl_one_easy *next;
+ struct Curl_one_easy *prev;
+
+ struct SessionHandle *easy_handle; /* the easy handle for this unit */
+ struct connectdata *easy_conn; /* the "unit's" connection */
+
+ CURLMstate mstate; /* the handle's state */
+ CURLcode result; /* previous result */
+
+ struct Curl_message msg; /* A single posted message. */
+
+ /* Array with the plain socket numbers this handle takes care of, in no
+ particular order. Note that all sockets are added to the sockhash, where
+ the state etc are also kept. This array is mostly used to detect when a
+ socket is to be removed from the hash. See singlesocket(). */
+ curl_socket_t sockets[MAX_SOCKSPEREASYHANDLE];
+ int numsocks;
+
struct Names dns;
struct Curl_multi *multi; /* if non-NULL, points to the multi handle
struct to which this "belongs" when used by