forked from premiere/premiere-libtorrent
commit
bf20af1e05
|
@ -3,11 +3,18 @@
|
|||
|
||||
#include <boost/system/error_code.hpp>
|
||||
#include <boost/system/system_error.hpp>
|
||||
#include "libtorrent/config.hpp"
|
||||
#include "libtorrent/ed25519.hpp"
|
||||
|
||||
#ifndef ED25519_NO_SEED
|
||||
|
||||
#ifdef _WIN32
|
||||
#if TORRENT_USE_CRYPTOGRAPHIC_BUFFER
|
||||
#include <robuffer.h>
|
||||
#include <wrl/client.h>
|
||||
using namespace Windows::Security::Cryptography;
|
||||
using namespace Windows::Storage::Streams;
|
||||
using namespace Microsoft::WRL;
|
||||
#elif defined _WIN32
|
||||
#include <Windows.h>
|
||||
#include <Wincrypt.h>
|
||||
#else
|
||||
|
@ -15,7 +22,12 @@
|
|||
#endif
|
||||
|
||||
void ed25519_create_seed(unsigned char *seed) {
|
||||
#ifdef _WIN32
|
||||
#if TORRENT_USE_CRYPTOGRAPHIC_BUFFER
|
||||
IBuffer^ seedBuffer = CryptographicBuffer::GenerateRandom(32);
|
||||
ComPtr<IBufferByteAccess> bufferByteAccess;
|
||||
reinterpret_cast<IInspectable*>(seedBuffer)->QueryInterface(IID_PPV_ARGS(&bufferByteAccess));
|
||||
bufferByteAccess->Buffer(&seed);
|
||||
#elif defined _WIN32
|
||||
HCRYPTPROV prov;
|
||||
|
||||
if (!CryptAcquireContext(&prov, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) {
|
||||
|
|
|
@ -1279,7 +1279,7 @@ namespace libtorrent
|
|||
virtual std::string message() const;
|
||||
TORRENT_NOT_DISCARDABLE
|
||||
|
||||
#ifndef TORRENT_NO_DEPRECATE
|
||||
#if !defined(TORRENT_NO_DEPRECATE) && !defined(TORRENT_WINRT)
|
||||
// the interface libtorrent attempted to listen on
|
||||
std::string interface;
|
||||
#endif
|
||||
|
|
|
@ -275,6 +275,15 @@ POSSIBILITY OF SUCH DAMAGE.
|
|||
#define TORRENT_USE_PREADV 1
|
||||
#define TORRENT_USE_PWRITEV 1
|
||||
|
||||
// ==== WINRT ===
|
||||
#if defined(WINAPI_FAMILY_PARTITION)
|
||||
# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) \
|
||||
&& !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
|
||||
# define TORRENT_WINRT
|
||||
# define TORRENT_USE_CRYPTOGRAPHIC_BUFFER 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
// ==== SOLARIS ===
|
||||
#elif defined sun || defined __sun
|
||||
#define TORRENT_SOLARIS
|
||||
|
|
|
@ -65,16 +65,16 @@ namespace libtorrent
|
|||
int get_file_attributes(std::string const& p)
|
||||
{
|
||||
#ifdef TORRENT_WINDOWS
|
||||
|
||||
WIN32_FILE_ATTRIBUTE_DATA attr;
|
||||
#if TORRENT_USE_WSTRING
|
||||
std::wstring path = convert_to_wstring(p);
|
||||
DWORD attr = GetFileAttributesW(path.c_str());
|
||||
GetFileAttributesExW(path.c_str(), GetFileExInfoStandard, &attr);
|
||||
#else
|
||||
std::string path = convert_to_native(p);
|
||||
DWORD attr = GetFileAttributesA(path.c_str());
|
||||
GetFileAttributesExA(path.c_str(), GetFileExInfoStandard, &attr);
|
||||
#endif // TORRENT_USE_WSTRING
|
||||
if (attr == INVALID_FILE_ATTRIBUTES) return 0;
|
||||
if (attr & FILE_ATTRIBUTE_HIDDEN) return file_storage::attribute_hidden;
|
||||
if (attr.dwFileAttributes == INVALID_FILE_ATTRIBUTES) return 0;
|
||||
if (attr.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) return file_storage::attribute_hidden;
|
||||
return 0;
|
||||
#else
|
||||
struct stat s;
|
||||
|
|
|
@ -63,7 +63,7 @@ using libtorrent::dht::node;
|
|||
using libtorrent::dht::node_id;
|
||||
using libtorrent::dht::packet_t;
|
||||
using libtorrent::dht::msg;
|
||||
using namespace libtorrent::detail;
|
||||
using libtorrent::detail::write_endpoint;
|
||||
|
||||
enum
|
||||
{
|
||||
|
|
|
@ -105,7 +105,7 @@ namespace libtorrent
|
|||
condition_variable::condition_variable()
|
||||
: m_num_waiters(0)
|
||||
{
|
||||
m_sem = CreateSemaphore(0, 0, INT_MAX, 0);
|
||||
m_sem = CreateSemaphoreEx(0, 0, INT_MAX, 0, 0, SEMAPHORE_ALL_ACCESS);
|
||||
}
|
||||
|
||||
condition_variable::~condition_variable()
|
||||
|
@ -118,7 +118,7 @@ namespace libtorrent
|
|||
TORRENT_ASSERT(l.locked());
|
||||
++m_num_waiters;
|
||||
l.unlock();
|
||||
WaitForSingleObject(m_sem, INFINITE);
|
||||
WaitForSingleObjectEx(m_sem, INFINITE, FALSE);
|
||||
l.lock();
|
||||
--m_num_waiters;
|
||||
}
|
||||
|
@ -128,7 +128,7 @@ namespace libtorrent
|
|||
TORRENT_ASSERT(l.locked());
|
||||
++m_num_waiters;
|
||||
l.unlock();
|
||||
WaitForSingleObject(m_sem, total_milliseconds(rel_time));
|
||||
WaitForSingleObjectEx(m_sem, total_milliseconds(rel_time), FALSE);
|
||||
l.lock();
|
||||
--m_num_waiters;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue