From: Daniel Stenberg Date: Mon, 3 Oct 2011 20:32:36 +0000 (+0200) Subject: share: don't use SSL unless enabled X-Git-Tag: upstream/7.37.1~3628 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=15e3e451702396e870c00d186ff7710792a1f28e;p=platform%2Fupstream%2Fcurl.git share: don't use SSL unless enabled Don't even declare the struct members for disabled features Introducing the CURLSHE_NOT_BUILT_IN return code for the share interface when trying to set a sharing option that has been disabled (or not enabled) in the library. --- diff --git a/docs/libcurl/libcurl-errors.3 b/docs/libcurl/libcurl-errors.3 index beabf98..7954a83 100644 --- a/docs/libcurl/libcurl-errors.3 +++ b/docs/libcurl/libcurl-errors.3 @@ -277,3 +277,6 @@ An invalid share object was passed to the function. .IP "CURLSHE_NOMEM (4)" Not enough memory was available. (Added in 7.12.0) +.IP "CURLSHE_NOT_BUILT_IN (5)" +The requsted sharing could not be done because the library you use don't have +that particular feature enabled. (Added in 7.23.0) diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions index 028bb1a..8c1792c 100644 --- a/docs/libcurl/symbols-in-versions +++ b/docs/libcurl/symbols-in-versions @@ -550,6 +550,7 @@ CURLSHE_BAD_OPTION 7.10.3 CURLSHE_INVALID 7.10.3 CURLSHE_IN_USE 7.10.3 CURLSHE_NOMEM 7.12.0 +CURLSHE_NOT_BUILT_IN 7.23.0 CURLSHE_OK 7.10.3 CURLSHOPT_LOCKFUNC 7.10.3 CURLSHOPT_NONE 7.10.3 diff --git a/include/curl/curl.h b/include/curl/curl.h index 062f788..f4aa17f 100644 --- a/include/curl/curl.h +++ b/include/curl/curl.h @@ -2014,8 +2014,9 @@ typedef enum { CURLSHE_BAD_OPTION, /* 1 */ CURLSHE_IN_USE, /* 2 */ CURLSHE_INVALID, /* 3 */ - CURLSHE_NOMEM, /* out of memory */ - CURLSHE_LAST /* never use */ + CURLSHE_NOMEM, /* 4 out of memory */ + CURLSHE_NOT_BUILT_IN, /* 5 feature not present in lib */ + CURLSHE_LAST /* never use */ } CURLSHcode; typedef enum { diff --git a/lib/share.c b/lib/share.c index a3eae16..6f8ba49 100644 --- a/lib/share.c +++ b/lib/share.c @@ -73,17 +73,20 @@ curl_share_setopt(CURLSH *sh, CURLSHoption option, ...) } break; -#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES) case CURL_LOCK_DATA_COOKIE: +#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES) if(!share->cookies) { share->cookies = Curl_cookie_init(NULL, NULL, NULL, TRUE ); if(!share->cookies) return CURLSHE_NOMEM; } break; -#endif /* CURL_DISABLE_HTTP */ +#else /* CURL_DISABLE_HTTP */ + return CURLSHE_NOT_BUILT_IN; +#endif case CURL_LOCK_DATA_SSL_SESSION: +#ifdef USE_SSL if(!share->sslsession) { share->nsslsession = 8; share->sslsession = calloc(share->nsslsession, @@ -92,6 +95,9 @@ curl_share_setopt(CURLSH *sh, CURLSHoption option, ...) return CURLSHE_NOMEM; } break; +#else + return CURLSHE_NOT_BUILT_IN; +#endif case CURL_LOCK_DATA_CONNECT: /* not supported (yet) */ @@ -112,22 +118,28 @@ curl_share_setopt(CURLSH *sh, CURLSHoption option, ...) } break; -#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES) case CURL_LOCK_DATA_COOKIE: +#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES) if(share->cookies) { Curl_cookie_cleanup(share->cookies); share->cookies = NULL; } break; -#endif /* CURL_DISABLE_HTTP */ +#else /* CURL_DISABLE_HTTP */ + return CURLSHE_NOT_BUILT_IN; +#endif case CURL_LOCK_DATA_SSL_SESSION: +#ifdef USE_SSL if(share->sslsession) { free(share->sslsession); share->sslsession = NULL; share->nsslsession = 0; } break; +#else + return CURLSHE_NOT_BUILT_IN; +#endif case CURL_LOCK_DATA_CONNECT: break; @@ -186,11 +198,13 @@ curl_share_cleanup(CURLSH *sh) if(share->cookies) Curl_cookie_cleanup(share->cookies); +#ifdef USE_SSL if(share->sslsession) { for(i = 0; i < share->nsslsession; ++i) Curl_ssl_kill_session(&(share->sslsession[i])); free(share->sslsession); } +#endif if(share->unlockfunc) share->unlockfunc(NULL, CURL_LOCK_DATA_SHARE, share->clientdata); diff --git a/lib/share.h b/lib/share.h index cf20000..cb5c6c7 100644 --- a/lib/share.h +++ b/lib/share.h @@ -8,7 +8,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2005, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2011, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -46,9 +46,13 @@ struct Curl_share { void *clientdata; struct curl_hash *hostcache; +#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES) struct CookieInfo *cookies; +#endif +#ifdef USE_SSL struct curl_ssl_session *sslsession; +#endif unsigned int nsslsession; }; diff --git a/lib/strerror.c b/lib/strerror.c index f038f8e..fcb617c 100644 --- a/lib/strerror.c +++ b/lib/strerror.c @@ -384,6 +384,9 @@ curl_share_strerror(CURLSHcode error) case CURLSHE_NOMEM: return "Out of memory"; + case CURLSHE_NOT_BUILT_IN: + return "Feature not enabled in this library"; + case CURLSHE_LAST: break; }