mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 20:20:07 +00:00
build: Fix ast_sockaddr initialization to be more portable
A change to glibc 2.22 changed the order of the sockadddr_storage members which caused the places where we do an initialization of ast_sockaddr with '{ { 0, 0, } }' to fail compilation. Those initializers (which we shouldn't have been using anyway) have been replaced with memsets. Change-Id: Idd1b3b320903d8771bfe221f0b015685de628fa4
This commit is contained in:
@@ -15790,11 +15790,12 @@ static void start_register_timeout(struct sip_registry *reg)
|
|||||||
|
|
||||||
static const char *sip_sanitized_host(const char *host)
|
static const char *sip_sanitized_host(const char *host)
|
||||||
{
|
{
|
||||||
struct ast_sockaddr addr = { { 0, 0, }, };
|
struct ast_sockaddr addr;
|
||||||
|
|
||||||
/* peer/sip_pvt->tohost and sip_registry->hostname should never have a port
|
/* peer/sip_pvt->tohost and sip_registry->hostname should never have a port
|
||||||
* in them, so we use PARSE_PORT_FORBID here. If this lookup fails, we return
|
* in them, so we use PARSE_PORT_FORBID here. If this lookup fails, we return
|
||||||
* the original host which is most likely a host name and not an IP. */
|
* the original host which is most likely a host name and not an IP. */
|
||||||
|
memset(&addr, 0, sizeof(addr));
|
||||||
if (!ast_sockaddr_parse(&addr, host, PARSE_PORT_FORBID)) {
|
if (!ast_sockaddr_parse(&addr, host, PARSE_PORT_FORBID)) {
|
||||||
return host;
|
return host;
|
||||||
}
|
}
|
||||||
|
@@ -75,7 +75,7 @@ AST_TEST_DEFINE(parsing)
|
|||||||
};
|
};
|
||||||
|
|
||||||
size_t x;
|
size_t x;
|
||||||
struct ast_sockaddr addr = { { 0, 0, } };
|
struct ast_sockaddr addr;
|
||||||
int parse_result;
|
int parse_result;
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
@@ -91,15 +91,17 @@ AST_TEST_DEFINE(parsing)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (x = 0; x < ARRAY_LEN(test_vals); x++) {
|
for (x = 0; x < ARRAY_LEN(test_vals); x++) {
|
||||||
|
memset(&addr, 0, sizeof(addr));
|
||||||
if ((parse_result = ast_sockaddr_parse(&addr, test_vals[x].address, 0)) != test_vals[x].expected_result) {
|
if ((parse_result = ast_sockaddr_parse(&addr, test_vals[x].address, 0)) != test_vals[x].expected_result) {
|
||||||
ast_test_status_update(test, "On '%s' expected %d but got %d\n", test_vals[x].address, test_vals[x].expected_result, parse_result);
|
ast_test_status_update(test, "On '%s' expected %d but got %d\n", test_vals[x].address, test_vals[x].expected_result, parse_result);
|
||||||
res = AST_TEST_FAIL;
|
res = AST_TEST_FAIL;
|
||||||
}
|
}
|
||||||
if (parse_result) {
|
if (parse_result) {
|
||||||
struct ast_sockaddr tmp_addr = { { 0, 0, } };
|
struct ast_sockaddr tmp_addr;
|
||||||
const char *tmp;
|
const char *tmp;
|
||||||
|
|
||||||
tmp = ast_sockaddr_stringify(&addr);
|
tmp = ast_sockaddr_stringify(&addr);
|
||||||
|
memset(&tmp_addr, 0, sizeof(tmp_addr));
|
||||||
ast_sockaddr_parse(&tmp_addr, tmp, 0);
|
ast_sockaddr_parse(&tmp_addr, tmp, 0);
|
||||||
if (ast_sockaddr_cmp_addr(&addr, &tmp_addr)) {
|
if (ast_sockaddr_cmp_addr(&addr, &tmp_addr)) {
|
||||||
char buf[64];
|
char buf[64];
|
||||||
|
Reference in New Issue
Block a user