xref: /aosp_15_r20/external/curl/lib/share.h (revision 6236dae45794135f37c4eb022389c904c8b0090d)
1*6236dae4SAndroid Build Coastguard Worker #ifndef HEADER_CURL_SHARE_H
2*6236dae4SAndroid Build Coastguard Worker #define HEADER_CURL_SHARE_H
3*6236dae4SAndroid Build Coastguard Worker /***************************************************************************
4*6236dae4SAndroid Build Coastguard Worker  *                                  _   _ ____  _
5*6236dae4SAndroid Build Coastguard Worker  *  Project                     ___| | | |  _ \| |
6*6236dae4SAndroid Build Coastguard Worker  *                             / __| | | | |_) | |
7*6236dae4SAndroid Build Coastguard Worker  *                            | (__| |_| |  _ <| |___
8*6236dae4SAndroid Build Coastguard Worker  *                             \___|\___/|_| \_\_____|
9*6236dae4SAndroid Build Coastguard Worker  *
10*6236dae4SAndroid Build Coastguard Worker  * Copyright (C) Daniel Stenberg, <[email protected]>, et al.
11*6236dae4SAndroid Build Coastguard Worker  *
12*6236dae4SAndroid Build Coastguard Worker  * This software is licensed as described in the file COPYING, which
13*6236dae4SAndroid Build Coastguard Worker  * you should have received as part of this distribution. The terms
14*6236dae4SAndroid Build Coastguard Worker  * are also available at https://curl.se/docs/copyright.html.
15*6236dae4SAndroid Build Coastguard Worker  *
16*6236dae4SAndroid Build Coastguard Worker  * You may opt to use, copy, modify, merge, publish, distribute and/or sell
17*6236dae4SAndroid Build Coastguard Worker  * copies of the Software, and permit persons to whom the Software is
18*6236dae4SAndroid Build Coastguard Worker  * furnished to do so, under the terms of the COPYING file.
19*6236dae4SAndroid Build Coastguard Worker  *
20*6236dae4SAndroid Build Coastguard Worker  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
21*6236dae4SAndroid Build Coastguard Worker  * KIND, either express or implied.
22*6236dae4SAndroid Build Coastguard Worker  *
23*6236dae4SAndroid Build Coastguard Worker  * SPDX-License-Identifier: curl
24*6236dae4SAndroid Build Coastguard Worker  *
25*6236dae4SAndroid Build Coastguard Worker  ***************************************************************************/
26*6236dae4SAndroid Build Coastguard Worker 
27*6236dae4SAndroid Build Coastguard Worker #include "curl_setup.h"
28*6236dae4SAndroid Build Coastguard Worker #include <curl/curl.h>
29*6236dae4SAndroid Build Coastguard Worker #include "cookie.h"
30*6236dae4SAndroid Build Coastguard Worker #include "psl.h"
31*6236dae4SAndroid Build Coastguard Worker #include "urldata.h"
32*6236dae4SAndroid Build Coastguard Worker #include "conncache.h"
33*6236dae4SAndroid Build Coastguard Worker 
34*6236dae4SAndroid Build Coastguard Worker #define CURL_GOOD_SHARE 0x7e117a1e
35*6236dae4SAndroid Build Coastguard Worker #define GOOD_SHARE_HANDLE(x) ((x) && (x)->magic == CURL_GOOD_SHARE)
36*6236dae4SAndroid Build Coastguard Worker 
37*6236dae4SAndroid Build Coastguard Worker #define CURL_SHARE_KEEP_CONNECT(s)    \
38*6236dae4SAndroid Build Coastguard Worker         ((s) && ((s)->specifier & (1<< CURL_LOCK_DATA_CONNECT)))
39*6236dae4SAndroid Build Coastguard Worker 
40*6236dae4SAndroid Build Coastguard Worker /* this struct is libcurl-private, do not export details */
41*6236dae4SAndroid Build Coastguard Worker struct Curl_share {
42*6236dae4SAndroid Build Coastguard Worker   unsigned int magic; /* CURL_GOOD_SHARE */
43*6236dae4SAndroid Build Coastguard Worker   unsigned int specifier;
44*6236dae4SAndroid Build Coastguard Worker   volatile unsigned int dirty;
45*6236dae4SAndroid Build Coastguard Worker 
46*6236dae4SAndroid Build Coastguard Worker   curl_lock_function lockfunc;
47*6236dae4SAndroid Build Coastguard Worker   curl_unlock_function unlockfunc;
48*6236dae4SAndroid Build Coastguard Worker   void *clientdata;
49*6236dae4SAndroid Build Coastguard Worker   struct cpool cpool;
50*6236dae4SAndroid Build Coastguard Worker   struct Curl_hash hostcache;
51*6236dae4SAndroid Build Coastguard Worker #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES)
52*6236dae4SAndroid Build Coastguard Worker   struct CookieInfo *cookies;
53*6236dae4SAndroid Build Coastguard Worker #endif
54*6236dae4SAndroid Build Coastguard Worker #ifdef USE_LIBPSL
55*6236dae4SAndroid Build Coastguard Worker   struct PslCache psl;
56*6236dae4SAndroid Build Coastguard Worker #endif
57*6236dae4SAndroid Build Coastguard Worker #ifndef CURL_DISABLE_HSTS
58*6236dae4SAndroid Build Coastguard Worker   struct hsts *hsts;
59*6236dae4SAndroid Build Coastguard Worker #endif
60*6236dae4SAndroid Build Coastguard Worker #ifdef USE_SSL
61*6236dae4SAndroid Build Coastguard Worker   struct Curl_ssl_session *sslsession;
62*6236dae4SAndroid Build Coastguard Worker   size_t max_ssl_sessions;
63*6236dae4SAndroid Build Coastguard Worker   long sessionage;
64*6236dae4SAndroid Build Coastguard Worker #endif
65*6236dae4SAndroid Build Coastguard Worker };
66*6236dae4SAndroid Build Coastguard Worker 
67*6236dae4SAndroid Build Coastguard Worker CURLSHcode Curl_share_lock(struct Curl_easy *, curl_lock_data,
68*6236dae4SAndroid Build Coastguard Worker                            curl_lock_access);
69*6236dae4SAndroid Build Coastguard Worker CURLSHcode Curl_share_unlock(struct Curl_easy *, curl_lock_data);
70*6236dae4SAndroid Build Coastguard Worker 
71*6236dae4SAndroid Build Coastguard Worker #endif /* HEADER_CURL_SHARE_H */
72