Go to file
Norbert Federa cdcdec99bc OpenSSL thread safety
freerdp/winpr had the following issues:
* The non reentrant SSL_library_init() was called concurrently (crash)
* Missing code/api to set the eventually required OpenSSL static and dynamic locking callbacks
* Missing code/api to free the application-global or thread-local OpenSSL data and tables

This commit creates two new winpr functions:

BOOL winpr_InitializeSSL(DWORD flags):

Use the flag WINPR_SSL_INIT_ALREADY_INITIALIZED if you want to tell winpr that
your application has already initialized OpenSSL.
If required use the flag WINPR_SSL_INIT_ENABLE_LOCKING to tell winpr that it
should set the OpenSSL static and dynamic locking callbacks.
Otherwise just call it with the flag WINPR_SSL_INIT_DEFAULT.

The recommended way is that your application calls this function once before
any threads are created. However, in order to support lazy OpenSSL library
initialization winpr_InitializeSSL() can also safely be called multiple times
and concurrently because it uses the new InitOnceExecuteOnce() function to
guarantee that the initialization is only performed successfully once during
the life time of the calling process.

BOOL winpr_CleanupSSL(DWORD flags):

If you create a thread that uses SSL you should call this function before the
thread returns using the flag WINPR_SSL_CLEANUP_THREAD in order to clean up
the thread-local OpenSSL data and tables.
Call the function with the flag WINPR_SSL_CLEANUP_GLOBAL before terminating
your application.

Note: This commit only replaced the current occurences of the
SSL_load_error_strings(); SSL_library_init(); pairs in the freerdp source
with winpr_InitializeSSL(). None of the server or client applications has been
changed according to the recommended usage described above (TBDL).
2014-07-28 21:55:57 +02:00
channels echo: add server echo channel api. 2014-07-15 11:42:12 +08:00
ci/cmake-preloads android build: updated ssl path variable 2013-12-08 14:18:50 +01:00
client return status instead of returning directly 2014-07-28 18:49:18 +02:00
cmake android toolchain: add back setting of ANDROID_SDK 2014-07-14 07:58:32 -04:00
cunit winpr: always build "monolitic" 2014-07-10 11:10:58 +02:00
docs Merge pull request #1629 from bmiklautz/update_pull_1609 2014-05-20 22:10:17 +02:00
external cmake: added external directory 2012-11-01 13:50:49 -04:00
include Remove execute bit from many files 2014-07-20 00:52:35 -04:00
libfreerdp OpenSSL thread safety 2014-07-28 21:55:57 +02:00
resources cmake: get initial windows cpack generators to work 2012-10-17 10:46:40 -04:00
scripts * Fixed android setup script, if run as update. (git fetch instead of git pull) 2014-07-13 13:35:11 +02:00
server server: allow partial channel read (fix rdpsnd). 2014-07-14 20:00:38 +08:00
third-party cmake: Allow project-wide includes for third-party components 2013-04-04 12:28:52 +02:00
winpr OpenSSL thread safety 2014-07-28 21:55:57 +02:00
.gitignore Remove execute bit from many files 2014-07-20 00:52:35 -04:00
ChangeLog changelog: update for 1.0.1 2012-02-09 21:01:42 -05:00
CMakeCPack.cmake cmake: fix package generation on Mac OS X 2013-09-09 21:42:25 -04:00
CMakeCPackOptions.cmake.in cmake: fix package generation on Mac OS X 2013-09-09 21:42:25 -04:00
CMakeLists.txt Remove execute bit from many files 2014-07-20 00:52:35 -04:00
config.h.in Remove execute bit from many files 2014-07-20 00:52:35 -04:00
freerdp.pc.in update and improve pkg-config files 2014-04-23 13:12:23 +02:00
freerdp.spec channels: refactoring of channels cmake scripts with macros 2012-10-17 02:14:19 -04:00
FreeRDPConfig.cmake.in cmake: export to different directory, export more build info 2013-10-29 15:16:44 -04:00
LICENSE FreeRDP 1.0: initial commit 2011-06-30 15:12:51 -04:00
README Updated links in README 2013-05-27 18:29:24 +02:00
winpr.pc.in update and improve pkg-config files 2014-04-23 13:12:23 +02:00

FreeRDP: A Remote Desktop Protocol Implementation
=================================================

FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license.
Enjoy the freedom of using your software wherever you want, the way you want it, in a world where
interoperability can finally liberate your computing experience.

Resources
---------

Project website: http://www.freerdp.com/
Issue tracker: https://github.com/FreeRDP/FreeRDP/issues
Sources: https://github.com/FreeRDP/FreeRDP/
Wiki: https://github.com/FreeRDP/FreeRDP/wiki
Downloads and other resources: http://pub.freerdp.com
API doc: http://pub.freerdp.com/api/

IRC channel: #freerdp @ irc.freenode.net
Mailing list: https://lists.sourceforge.net/lists/listinfo/freerdp-devel

Microsoft Open Specifications
-----------------------------

Information regarding the Microsoft Open Specifications can be found at:
http://www.microsoft.com/openspecifications/

A list of reference documentation is maintained here:
https://github.com/FreeRDP/FreeRDP/wiki/Reference-Documentation

Compilation
-----------

Instructions on how to get started compiling FreeRDP can be found on the wiki:
https://github.com/FreeRDP/FreeRDP/wiki/Compilation