PublicIp: improve performance

This commit is contained in:
李通洲
2022-09-28 03:10:33 +08:00
parent e7c9b80d85
commit e289db184c
5 changed files with 52 additions and 20 deletions
+18 -2
View File
@@ -5,16 +5,32 @@
#define FF_PUBLICIP_MODULE_NAME "Public IP"
#define FF_PUBLICIP_NUM_FORMAT_ARGS 1
static int sockfd;
void ffPreparePublicIp(FFinstance* instance)
{
sockfd = ffNetworkingSendHttpRequest("ipinfo.io", "/ip", instance->config.publicIpTimeout);
}
void ffPrintPublicIp(FFinstance* instance)
{
if(sockfd == 0)
ffPreparePublicIp(instance);
if(sockfd < 0)
{
ffPrintError(instance, FF_PUBLICIP_MODULE_NAME, 0, &instance->config.publicIP, "Failed to connect to an IP detection server");
return;
}
FFstrbuf result;
ffStrbufInitA(&result, 4096);
ffNetworkingGetHttp("ipinfo.io", "/ip", instance->config.publicIpTimeout, &result);
ffNetworkingRecvHttpResponse(sockfd, &result);
ffStrbufSubstrAfterFirstS(&result, "\r\n\r\n");
if(result.length == 0)
{
ffPrintError(instance, FF_PUBLICIP_MODULE_NAME, 0, &instance->config.publicIP, "Failed to connect to an IP detection server");
ffPrintError(instance, FF_PUBLICIP_MODULE_NAME, 0, &instance->config.publicIP, "Failed to receive the server response");
ffStrbufDestroy(&result);
return;
}