Merge pull request #727 from david-cermak/fix/sockutls_gai_error

fix(sockutls): Fix gai_strerror() impl to return const string
This commit is contained in:
david-cermak
2025-01-07 15:59:24 +01:00
committed by GitHub
5 changed files with 39 additions and 13 deletions

View File

@@ -3,6 +3,6 @@ commitizen:
bump_message: 'bump(sockutls): $current_version -> $new_version'
pre_bump_hooks: python ../../ci/changelog.py sock_utils
tag_format: sock_utils-v$version
version: 0.2.1
version: 0.2.2
version_files:
- idf_component.yml

View File

@@ -1,5 +1,11 @@
# Changelog
## [0.2.2](https://github.com/espressif/esp-protocols/commits/sock_utils-v0.2.2)
### Bug Fixes
- Fix gai_strerror() impl to return const string ([f12a2056](https://github.com/espressif/esp-protocols/commit/f12a2056))
## [0.2.1](https://github.com/espressif/esp-protocols/commits/sock_utils-v0.2.1)
### Bug Fixes

View File

@@ -1,4 +1,4 @@
version: 0.2.1
version: 0.2.2
description: The component provides helper implementation of common system/socket utilities
url: https://github.com/espressif/esp-protocols/tree/master/components/sock_utils
dependencies:

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -18,13 +18,14 @@ extern "C" {
#endif
/**
* @brief Returns a numeric string representing of `getaddrinfo()` error code.
* @brief Returns a string representing of `getaddrinfo()` error code.
*
* @param[in] ecode Error code returned by `getaddrinfo()`.
* @param[in] errcode Error code returned by `getaddrinfo()`.
*
* @return A pointer to a string describing the error.
* @return A pointer to a string containing the error code, for example "EAI_NONAME"
* for EAI_NONAME error type.
*/
const char *gai_strerror(int ecode);
const char *gai_strerror(int errcode);
#ifdef __cplusplus
}

View File

@@ -1,17 +1,36 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <stdio.h>
#include "gai_strerror.h"
#include "lwip/netdb.h"
_Thread_local char gai_strerror_string[32];
#define HANDLE_GAI_ERROR(code) \
case code: return #code;
const char *gai_strerror(int ecode)
const char *gai_strerror(int errcode)
{
if (snprintf(gai_strerror_string, sizeof(gai_strerror_string), "EAI error:%d", ecode) < 0) {
return "gai_strerror() failed";
switch (errcode) {
/* lwip defined DNS codes */
HANDLE_GAI_ERROR(EAI_BADFLAGS)
HANDLE_GAI_ERROR(EAI_FAIL)
HANDLE_GAI_ERROR(EAI_FAMILY)
HANDLE_GAI_ERROR(EAI_MEMORY)
HANDLE_GAI_ERROR(EAI_NONAME)
HANDLE_GAI_ERROR(EAI_SERVICE)
/* other error codes optionally defined in platform/newlib or toolchain */
#ifdef EAI_AGAIN
HANDLE_GAI_ERROR(EAI_AGAIN)
#endif
#ifdef EAI_SOCKTYPE
HANDLE_GAI_ERROR(EAI_SOCKTYPE)
#endif
#ifdef EAI_SYSTEM
HANDLE_GAI_ERROR(EAI_SYSTEM)
#endif
default:
return "Unknown error";
}
return gai_strerror_string;
}