mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-13 15:50:59 +00:00
use ssl macro to init on dingaling too
This commit is contained in:
parent
45e964518f
commit
23b5f58202
@ -242,7 +242,7 @@ static void default_logger(char *file, const char *func, int line, int level, ch
|
||||
|
||||
vsnprintf(data, sizeof(data), fmt, ap);
|
||||
|
||||
fprintf(globals.log_stream, "%s:%d %s() %s", file, line, func, data);
|
||||
fprintf(globals.log_stream, "%s:%d %s() %s", fp, line, func, data);
|
||||
|
||||
va_end(ap);
|
||||
|
||||
@ -997,9 +997,9 @@ static int on_commands(void *user_data, ikspak *pak)
|
||||
uint8_t is_result = strcasecmp(type, "result") ? 0 : 1;
|
||||
uint8_t is_error = strcasecmp(type, "error") ? 0 : 1;
|
||||
iks *xml, *xsession, *xerror = NULL, *xredir = NULL;
|
||||
struct iks_tag* tmp;
|
||||
|
||||
xml = iks_child (pak->x);
|
||||
tmp = (struct iks_tag*) xml;
|
||||
|
||||
if (is_error) {
|
||||
if ((xerror = working_find(xml, "error"))) {
|
||||
char *code = iks_find_attrib(xerror, "code");
|
||||
|
@ -254,6 +254,7 @@ struct switch_runtime {
|
||||
uint32_t max_db_handles;
|
||||
uint32_t db_handle_timeout;
|
||||
int curl_count;
|
||||
int ssl_count;
|
||||
};
|
||||
|
||||
extern struct switch_runtime runtime;
|
||||
|
@ -435,6 +435,7 @@ SWITCH_DECLARE(void) switch_core_session_rwunlock(_In_ switch_core_session_t *se
|
||||
SWITCH_DECLARE(int) switch_core_add_state_handler(_In_ const switch_state_handler_table_t *state_handler);
|
||||
|
||||
SWITCH_DECLARE(int) switch_core_curl_count(int *val);
|
||||
SWITCH_DECLARE(int) switch_core_ssl_count(int *val);
|
||||
|
||||
/*!
|
||||
\brief Remove a global state handler
|
||||
|
@ -28,61 +28,11 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __SWITCH_CURL_H
|
||||
#define __SWITCH_CURL_H
|
||||
|
||||
#include <curl/curl.h>
|
||||
|
||||
#if defined(HAVE_OPENSSL)
|
||||
#include <openssl/crypto.h>
|
||||
|
||||
static switch_mutex_t **ssl_mutexes;
|
||||
static switch_memory_pool_t *ssl_pool = NULL;
|
||||
|
||||
|
||||
static inline void switch_curl_ssl_lock_callback(int mode, int type, char *file, int line)
|
||||
{
|
||||
if (mode & CRYPTO_LOCK) {
|
||||
switch_mutex_lock(ssl_mutexes[type]);
|
||||
}
|
||||
else {
|
||||
switch_mutex_unlock(ssl_mutexes[type]);
|
||||
}
|
||||
}
|
||||
|
||||
static inline unsigned long switch_curl_ssl_thread_id(void)
|
||||
{
|
||||
return (unsigned long) switch_thread_self();
|
||||
}
|
||||
|
||||
static inline void switch_curl_init_ssl_locks(void)
|
||||
{
|
||||
int i, num = CRYPTO_num_locks();
|
||||
|
||||
ssl_mutexes = OPENSSL_malloc(CRYPTO_num_locks() * sizeof(switch_mutex_t*));
|
||||
switch_assert(ssl_mutexes != NULL);
|
||||
|
||||
switch_core_new_memory_pool(&ssl_pool);
|
||||
|
||||
for (i = 0; i < num; i++) {
|
||||
switch_mutex_init(&(ssl_mutexes[i]), SWITCH_MUTEX_NESTED, ssl_pool);
|
||||
switch_assert(ssl_mutexes[i] != NULL);
|
||||
}
|
||||
|
||||
CRYPTO_set_id_callback(switch_curl_ssl_thread_id);
|
||||
CRYPTO_set_locking_callback((void (*)(int, int, const char*, int))switch_curl_ssl_lock_callback);
|
||||
}
|
||||
|
||||
static inline void switch_curl_destroy_ssl_locks()
|
||||
{
|
||||
int i;
|
||||
|
||||
CRYPTO_set_locking_callback(NULL);
|
||||
for (i = 0; i < CRYPTO_num_locks(); i++) {
|
||||
switch_mutex_destroy(ssl_mutexes[i]);
|
||||
}
|
||||
|
||||
OPENSSL_free(ssl_mutexes);
|
||||
}
|
||||
#endif
|
||||
#include "switch_ssl.h"
|
||||
|
||||
static inline void switch_curl_init(void)
|
||||
{
|
||||
@ -115,6 +65,8 @@ static inline void switch_curl_destroy()
|
||||
switch_core_curl_count(&curl_count);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* For Emacs:
|
||||
* Local Variables:
|
||||
|
@ -30,6 +30,7 @@
|
||||
*
|
||||
*/
|
||||
#include <switch.h>
|
||||
#include <switch_ssl.h>
|
||||
#include <switch_stun.h>
|
||||
#include <libdingaling.h>
|
||||
|
||||
@ -1399,7 +1400,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
|
||||
{
|
||||
struct private_object *tech_pvt = NULL;
|
||||
switch_channel_t *channel = switch_core_session_get_channel(session);
|
||||
int payload = 0;
|
||||
//int payload = 0;
|
||||
|
||||
tech_pvt = (struct private_object *) switch_core_session_get_private(session);
|
||||
switch_assert(tech_pvt != NULL);
|
||||
@ -1443,7 +1444,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch
|
||||
|
||||
|
||||
|
||||
payload = tech_pvt->read_frame.payload;
|
||||
//payload = tech_pvt->read_frame.payload;
|
||||
|
||||
#if 0
|
||||
elapsed = (unsigned int) ((switch_micro_time_now() - started) / 1000);
|
||||
@ -1911,6 +1912,9 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dingaling_load)
|
||||
SWITCH_ADD_API(api_interface, "dingaling", "DingaLing Menu", dingaling, DINGALING_SYNTAX);
|
||||
SWITCH_ADD_CHAT(chat_interface, MDL_CHAT_PROTO, chat_send);
|
||||
|
||||
switch_ssl_init_ssl_locks();
|
||||
|
||||
|
||||
/* indicate that the module should continue to be loaded */
|
||||
return SWITCH_STATUS_SUCCESS;
|
||||
}
|
||||
@ -2008,6 +2012,8 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_dingaling_shutdown)
|
||||
switch_safe_free(globals.codec_string);
|
||||
switch_safe_free(globals.codec_rates_string);
|
||||
|
||||
switch_ssl_destroy_ssl_locks();
|
||||
|
||||
return SWITCH_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -211,6 +211,20 @@ SWITCH_DECLARE(int) switch_core_curl_count(int *val)
|
||||
|
||||
}
|
||||
|
||||
|
||||
SWITCH_DECLARE(int) switch_core_ssl_count(int *val)
|
||||
{
|
||||
if (!val) {
|
||||
switch_mutex_lock(runtime.global_mutex);
|
||||
return runtime.ssl_count;
|
||||
}
|
||||
|
||||
runtime.ssl_count = *val;
|
||||
switch_mutex_unlock(runtime.global_mutex);
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
SWITCH_DECLARE(void) switch_core_remove_state_handler(const switch_state_handler_table_t *state_handler)
|
||||
{
|
||||
int index, tmp_index = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user