@ -57,6 +57,7 @@ struct MemoryStruct {
size_t size ;
size_t size ;
} ;
} ;
static void * myrealloc ( void * ptr , size_t size )
static void * myrealloc ( void * ptr , size_t size )
{
{
/* There might be a realloc() out there that doesn't like reallocing
/* There might be a realloc() out there that doesn't like reallocing
@ -85,13 +86,16 @@ static int curl_internal(struct MemoryStruct *chunk, char *url, char *post)
{
{
CURL * curl ;
CURL * curl ;
curl_global_init ( CURL_GLOBAL_ALL ) ;
curl = curl_easy_init ( ) ;
curl = curl_easy_init ( ) ;
if ( ! curl ) {
if ( ! curl ) {
return - 1 ;
return - 1 ;
}
}
curl_easy_setopt ( curl , CURLOPT_NOSIGNAL , 1 ) ;
curl_easy_setopt ( curl , CURLOPT_TIMEOUT , 180 ) ;
curl_easy_setopt ( curl , CURLOPT_FRESH_CONNECT , 1 ) ;
curl_easy_setopt ( curl , CURLOPT_FORBID_REUSE , 1 ) ;
curl_easy_setopt ( curl , CURLOPT_URL , url ) ;
curl_easy_setopt ( curl , CURLOPT_URL , url ) ;
curl_easy_setopt ( curl , CURLOPT_WRITEFUNCTION , WriteMemoryCallback ) ;
curl_easy_setopt ( curl , CURLOPT_WRITEFUNCTION , WriteMemoryCallback ) ;
curl_easy_setopt ( curl , CURLOPT_WRITEDATA , ( void * ) chunk ) ;
curl_easy_setopt ( curl , CURLOPT_WRITEDATA , ( void * ) chunk ) ;
@ -163,6 +167,8 @@ static int unload_module(void)
ast_module_user_hangup_all ( ) ;
ast_module_user_hangup_all ( ) ;
curl_global_cleanup ( ) ;
return res ;
return res ;
}
}
@ -170,6 +176,11 @@ static int load_module(void)
{
{
int res ;
int res ;
if ( curl_global_init ( CURL_GLOBAL_ALL ) ) {
ast_log ( LOG_ERROR , " Unable to initialize the CURL library. Cannot load func_curl \n " ) ;
return AST_MODULE_LOAD_DECLINE ;
}
res = ast_custom_function_register ( & acf_curl ) ;
res = ast_custom_function_register ( & acf_curl ) ;
return res ;
return res ;