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
changes/60/3060/2
George Joseph 9 years ago committed by Richard Mudgett
parent d9ab222edc
commit a6610fbe2f

@ -15791,11 +15791,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];

Loading…
Cancel
Save