OUTBOUND_REQUESTS[r].span = span;
if (sangomabc_connection_write(&sangoma_boost_data->mcon, &event) <= 0) {
- zap_log(ZAP_LOG_CRIT, "Failed to tx on ISUP socket [%s]\n", strerror(errno));
+ zap_log(ZAP_LOG_CRIT, "Failed to tx boost event [%s]\n", strerror(errno));
status = ZAP_FAIL;
*zchan = NULL;
goto done;
zap_span_t *span = (zap_span_t *) obj;
sangomabc_connection_t *mcon, *pcon;
uint32_t ms = 10;
- zap_sangoma_boost_data_t *sangoma_boost_data = span->signal_data;
+ zap_sangoma_boost_data_t *sangoma_boost_data = span->signal_data;
mcon = &sangoma_boost_data->mcon;
pcon = &sangoma_boost_data->pcon;
break;
}
- if ((activity = zap_boost_wait_event(span, -1)) < 0) {
+ if ((activity = zap_boost_wait_event(span, ms)) < 0) {
zap_log(ZAP_LOG_ERROR, "zap_boost_wait_event failed\n");
goto error;
}
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- AdditionalIncludeDirectories="../../../src/include;../../../src/isdn/include;"C:\Program Files\Sangoma""\r
+ AdditionalIncludeDirectories="../../../src/include;../../../src/isdn/include;"C:\Program Files\Sangoma\include""\r
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"\r
MinimalRebuild="true"\r
BasicRuntimeChecks="3"\r
Name="VCLinkerTool"\r
AdditionalDependencies="openzap.lib libsangoma.lib"\r
LinkIncremental="2"\r
- AdditionalLibraryDirectories=""$(OutDir)";C:\wanpipe\lib"\r
+ AdditionalLibraryDirectories=""$(OutDir)";"C:\Program Files\Sangoma\lib""\r
GenerateDebugInformation="true"\r
SubSystem="1"\r
RandomizedBaseAddress="1"\r
CRITICAL_SECTION mutex;
};
-struct zap_condition {
- HANDLE condition;
-};
-
#else
#include <pthread.h>
pthread_mutex_t mutex;
};
+#endif
+
struct zap_condition {
+#ifdef WIN32
+ HANDLE condition;
+#else
pthread_cond_t condition;
- pthread_mutex_t *mutex;
+#endif
+ zap_mutex_t *mutex;
};
-#endif
struct zap_thread {
#ifdef WIN32
return ZAP_FAIL;
}
+ condition->mutex = mutex;
#ifdef WIN32
condition->condition = CreateEvent(NULL, FALSE, FALSE, NULL);
if (!condition->condition) {
goto failed;
}
#else
- condition->mutex = &mutex->mutex;
if (pthread_cond_init(&condition->condition, NULL)) {
goto failed;
}
#endif
zap_assert_return(condition != NULL, ZAP_FAIL, "Condition is null!\n");
#ifdef WIN32
+ zap_mutex_unlock(condition->mutex);
res = WaitForSingleObject(condition->condition, ms > 0 ? ms : INFINITE);
+ zap_mutex_lock(condition->mutex);
switch (res) {
case WAIT_ABANDONED:
case WAIT_TIMEOUT:
struct timespec waitms;
waitms.tv_sec = time(NULL) + ( ms / 1000 );
waitms.tv_nsec = 1000 * 1000 * ( ms % 1000 );
- res = pthread_cond_timedwait(&condition->condition, condition->mutex, &waitms);
+ res = pthread_cond_timedwait(&condition->condition, condition->mutex->mutex, &waitms);
} else {
- res = pthread_cond_wait(&condition->condition, condition->mutex);
+ res = pthread_cond_wait(&condition->condition, condition->mutex->mutex);
}
if (res != 0) {
if (res == ETIMEDOUT) {
if (pthread_cond_destroy(&condition->condition)) {
return ZAP_FAIL;
}
- zap_safe_free(condition);
#endif
+ zap_safe_free(condition);
*incondition = NULL;
return ZAP_SUCCESS;
}