aboutsummaryrefslogtreecommitdiffstats
path: root/res
diff options
context:
space:
mode:
authortzafrir <tzafrir@f38db490-d61c-443f-a65b-d21fe96a405b>2009-09-09 20:15:37 +0000
committertzafrir <tzafrir@f38db490-d61c-443f-a65b-d21fe96a405b>2009-09-09 20:15:37 +0000
commitbbbdd3dbf63671e9c4428e25db2d7f2063f26ab0 (patch)
tree679e49731e8def07eac9c4f9dd391dc8d8923c41 /res
parenta7310c7c56bc01a53b521a3af8af0de9e9583946 (diff)
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: http://svn.digium.com/svn/asterisk/branches/1.6.0@217484 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res')
-rw-r--r--res/res_phoneprov.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/res/res_phoneprov.c b/res/res_phoneprov.c
index 16c90df4b..9ef5a1ac4 100644
--- a/res/res_phoneprov.c
+++ b/res/res_phoneprov.c
@@ -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);
}