Take notice of UPNP_USE_RWLOCK flag.
Updated threadutil to use mutexes instead of read-write locks if UPNP_USE_RWLOCK is false (0).
This commit is contained in:
parent
0bec9ec1ae
commit
2b399b1791
13
ChangeLog
13
ChangeLog
@ -2,6 +2,19 @@
|
|||||||
Version 1.6.7
|
Version 1.6.7
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
|
|
||||||
|
2010-09-10 Warwick Harvey <warwick.harvey(at)tieto.com>
|
||||||
|
Patch to take notice of UPNP_USE_RWLOCK flag
|
||||||
|
|
||||||
|
The configure.ac file included with UPnP checks for the presence of the
|
||||||
|
pthread_rwlock_t type, and then sets the value of the UPNP_USE_RWLOCK
|
||||||
|
flag appropriately. However, this flag is not referenced at all in the
|
||||||
|
source code, and thus the code does not compile on systems that don't
|
||||||
|
have the pthread_rwlock_t type (such as Android).
|
||||||
|
|
||||||
|
Please find attached a patch (against the current 1.6.x head) that checks
|
||||||
|
the value of this flag and falls back on using mutexes if read-write
|
||||||
|
locks are not available.
|
||||||
|
|
||||||
2010-09-10 Jean Sigwald <jean.sigwald(at)orange-ftgroup.com>
|
2010-09-10 Jean Sigwald <jean.sigwald(at)orange-ftgroup.com>
|
||||||
I discovered a reliable denial-of-service issue on the last stable
|
I discovered a reliable denial-of-service issue on the last stable
|
||||||
release of libupnp (1.6.6) remotely triggerable by any
|
release of libupnp (1.6.6) remotely triggerable by any
|
||||||
|
@ -171,7 +171,9 @@ typedef pthread_condattr_t ithread_condattr_t;
|
|||||||
* typedef to pthread_rwlockattr_t
|
* typedef to pthread_rwlockattr_t
|
||||||
* Internal Use Only
|
* Internal Use Only
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
#if UPNP_USE_RWLOCK
|
||||||
typedef pthread_rwlockattr_t ithread_rwlockattr_t;
|
typedef pthread_rwlockattr_t ithread_rwlockattr_t;
|
||||||
|
#endif /* UPNP_USE_RWLOCK */
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -182,7 +184,9 @@ typedef pthread_rwlockattr_t ithread_rwlockattr_t;
|
|||||||
* typedef to pthread_rwlock_t
|
* typedef to pthread_rwlock_t
|
||||||
* Internal Use Only
|
* Internal Use Only
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
#if UPNP_USE_RWLOCK
|
||||||
typedef pthread_rwlock_t ithread_rwlock_t;
|
typedef pthread_rwlock_t ithread_rwlock_t;
|
||||||
|
#endif /* UPNP_USE_RWLOCK */
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -443,7 +447,9 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* Always returns 0.
|
* Always returns 0.
|
||||||
* See man page for pthread_rwlockattr_init
|
* See man page for pthread_rwlockattr_init
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#define ithread_rwlockattr_init pthread_rwlockattr_init
|
#if UPNP_USE_RWLOCK
|
||||||
|
#define ithread_rwlockattr_init pthread_rwlockattr_init
|
||||||
|
#endif /* UPNP_USE_RWLOCK */
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -459,7 +465,9 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* Always returns 0.
|
* Always returns 0.
|
||||||
* See man page for pthread_rwlockattr_destroy
|
* See man page for pthread_rwlockattr_destroy
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#define ithread_rwlockattr_destroy pthread_rwlockattr_destroy
|
#if UPNP_USE_RWLOCK
|
||||||
|
#define ithread_rwlockattr_destroy pthread_rwlockattr_destroy
|
||||||
|
#endif /* UPNP_USE_RWLOCK */
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -480,7 +488,9 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* Returns EINVAL if the kind is not supported.
|
* Returns EINVAL if the kind is not supported.
|
||||||
* See man page for pthread_rwlockattr_setkind_np
|
* See man page for pthread_rwlockattr_setkind_np
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#define ithread_rwlockatttr_setpshared pthread_rwlockatttr_setpshared
|
#if UPNP_USE_RWLOCK
|
||||||
|
#define ithread_rwlockatttr_setpshared pthread_rwlockatttr_setpshared
|
||||||
|
#endif /* UPNP_USE_RWLOCK */
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -501,7 +511,9 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* Always returns 0.
|
* Always returns 0.
|
||||||
* See man page for pthread_rwlockatttr_getpshared
|
* See man page for pthread_rwlockatttr_getpshared
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#define ithread_rwlockatttr_getpshared pthread_rwlockatttr_getpshared
|
#if UPNP_USE_RWLOCK
|
||||||
|
#define ithread_rwlockatttr_getpshared pthread_rwlockatttr_getpshared
|
||||||
|
#endif /* UPNP_USE_RWLOCK */
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -519,7 +531,9 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* Always returns 0.
|
* Always returns 0.
|
||||||
* See man page for pthread_rwlock_init
|
* See man page for pthread_rwlock_init
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#define ithread_rwlock_init pthread_rwlock_init
|
#if UPNP_USE_RWLOCK
|
||||||
|
#define ithread_rwlock_init pthread_rwlock_init
|
||||||
|
#endif /* UPNP_USE_RWLOCK */
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -536,7 +550,9 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* Always returns 0.
|
* Always returns 0.
|
||||||
* See man page for pthread_rwlock_rdlock
|
* See man page for pthread_rwlock_rdlock
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#define ithread_rwlock_rdlock pthread_rwlock_rdlock
|
#if UPNP_USE_RWLOCK
|
||||||
|
#define ithread_rwlock_rdlock pthread_rwlock_rdlock
|
||||||
|
#endif /* UPNP_USE_RWLOCK */
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -553,7 +569,9 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* Always returns 0.
|
* Always returns 0.
|
||||||
* See man page for pthread_rwlock_wrlock
|
* See man page for pthread_rwlock_wrlock
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#define ithread_rwlock_wrlock pthread_rwlock_wrlock
|
#if UPNP_USE_RWLOCK
|
||||||
|
#define ithread_rwlock_wrlock pthread_rwlock_wrlock
|
||||||
|
#endif /* UPNP_USE_RWLOCK */
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -571,7 +589,9 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* Always returns 0.
|
* Always returns 0.
|
||||||
* See man page for pthread_rwlock_unlock
|
* See man page for pthread_rwlock_unlock
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#define ithread_rwlock_unlock pthread_rwlock_unlock
|
#if UPNP_USE_RWLOCK
|
||||||
|
#define ithread_rwlock_unlock pthread_rwlock_unlock
|
||||||
|
#endif /* UPNP_USE_RWLOCK */
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -590,7 +610,9 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* Always returns 0.
|
* Always returns 0.
|
||||||
* See man page for pthread_rwlock_destroy
|
* See man page for pthread_rwlock_destroy
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#define ithread_rwlock_destroy pthread_rwlock_destroy
|
#if UPNP_USE_RWLOCK
|
||||||
|
#define ithread_rwlock_destroy pthread_rwlock_destroy
|
||||||
|
#endif /* UPNP_USE_RWLOCK */
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
Loading…
Reference in New Issue
Block a user