You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
3.9 KiB
181 lines
3.9 KiB
/*++
|
|
|
|
Copyright (c) 1994 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
handle.hxx
|
|
|
|
Abstract:
|
|
|
|
Contains client-side internet handle class
|
|
|
|
Author:
|
|
|
|
Madan Appiah (madana) 16-Nov-1994
|
|
|
|
Environment:
|
|
|
|
User Mode - Win32
|
|
|
|
Revision History:
|
|
|
|
|
|
Sophia Chung (sophiac) 12-Feb-1995 (added FTP handle obj. class defs)
|
|
|
|
--*/
|
|
|
|
#ifndef _HINET_
|
|
#define _HINET_
|
|
|
|
#include "hndlobj.hxx"
|
|
#include "hbase.hxx"
|
|
|
|
//
|
|
// types
|
|
//
|
|
|
|
typedef
|
|
DWORD
|
|
(*URLGEN_FUNC)(
|
|
INTERNET_SCHEME,
|
|
LPSTR,
|
|
LPSTR,
|
|
LPSTR,
|
|
LPSTR,
|
|
DWORD,
|
|
LPSTR *,
|
|
LPDWORD
|
|
);
|
|
|
|
//
|
|
// typedef virtual close function
|
|
//
|
|
|
|
typedef BOOL (*CLOSE_HANDLE_FUNC)(HINTERNET);
|
|
typedef BOOL (*CONNECT_CLOSE_HANDLE_FUNC)(HINTERNET, DWORD);
|
|
|
|
|
|
//
|
|
// forward references
|
|
//
|
|
|
|
class CCookieJar;
|
|
|
|
|
|
//These parameters make most sense on request handle, but we're good enuf to allow apps. to set this
|
|
// on the global handle at the cost of allocing this.
|
|
struct OPTIONAL_SESSION_PARAMS
|
|
{
|
|
DWORD dwResolveTimeout;
|
|
DWORD dwConnectTimeout;
|
|
DWORD dwConnectRetries;
|
|
DWORD dwSendTimeout;
|
|
DWORD dwReceiveTimeout;
|
|
|
|
OPTIONAL_SESSION_PARAMS()
|
|
{
|
|
dwResolveTimeout = GlobalResolveTimeout;
|
|
dwConnectTimeout = GlobalConnectTimeout;
|
|
dwConnectRetries = GlobalConnectRetries;
|
|
dwSendTimeout = GlobalSendTimeout;
|
|
dwReceiveTimeout = GlobalReceiveTimeout;
|
|
}
|
|
};
|
|
typedef OPTIONAL_SESSION_PARAMS* POPTIONAL_SESSION_PARAMS;
|
|
|
|
class CResolverCache;
|
|
|
|
class INTERNET_HANDLE_OBJECT : public INTERNET_HANDLE_BASE
|
|
{
|
|
//
|
|
// This is the class to place all members and methods that should
|
|
// not be inherited by connect handles and request handles.
|
|
//
|
|
|
|
SERIALIZED_LIST _ServerInfoList;
|
|
OPTIONAL_SESSION_PARAMS * _pOptionalParams;
|
|
// Hostent cache is now a per-session object
|
|
CResolverCache* _pResolverCache;
|
|
|
|
SECURITY_CACHE_LIST _SessionCertCache;
|
|
BOOL _fUseSessionCertCache;
|
|
|
|
public:
|
|
|
|
CCookieJar * _CookieJar;
|
|
|
|
ChunkFilter _ChunkFilter;
|
|
|
|
public:
|
|
|
|
BOOL SetTimeout(DWORD dwTimeoutOption, DWORD dwTimeoutValue);
|
|
BOOL GetTimeout(DWORD dwTimeoutOption, DWORD* pdwTimeoutValue);
|
|
BOOL SetTimeouts(
|
|
IN DWORD dwResolveTimeout,
|
|
IN DWORD dwConnectTimeout,
|
|
IN DWORD dwSendTimeout,
|
|
IN DWORD dwReceiveTimeout
|
|
);
|
|
OPTIONAL_SESSION_PARAMS * GetOptionalParams()
|
|
{
|
|
return _pOptionalParams;
|
|
}
|
|
|
|
//This should always return a positive value because if we failed to allocate this in the
|
|
//constructor, we bailed with _Status=ERROR_NOT_ENOUGH_MEMORY
|
|
CResolverCache* GetResolverCache()
|
|
{
|
|
return _pResolverCache;
|
|
}
|
|
|
|
//
|
|
// Server Info methods.
|
|
//
|
|
DWORD GetServerInfo(
|
|
IN LPSTR lpszHostName,
|
|
IN DWORD dwServiceType,
|
|
IN BOOL bDoResolution,
|
|
OUT CServerInfo * * lplpServerInfo
|
|
);
|
|
CServerInfo * FindServerInfo(IN LPSTR lpszHostName);
|
|
VOID PurgeServerInfoList(IN BOOL bForce);
|
|
|
|
VOID PurgeKeepAlives(IN DWORD dwForce);
|
|
|
|
// For winhttp5, this should be exposed as an option
|
|
VOID SetUseSslSessionCache(IN BOOL fEnable)
|
|
{
|
|
_fUseSessionCertCache = fEnable;
|
|
}
|
|
|
|
BOOL IsSslCachePerSession()
|
|
{
|
|
return _fUseSessionCertCache;
|
|
}
|
|
|
|
SECURITY_CACHE_LIST *GetSslSessionCache()
|
|
{
|
|
if (_fUseSessionCertCache)
|
|
return &_SessionCertCache;
|
|
else
|
|
return &GlobalCertCache;
|
|
}
|
|
|
|
//
|
|
// Constructor
|
|
//
|
|
INTERNET_HANDLE_OBJECT::INTERNET_HANDLE_OBJECT
|
|
(LPCSTR ua, DWORD access, LPSTR proxy, LPSTR bypass, DWORD flags);
|
|
|
|
~INTERNET_HANDLE_OBJECT ( );
|
|
};
|
|
|
|
|
|
//
|
|
// prototypes
|
|
//
|
|
|
|
INTERNET_HANDLE_OBJECT* GetRootHandle (HANDLE_OBJECT* pHandle);
|
|
|
|
#endif // _HINET_
|