diff --git a/docs/PreReleaseNotes.txt b/docs/PreReleaseNotes.txt index a6e3b8dc712..401ae735248 100644 --- a/docs/PreReleaseNotes.txt +++ b/docs/PreReleaseNotes.txt @@ -85,6 +85,8 @@ Prerelease Notes * In xrootdfs, allow users to use multiple physical connections. + **Major bug fixes** + * Avoid SEGV after an error occurs during a stat() call. This should be + bakported for any new 3.3.x release. * Make sure monitoring is initialized if it was enabled in any way to avoid SEGV when an odd combination of choices was selected. * Avoid SEGV and double free introduced by patch 30ad01b9 (set host). @@ -189,6 +191,8 @@ Prerelease Notes * Properly recognize a loaded checksum as a native checksum. + **Miscellaneous** + * Prevent constant server disc/recon events when a manager is busy + doing non-response activity on behalf of the server. * Add a generic control method to the file/dir and system classes. OSS plugin writers need only to recompile as a default is provided. * Allow SendData() to send less than the amount of bytes requested. diff --git a/packaging/rhel/xrootd.spec.in b/packaging/rhel/xrootd.spec.in index 34154a7d0ba..ce8ef1b78e0 100644 --- a/packaging/rhel/xrootd.spec.in +++ b/packaging/rhel/xrootd.spec.in @@ -4,7 +4,7 @@ Name: xrootd Epoch: 1 Version: __VERSION__ -Release: __RELEASE__%{?dist} +Release: __RELEASE__%{?dist}%{?_with_cpp11:.cpp11}%{?_with_clang:.clang} Summary: Extended ROOT file server Group: System Environment/Daemons License: LGPL @@ -37,6 +37,10 @@ BuildRequires: graphviz BuildRequires: graphviz-gd %endif +%if %{?_with_clang:1}%{!?_with_clang:0} +BuildRequires: clang +%endif + Requires: %{name}-libs = %{epoch}:%{version}-%{release} Requires: %{name}-client-libs = %{epoch}:%{version}-%{release} Requires: %{name}-server-libs = %{epoch}:%{version}-%{release} @@ -225,13 +229,22 @@ cd %{name} mkdir build cd build +%if %{?_with_cpp11:1}%{!?_with_cpp11:0} +export CXXFLAGS=-std=c++11 +%endif + +%if %{?_with_clang:1}%{!?_with_clang:0} +export CC=clang +export CXX=clang++ +%endif + %if %{?_with_tests:1}%{!?_with_tests:0} cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_TESTS=TRUE ../ %else cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RelWithDebInfo ../ %endif -make VERBOSE=1 %{?_smp_mflags} +make -i VERBOSE=1 %{?_smp_mflags} cd .. doxygen Doxyfile @@ -515,7 +528,7 @@ exit 0 * Fri Oct 21 2011 Lukasz Janyst 3.1.0-1 - bump the version to 3.1.0 -* Tue Apr 11 2011 Lukasz Janyst 3.0.3-1 +* Mon Apr 11 2011 Lukasz Janyst 3.0.3-1 - the first RPM release - version 3.0.3 - the detailed release notes are available at: http://xrootd.org/download/ReleaseNotes.html diff --git a/src/XrdCl/CMakeLists.txt b/src/XrdCl/CMakeLists.txt index 14003648a8b..1be58a9909e 100644 --- a/src/XrdCl/CMakeLists.txt +++ b/src/XrdCl/CMakeLists.txt @@ -79,6 +79,8 @@ target_link_libraries( set_target_properties( XrdCl PROPERTIES + INTERFACE_LINK_LIBRARIES "" + LINK_INTERFACE_LIBRARIES "" VERSION ${XRD_CL_VERSION} SOVERSION ${XRD_CL_SOVERSION} ) @@ -92,6 +94,7 @@ add_executable( target_link_libraries( xrdfs + pthread XrdCl ${READLINE_LIBRARY} ${NCURSES_LIBRARY} ) diff --git a/src/XrdCl/XrdClCheckSumManager.cc b/src/XrdCl/XrdClCheckSumManager.cc index 3a71c768d65..afdaaa97d03 100644 --- a/src/XrdCl/XrdClCheckSumManager.cc +++ b/src/XrdCl/XrdClCheckSumManager.cc @@ -21,6 +21,8 @@ #include "XrdCl/XrdClUtils.hh" #include "XrdCl/XrdClDefaultEnv.hh" #include "XrdCl/XrdClConstants.hh" +#include "XrdCl/XrdClUglyHacks.hh" +#include "XrdCks/XrdCksCalc.hh" #include "XrdCks/XrdCksLoader.hh" #include "XrdCks/XrdCksCalc.hh" #include "XrdCks/XrdCksCalcmd5.hh" @@ -108,7 +110,7 @@ namespace XrdCl algName.c_str() ); return false; } - std::auto_ptr calcPtr( calc ); + XRDCL_SMART_PTR_T calcPtr( calc ); //-------------------------------------------------------------------------- // Open the file diff --git a/src/XrdCl/XrdClClassicCopyJob.cc b/src/XrdCl/XrdClClassicCopyJob.cc index 72572043b3c..898606ae2c9 100644 --- a/src/XrdCl/XrdClClassicCopyJob.cc +++ b/src/XrdCl/XrdClClassicCopyJob.cc @@ -579,7 +579,7 @@ namespace if( pChunks.empty() ) return XRootDStatus( stOK, suDone ); - std::auto_ptr ch( pChunks.front() ); + XRDCL_SMART_PTR_T ch( pChunks.front() ); pChunks.pop(); ch->sem->Wait(); @@ -993,7 +993,7 @@ namespace XrdCl //-------------------------------------------------------------------------- // Initialize the source and the destination //-------------------------------------------------------------------------- - std::auto_ptr src; + XRDCL_SMART_PTR_T src; if( pJob->source.GetProtocol() == "file" ) src.reset( new LocalSource( &pJob->source ) ); else if( pJob->source.GetProtocol() == "stdio" ) @@ -1006,7 +1006,7 @@ namespace XrdCl XRootDStatus st = src->Initialize(); if( !st.IsOK() ) return st; - std::auto_ptr dest; + XRDCL_SMART_PTR_T dest; URL newDestUrl( pJob->target ); if( pJob->target.GetProtocol() == "file" ) diff --git a/src/XrdCl/XrdClFileStateHandler.cc b/src/XrdCl/XrdClFileStateHandler.cc index 4f3a4400907..d35b184f4a4 100644 --- a/src/XrdCl/XrdClFileStateHandler.cc +++ b/src/XrdCl/XrdClFileStateHandler.cc @@ -30,8 +30,10 @@ #include "XrdCl/XrdClFileTimer.hh" #include "XrdCl/XrdClResponseJob.hh" #include "XrdCl/XrdClJobManager.hh" +#include "XrdCl/XrdClUglyHacks.hh" #include +#include #include namespace @@ -179,8 +181,8 @@ namespace XrdCl::HostList *hostList ) { using namespace XrdCl; - std::auto_ptr statusPtr( status ); - std::auto_ptr responsePtr( response ); + XRDCL_SMART_PTR_T statusPtr( status ); + XRDCL_SMART_PTR_T responsePtr( response ); pSendParams.hostList = hostList; //---------------------------------------------------------------------- diff --git a/src/XrdCl/XrdClMessageUtils.hh b/src/XrdCl/XrdClMessageUtils.hh index 18641a67e78..d12d01cc314 100644 --- a/src/XrdCl/XrdClMessageUtils.hh +++ b/src/XrdCl/XrdClMessageUtils.hh @@ -23,7 +23,6 @@ #include "XrdCl/XrdClURL.hh" #include "XrdCl/XrdClMessage.hh" #include "XrdCl/XrdClUglyHacks.hh" -#include namespace XrdCl { @@ -134,19 +133,22 @@ namespace XrdCl { handler->WaitForResponse(); - std::auto_ptr resp( handler->GetResponse() ); + AnyObject *resp = handler->GetResponse(); XRootDStatus *status = handler->GetStatus(); XRootDStatus ret( *status ); delete status; if( ret.IsOK() ) { - if( !resp.get() ) + if( !resp ) return XRootDStatus( stError, errInternal ); resp->Get( response ); resp->Set( (int *)0 ); if( !response ) + { + delete resp; return XRootDStatus( stError, errInternal ); + } } return ret; diff --git a/src/XrdCl/XrdClUglyHacks.hh b/src/XrdCl/XrdClUglyHacks.hh index 38ea7663fd6..610841ef4fc 100644 --- a/src/XrdCl/XrdClUglyHacks.hh +++ b/src/XrdCl/XrdClUglyHacks.hh @@ -36,6 +36,12 @@ namespace XrdCl typedef XrdSysSemaphore Semaphore; #endif +#if __cplusplus >= 201103L +#define XRDCL_SMART_PTR_T std::unique_ptr +#else +#define XRDCL_SMART_PTR_T std::auto_ptr +#endif + } #endif // __XRD_CL_UGLY_HACKS_HH__ diff --git a/src/XrdCl/XrdClXRootDMsgHandler.cc b/src/XrdCl/XrdClXRootDMsgHandler.cc index 73f22e0dff0..b12ada389d0 100644 --- a/src/XrdCl/XrdClXRootDMsgHandler.cc +++ b/src/XrdCl/XrdClXRootDMsgHandler.cc @@ -23,6 +23,7 @@ #include "XrdCl/XrdClXRootDTransport.hh" #include "XrdCl/XrdClMessage.hh" #include "XrdCl/XrdClURL.hh" +#include "XrdCl/XrdClUglyHacks.hh" #include "XrdCl/XrdClUtils.hh" #include "XrdCl/XrdClTaskManager.hh" #include "XrdCl/XrdClSIDManager.hh" @@ -313,7 +314,7 @@ namespace XrdCl //------------------------------------------------------------------------ case kXR_redirect: { - std::auto_ptr msgPtr( pResponse ); + XRDCL_SMART_PTR_T msgPtr( pResponse ); pResponse = 0; if( rsp->hdr.dlen < 4 ) @@ -443,7 +444,7 @@ namespace XrdCl //------------------------------------------------------------------------ case kXR_wait: { - std::auto_ptr msgPtr( pResponse ); + XRDCL_SMART_PTR_T msgPtr( pResponse ); pResponse = 0; uint32_t waitSeconds = 0; @@ -493,7 +494,7 @@ namespace XrdCl //------------------------------------------------------------------------ case kXR_waitresp: { - std::auto_ptr msgPtr( pResponse ); + XRDCL_SMART_PTR_T msgPtr( pResponse ); pResponse = 0; if( rsp->hdr.dlen < 4 ) @@ -517,7 +518,7 @@ namespace XrdCl //------------------------------------------------------------------------ default: { - std::auto_ptr msgPtr( pResponse ); + XRDCL_SMART_PTR_T msgPtr( pResponse ); pResponse = 0; log->Dump( XRootDMsg, "[%s] Got unrecognized response %d to " "message %s", pUrl.GetHostId().c_str(), diff --git a/src/XrdCl/XrdClXRootDTransport.cc b/src/XrdCl/XrdClXRootDTransport.cc index 2feba3e56e5..45d5308a903 100644 --- a/src/XrdCl/XrdClXRootDTransport.cc +++ b/src/XrdCl/XrdClXRootDTransport.cc @@ -30,7 +30,7 @@ #include "XrdOuc/XrdOucErrInfo.hh" #include "XrdOuc/XrdOucUtils.hh" #include "XrdSys/XrdSysTimer.hh" - +#include "XrdSys/XrdSysUtils.hh" #include #include @@ -1061,10 +1061,12 @@ namespace XrdCl // Compute the login cgi //-------------------------------------------------------------------------- int timeZone = XrdSysTimer::TimeZone(); - std::string countryCode = Utils::FQDNToCC( XrdNetUtils::MyHostName() ); + char *hostName = XrdNetUtils::MyHostName(); + std::string countryCode = Utils::FQDNToCC( hostName ); + free( hostName ); char *cgiBuffer = new char[1024]; - snprintf( cgiBuffer, 1024, "?xrd.cc=%s&xrd.tz=%d", countryCode.c_str(), - timeZone ); + snprintf( cgiBuffer, 1024, "?xrd.cc=%s&xrd.tz=%d&xrd.appname=%s", + countryCode.c_str(), timeZone, XrdSysUtils::ExecName() ); uint16_t cgiLen = strlen( cgiBuffer ); //-------------------------------------------------------------------------- diff --git a/src/XrdClient.cmake b/src/XrdClient.cmake index 7710f5f5462..4b2a751b74b 100644 --- a/src/XrdClient.cmake +++ b/src/XrdClient.cmake @@ -50,6 +50,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_CLIENT_VERSION} SOVERSION ${XRD_CLIENT_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- diff --git a/src/XrdCms/XrdCmsCluster.cc b/src/XrdCms/XrdCmsCluster.cc index 88262c728f4..65301a4d540 100644 --- a/src/XrdCms/XrdCmsCluster.cc +++ b/src/XrdCms/XrdCmsCluster.cc @@ -140,7 +140,7 @@ XrdCmsNode *XrdCmsCluster::Add(XrdLink *lp, int port, int Status, // for (Slot = 0; Slot < STMax; Slot++) if (NodeTab[Slot]) - {if (NodeTab[Slot]->isNode(lp, theNID)) break; + {if (NodeTab[Slot]->isNode(lp, theNID, port)) break; /*Conn*/ if (NodeTab[Slot]->isConn) {if (!NodeTab[Slot]->isPerm && Special) Bump2 = Slot; // Last conn Server diff --git a/src/XrdCms/XrdCmsConfig.cc b/src/XrdCms/XrdCmsConfig.cc index a04d3cd4f56..ba845e6b0ad 100644 --- a/src/XrdCms/XrdCmsConfig.cc +++ b/src/XrdCms/XrdCmsConfig.cc @@ -164,6 +164,29 @@ void *XrdCmsStartSupervising(void *carg) return (void *)0; } +/******************************************************************************/ +/* P i n g C l o c k H a n d l e r */ +/******************************************************************************/ + +namespace XrdCms +{ + +class PingClock : XrdJob +{ +public: + + void DoIt() {Config.PingTick++; + Sched->Schedule((XrdJob *)this,time(0)+Config.AskPing); + } + +static void Start() {static PingClock selfie;} + + PingClock() : XrdJob("ping clock") {DoIt();} + ~PingClock() {} +private: +}; +}; + /******************************************************************************/ /* d e f i n e s */ /******************************************************************************/ @@ -547,6 +570,10 @@ void XrdCmsConfig::DoIt() } } +// Start the ping clock if we are a manager of any kind +// + if (isManager) PingClock::Start(); + // Start the admin thread if we need to, we will not continue until told // to do so by the admin interface. // @@ -660,6 +687,7 @@ void XrdCmsConfig::ConfigDefaults(void) P_pag = 0; AskPerf = 10; // Every 10 pings AskPing = 60; // Every 1 minute + PingTick = 0; MaxDelay = -1; LogPerf = 10; // Every 10 usage requests DiskMin = 10240; // 10GB*1024 (Min partition space) in MB @@ -2073,7 +2101,7 @@ int XrdCmsConfig::xping(XrdSysError *eDest, XrdOucStream &CFile) if (!(val = CFile.GetWord())) {eDest->Emsg("Config", "ping value not specified"); return 1;} if (XrdOuca2x::a2tm(*eDest, "ping interval",val,&ping,0)) return 1; - + if (ping < 3) ping = 3; while((val = CFile.GetWord())) { if (!strcmp("log", val)) diff --git a/src/XrdCms/XrdCmsConfig.hh b/src/XrdCms/XrdCmsConfig.hh index c80245ee529..65f71742bdd 100644 --- a/src/XrdCms/XrdCmsConfig.hh +++ b/src/XrdCms/XrdCmsConfig.hh @@ -87,6 +87,7 @@ int RefReset; // Min seconds before a global ref count reset int RefTurn; // Min references before a global ref count reset int AskPerf; // Seconds between perf queries int AskPing; // Number of ping requests per AskPerf window +int PingTick; // Ping clock value int LogPerf; // AskPerf intervals before logging perf int PortTCP; // TCP Port to listen on diff --git a/src/XrdCms/XrdCmsManager.cc b/src/XrdCms/XrdCmsManager.cc index 6a199e39767..abf0fdd4c88 100644 --- a/src/XrdCms/XrdCmsManager.cc +++ b/src/XrdCms/XrdCmsManager.cc @@ -167,7 +167,7 @@ void XrdCmsManager::Inform(const char *What, struct iovec *vP, int vN, int vT) void XrdCmsManager::Inform(XrdCms::CmsReqCode rCode, int rMod, const char *Arg, int Alen) { - CmsRRHdr Hdr = {0, rCode, (kXR_char)rMod, + CmsRRHdr Hdr = {0, (kXR_char)rCode, (kXR_char)rMod, htons(static_cast(Alen))}; struct iovec ioV[2] = {{(char *)&Hdr, sizeof(Hdr)}, {(char *)Arg, (size_t)Alen}}; diff --git a/src/XrdCms/XrdCmsNode.hh b/src/XrdCms/XrdCmsNode.hh index dbc767b4883..0da26010896 100644 --- a/src/XrdCms/XrdCmsNode.hh +++ b/src/XrdCms/XrdCmsNode.hh @@ -125,8 +125,8 @@ inline int isNode(const char *hn) {return Link && !strcmp(Link->Host(), hn);} inline int isNode(const XrdNetAddr *addr) {return netID.Same(addr);} -inline int isNode(XrdLink *lp, const char *nid) - {return netID.Same(lp->NetAddr(),true) +inline int isNode(XrdLink *lp, const char *nid, int port) + {return netID.Same(lp->NetAddr()) && port == Port && (nid ? !strcmp(myNID, nid) : 1); } inline char *Name() {return (myName ? myName : (char *)"?");} diff --git a/src/XrdCms/XrdCmsProtocol.cc b/src/XrdCms/XrdCmsProtocol.cc index fa972b8284b..3a73b2b962b 100644 --- a/src/XrdCms/XrdCmsProtocol.cc +++ b/src/XrdCms/XrdCmsProtocol.cc @@ -790,7 +790,7 @@ const char *XrdCmsProtocol::Dispatch(Bearing cDir, int maxWait, int maxTries) : "server not responding"); const char *myArgs, *myArgt; char buff[8]; - int rc, toLeft = maxTries; + int rc, toLeft = maxTries, lastPing = Config.PingTick; // Dispatch runs with the current thread bound to the link. // @@ -801,11 +801,22 @@ const char *XrdCmsProtocol::Dispatch(Bearing cDir, int maxWait, int maxTries) do{if ((rc = Link->RecvAll((char *)&Data->Request, ReqSize, maxWait)) < 0) {if (rc != -ETIMEDOUT) return "request read failed"; if (!toLeft--) return toRC; - if (cDir == isDown && Link->Send((char *)&Ping, sizeof(Ping)) < 0) - return "server unreachable"; + if (cDir == isDown) + {if (Link->Send((char *)&Ping, sizeof(Ping)) < 0) + return "server unreachable"; + lastPing = Config.PingTick; + } continue; } +// Check if we need to ping as non-response activity may cause ping misses +// + if (cDir == isDown && lastPing != Config.PingTick) + {if (Link->Send((char *)&Ping, sizeof(Ping)) < 0) + return "server unreachable"; + lastPing = Config.PingTick; + } + // Decode the length and get the rest of the data // toLeft = maxTries; diff --git a/src/XrdCms/XrdCmsTalk.cc b/src/XrdCms/XrdCmsTalk.cc index 599637ef252..7e4f41de66f 100644 --- a/src/XrdCms/XrdCmsTalk.cc +++ b/src/XrdCms/XrdCmsTalk.cc @@ -119,7 +119,7 @@ const char *XrdCmsTalk::Respond(XrdLink *Link, XrdCms::CmsRspCode rcode, char *buff, int blen) { static const unsigned short ovhd = sizeof(kXR_unt32); - CmsResponse Resp = {{0, rcode, 0, + CmsResponse Resp = {{0, (kXR_char)rcode, 0, htons(static_cast(blen+ovhd))}, 0}; struct iovec ioV[2] = {{(char *)&Resp, sizeof(Resp)}, { buff, (size_t)blen}}; diff --git a/src/XrdCrypto.cmake b/src/XrdCrypto.cmake index c0fe39b561b..6016bc64bf9 100644 --- a/src/XrdCrypto.cmake +++ b/src/XrdCrypto.cmake @@ -45,6 +45,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_CRYPTO_VERSION} SOVERSION ${XRD_CRYPTO_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- @@ -72,6 +73,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_CRYPTO_LITE_VERSION} SOVERSION ${XRD_CRYPTO_LITE_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- @@ -107,6 +109,7 @@ if( BUILD_CRYPTO ) PROPERTIES VERSION ${XRD_CRYPTO_SSL_VERSION} SOVERSION ${XRD_CRYPTO_SSL_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) endif() diff --git a/src/XrdFfs.cmake b/src/XrdFfs.cmake index 0fd92426063..1b5f824a573 100644 --- a/src/XrdFfs.cmake +++ b/src/XrdFfs.cmake @@ -33,6 +33,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_FFS_VERSION} SOVERSION ${XRD_FFS_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- diff --git a/src/XrdHTTP.cmake b/src/XrdHTTP.cmake index 9947d38c572..06665144fce 100644 --- a/src/XrdHTTP.cmake +++ b/src/XrdHTTP.cmake @@ -20,7 +20,15 @@ set_target_properties(XrdHttp PROPERTIES VERSION "${XRD_HTTP_VERSION}" SOVERSION "${XRD_HTTP_SOVERSION}") -target_link_libraries(XrdHttp XrdMain dl ssl ) +target_link_libraries(XrdHttp XrdServer XrdXrootd XrdUtils XrdCrypto dl pthread ssl ) + +set_target_properties( + XrdHttp + PROPERTIES + VERSION ${XRD_HTTP_VERSION} + SOVERSION ${XRD_HTTP_SOVERSION} + INTERFACE_LINK_LIBRARIES "" + LINK_INTERFACE_LIBRARIES "" ) # Install directive. install(TARGETS XrdHttp diff --git a/src/XrdHTTP/XrdHttpProtocol.cc b/src/XrdHTTP/XrdHttpProtocol.cc index 104afd93cc1..258c674496a 100644 --- a/src/XrdHTTP/XrdHttpProtocol.cc +++ b/src/XrdHTTP/XrdHttpProtocol.cc @@ -82,7 +82,7 @@ char *XrdHttpProtocol::secretkey = 0; int XrdHttpProtocol::sslverifydepth = 9; SSL_CTX *XrdHttpProtocol::sslctx = 0; BIO *XrdHttpProtocol::sslbio_err = 0; - +XrdCryptoFactory *XrdHttpProtocol::myCryptoFactory = 0; XrdHttpSecXtractor *XrdHttpProtocol::secxtractor = 0; static const unsigned char *s_server_session_id_context = (const unsigned char *) "XrdHTTPSessionCtx"; @@ -1263,6 +1263,18 @@ int verify_callback(int ok, X509_STORE_CTX * store) { int XrdHttpProtocol::InitSecurity() { +#ifdef HAVE_XRDCRYPTO +#ifndef WIN32 + // Borrow the initialization of XrdCryptossl, in order to share the + // OpenSSL threading bits + if (!(myCryptoFactory = XrdCryptoFactory::GetCryptoFactory("ssl"))) { + cerr << "Cannot instantiate crypto factory ssl" << endl; + exit(1); + } + +#endif +#endif + SSL_library_init(); SSL_load_error_strings(); OpenSSL_add_all_ciphers(); diff --git a/src/XrdHTTP/XrdHttpProtocol.hh b/src/XrdHTTP/XrdHttpProtocol.hh index 86e010a0fcc..336ec836726 100644 --- a/src/XrdHTTP/XrdHttpProtocol.hh +++ b/src/XrdHTTP/XrdHttpProtocol.hh @@ -41,7 +41,7 @@ #include "XrdSys/XrdSysError.hh" #include "XrdSys/XrdSysPthread.hh" #include "XrdSec/XrdSecInterface.hh" - +#include "XrdCrypto/XrdCryptoFactory.hh" #include "Xrd/XrdObject.hh" #include "XrdXrootd/XrdXrootdBridge.hh" #include "XrdOuc/XrdOucStream.hh" @@ -216,6 +216,8 @@ private: /// Flag to tell if the https handshake has finished, in the case of an https /// connection being established bool ssldone; + + static XrdCryptoFactory *myCryptoFactory; protected: diff --git a/src/XrdOfs.cmake b/src/XrdOfs.cmake index 5b75b569402..d6a657971eb 100644 --- a/src/XrdOfs.cmake +++ b/src/XrdOfs.cmake @@ -48,6 +48,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_OFS_VERSION} SOVERSION ${XRD_OFS_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- diff --git a/src/XrdPlugins.cmake b/src/XrdPlugins.cmake index ab87081e432..a0f629e4724 100644 --- a/src/XrdPlugins.cmake +++ b/src/XrdPlugins.cmake @@ -31,6 +31,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_PSS_VERSION} SOVERSION ${XRD_PSS_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- @@ -58,6 +59,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_BWM_VERSION} SOVERSION ${XRD_BWM_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- diff --git a/src/XrdPosix.cmake b/src/XrdPosix.cmake index e24b18fddd2..6f390025d40 100644 --- a/src/XrdPosix.cmake +++ b/src/XrdPosix.cmake @@ -36,6 +36,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_POSIX_VERSION} SOVERSION ${XRD_POSIX_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- @@ -61,6 +62,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_POSIX_PRELOAD_VERSION} SOVERSION ${XRD_POSIX_PRELOAD_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- diff --git a/src/XrdSec.cmake b/src/XrdSec.cmake index d82dfc044c9..51baf81a32d 100644 --- a/src/XrdSec.cmake +++ b/src/XrdSec.cmake @@ -40,6 +40,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_SEC_VERSION} SOVERSION ${XRD_SEC_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) # FIXME: test @@ -67,6 +68,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_SEC_PWD_VERSION} SOVERSION ${XRD_SEC_PWD_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- @@ -102,6 +104,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_SEC_SSS_VERSION} SOVERSION ${XRD_SEC_SSS_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- @@ -133,6 +136,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_SEC_UNIX_VERSION} SOVERSION ${XRD_SEC_UNIX_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- diff --git a/src/XrdSecgsi.cmake b/src/XrdSecgsi.cmake index 61f6aabe7d0..5b616a0de6f 100644 --- a/src/XrdSecgsi.cmake +++ b/src/XrdSecgsi.cmake @@ -37,6 +37,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_SEC_GSI_VERSION} SOVERSION ${XRD_SEC_GSI_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- @@ -56,6 +57,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_SEC_GSI_GMAPLDAP_VERSION} SOVERSION ${XRD_SEC_GSI_GMAPLDAP_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- @@ -75,6 +77,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_SEC_GSI_AUTHZVO_VERSION} SOVERSION ${XRD_SEC_GSI_AUTHZVO_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- @@ -95,6 +98,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_SEC_GSI_GMAPDN_VERSION} SOVERSION ${XRD_SEC_GSI_GMAPDN_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- diff --git a/src/XrdSeckrb5.cmake b/src/XrdSeckrb5.cmake index 498f87d1c8f..fd4a37f4f62 100644 --- a/src/XrdSeckrb5.cmake +++ b/src/XrdSeckrb5.cmake @@ -25,6 +25,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_SEC_KRB5_VERSION} SOVERSION ${XRD_SEC_KRB5_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- diff --git a/src/XrdServer.cmake b/src/XrdServer.cmake index b790d867bef..5eb47a4e945 100644 --- a/src/XrdServer.cmake +++ b/src/XrdServer.cmake @@ -109,6 +109,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_SERVER_VERSION} SOVERSION ${XRD_SERVER_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- @@ -162,6 +163,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_XROOTD_VERSION} SOVERSION ${XRD_XROOTD_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- diff --git a/src/XrdUtils.cmake b/src/XrdUtils.cmake index 765b772199d..356a975d470 100644 --- a/src/XrdUtils.cmake +++ b/src/XrdUtils.cmake @@ -177,6 +177,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_UTILS_VERSION} SOVERSION ${XRD_UTILS_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- @@ -197,6 +198,7 @@ set_target_properties( PROPERTIES VERSION ${XRD_ZCRC32_VERSION} SOVERSION ${XRD_ZCRC32_SOVERSION} + INTERFACE_LINK_LIBRARIES "" LINK_INTERFACE_LIBRARIES "" ) #------------------------------------------------------------------------------- diff --git a/src/XrdXrootd/XrdXrootdXeq.cc b/src/XrdXrootd/XrdXrootdXeq.cc index 848dee8b6ce..5d171781dd4 100644 --- a/src/XrdXrootd/XrdXrootdXeq.cc +++ b/src/XrdXrootd/XrdXrootdXeq.cc @@ -2295,7 +2295,7 @@ int XrdXrootdProtocol::do_Stat() rc = fp->XrdSfsp->stat(&buf); TRACEP(FS, "stat rc=" <