mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-03 20:38:59 +00:00
gcc 4.4 fix: union instead of cast
gcc 4.4 has more strict rules for aliasing. It doesn't like a struct sockaddr_in pointer pointing to a struct sockaddr. So we make it a union. Merged revisions 217445 via svnmerge from http://svn.digium.com/svn/asterisk/trunk git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@217484 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -409,15 +409,19 @@ static struct ast_str *phoneprov_callback(struct ast_tcptls_session_instance *se
|
||||
/* Unless we are overridden by serveriface or serveraddr, we set the SERVER variable to
|
||||
* the IP address we are listening on that the phone contacted for this config file */
|
||||
if (ast_strlen_zero(global_server)) {
|
||||
struct sockaddr name;
|
||||
socklen_t namelen = sizeof(name);
|
||||
union {
|
||||
struct sockaddr sa;
|
||||
struct sockaddr_in sa_in;
|
||||
} name;
|
||||
socklen_t namelen = sizeof(name.sa);
|
||||
int res;
|
||||
|
||||
if ((res = getsockname(ser->fd, &name, &namelen)))
|
||||
if ((res = getsockname(ser->fd, &name.sa, &namelen)))
|
||||
ast_log(LOG_WARNING, "Could not get server IP, breakage likely.\n");
|
||||
else {
|
||||
struct ast_var_t *var;
|
||||
|
||||
if ((var = ast_var_assign("SERVER", ast_inet_ntoa(name.sa_in.sin_addr))))
|
||||
if ((var = ast_var_assign("SERVER", ast_inet_ntoa(((struct sockaddr_in *)&name)->sin_addr))))
|
||||
AST_LIST_INSERT_TAIL(route->user->headp, var, entries);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user