]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
gcc 4.4 fix: union instead of cast
authorTzafrir Cohen <tzafrir.cohen@xorcom.com>
Wed, 9 Sep 2009 20:15:37 +0000 (20:15 +0000)
committerTzafrir Cohen <tzafrir.cohen@xorcom.com>
Wed, 9 Sep 2009 20:15:37 +0000 (20:15 +0000)
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

res/res_phoneprov.c

index 16c90df4b3dacaa9271a03bd49663a855d4ca28d..9ef5a1ac41dfa823dfd7e6aeeeb77e1b059a2ef2 100644 (file)
@@ -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);
                        }