Browse Source

Do not use O_RDWR on semaphores on FreeBSD

This is forbidden (returns EINVAL)
tags/v1.9.20
Greg V falkTX <falktx@falktx.com> 6 years ago
parent
commit
155d6ea3f9
1 changed files with 4 additions and 2 deletions
  1. +4
    -2
      posix/JackPosixSemaphore.cpp

+ 4
- 2
posix/JackPosixSemaphore.cpp View File

@@ -32,8 +32,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.


#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
#define JACK_SEM_PREFIX "/jack_sem" #define JACK_SEM_PREFIX "/jack_sem"
#define SEM_DEFAULT_O 0
#else #else
#define JACK_SEM_PREFIX "jack_sem" #define JACK_SEM_PREFIX "jack_sem"
#define SEM_DEFAULT_O O_RDWR
#endif #endif


namespace Jack namespace Jack
@@ -152,7 +154,7 @@ bool JackPosixSemaphore::Allocate(const char* name, const char* server_name, int
BuildName(name, server_name, fName, sizeof(fName)); BuildName(name, server_name, fName, sizeof(fName));
jack_log("JackPosixSemaphore::Allocate name = %s val = %ld", fName, value); jack_log("JackPosixSemaphore::Allocate name = %s val = %ld", fName, value);


if ((fSemaphore = sem_open(fName, O_CREAT | O_RDWR, 0777, value)) == (sem_t*)SEM_FAILED) {
if ((fSemaphore = sem_open(fName, O_CREAT | SEM_DEFAULT_O, 0777, value)) == (sem_t*)SEM_FAILED) {
jack_error("Allocate: can't check in named semaphore name = %s err = %s", fName, strerror(errno)); jack_error("Allocate: can't check in named semaphore name = %s err = %s", fName, strerror(errno));
return false; return false;
} else { } else {
@@ -180,7 +182,7 @@ bool JackPosixSemaphore::ConnectInput(const char* name, const char* server_name)
return true; return true;
} }


if ((fSemaphore = sem_open(fName, O_RDWR)) == (sem_t*)SEM_FAILED) {
if ((fSemaphore = sem_open(fName, SEM_DEFAULT_O)) == (sem_t*)SEM_FAILED) {
jack_error("Connect: can't connect named semaphore name = %s err = %s", fName, strerror(errno)); jack_error("Connect: can't connect named semaphore name = %s err = %s", fName, strerror(errno));
return false; return false;
} else if (fSemaphore) { } else if (fSemaphore) {


Loading…
Cancel
Save