signalwire / freeswitch

FreeSWITCH is a Software Defined Telecom Stack enabling the digital transformation from proprietary telecom switches to a versatile software implementation that runs on any commodity hardware. From a Raspberry PI to a multi-core server, FreeSWITCH can unlock the telecommunications potential of any device.
https://freeswitch.com/#getting-started
Other
3.51k stars 1.41k forks source link

Windows Freeswitch 1.10.10 and xml_cdr module #2249

Open gregoriusus opened 12 months ago

gregoriusus commented 12 months ago

We found out an issue with latest version of Freeswitch 1.10.10 on WINDOWS.

Some calls cdrs are not posted to url from Freeswitch via module xml_cdr. They are logged to disk. And if we manually post CDR to our url, everything is ok, so there is no error in processing of CDR on web server side.

Than we monitored all requests posted to our web server and calls, that failed to post cdr, didn’t reached web server.

And in log there is an error: 2023-09-22 10:25:53.094819 67.25% [ERR] mod_xml_cdr.c:394 Got error [0] posting to web server [http://xxxxxxx/] 2023-09-22 10:25:53.094819 67.25% [ERR] mod_xml_cdr.c:401 Retry will be with url [http://xxxxxx/] 2023-09-22 10:25:53.094819 67.25% [ERR] mod_xml_cdr.c:417 Unable to post to web server, writing to file

Is it possible that is something with upgraded curl library that xml_cdr module is using it?

We even don’t know how to trace in detail what is happening at the moment when cdr is posted. We can only check FS logs and monitor our web server. And this started after upgrade to 1.10.10. Before it worked for years.

We can confirm, that downgrade to FS 1.10.9 helped. So, there is some change in code between 1.10.9 and 1.10.10

gregoriusus commented 11 months ago

Hi! Is anyone willing to look at this. I know windows is second class citizen, but still, it would be good to use latest version of Freeswitch

andywolk commented 11 months ago

Would be nice to see what switch_curl_easy_perform(curl_handle); returns. Are you able to build FreeSWITCH manually? Currently there is no status check.

            switch_curl_easy_perform(curl_handle);
            switch_curl_easy_getinfo(curl_handle, CURLINFO_RESPONSE_CODE, &httpRes);
            switch_safe_free(destUrl);
            if (httpRes >= 200 && httpRes <= 299) {
                goto success;
            } else {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Got error [%ld] posting to web server [%s]\n",
gregoriusus commented 11 months ago

I compiled it in Visual studio once. Could do it again. What should I change in mod_xml_cdr.c?

andywolk commented 11 months ago

See if that commit helps showing any new information: https://github.com/signalwire/freeswitch/commit/f2793b1a03c26442cd251e87c2a7e86b454ea661

gregoriusus commented 7 months ago

Yes, there is a new error in curl_easy - error 6: 2024-02-19 09:44:15.644114 95.32% [WARNING] mod_xml_cdr.c:393 switch_curl_easy_perform [http://xxxx] error [6] 2024-02-19 09:44:15.644114 95.32% [ERR] mod_xml_cdr.c:408 Got error [0] posting to web server [http://xxxxxx] 2024-02-19 09:44:15.644114 95.32% [ERR] mod_xml_cdr.c:415 Retry will be with url [http://xxxxxx] 2024-02-19 09:44:15.644114 95.32% [ERR] mod_xml_cdr.c:431 Unable to post to web server, writing to file

Could it be related when building curl in Visual studio?

andywolk commented 7 months ago

See 6:

2024-02-19 09:44:15.644114 95.32% [WARNING] mod_xml_cdr.c:393 switch_curl_easy_perform [http://xxxx] error [6]

According to https://curl.se/libcurl/c/libcurl-errors.html

CURLE_COULDNT_RESOLVE_HOST (6)

Could not resolve host. The given remote host was not resolved.
gregoriusus commented 7 months ago

Yeah, I also googled this. But how could this happen on 2% of posts? We do not even use DNS, url is saved in hosts file. Could this be an issue?

andywolk commented 7 months ago

Are you able to compile FreeSWITCH on Windows manually?

gregoriusus commented 7 months ago

Yes, I can. Anything to add in code? I added your previous comment in code.

Does xml_curl module also use curl_easy_perform as it never fails, but it uses only GET method and xml_cdr uses POST.

andywolk commented 7 months ago

Please try downgrading cURL https://github.com/signalwire/freeswitch/commit/94a860d8b9538fb45258e87a191803542244d9a7

gregoriusus commented 7 months ago

Ok, I did. I compiled version 1.10.11. It looks promising. Let's see in few days... Can we upgrade to 8.0.0?

gregoriusus commented 7 months ago

It looks that this solved an issue. No issue in 2 days. If you prepare files for download binaries curl from freeswitch server, I can test with latest version. Can we do this?

gregoriusus commented 6 months ago

@andywolk, if you agree and prepare binaries, I can test...

gregoriusus commented 1 month ago

Hi, andy.

Any news regarding this issue, can cUrl be upgraded to newer version. At least for test (I need binaries)

gregoriusus commented 1 month ago

It looks, I am not the only one with this issue. Also on Debian happens: https://forum.signalwire.community/t/windows-freeswitch-1-10-10-and-xml-cdr/790/4

gregoriusus commented 1 week ago

Hi, any news, ideas?