Fix qualify for TCP peer
authorTerry Wilson <twilson@digium.com>
Sat, 17 Jan 2009 01:56:36 +0000 (01:56 +0000)
committerTerry Wilson <twilson@digium.com>
Sat, 17 Jan 2009 01:56:36 +0000 (01:56 +0000)
(closes issue #14192)
Reported by: pabelanger
Patches:
      asterisk-bug14192.diff.txt uploaded by jamesgolovich (license 176)
Tested by: jamesgolovich

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@169080 65c4cc65-6c06-0410-ace0-fbb531ad65f3

include/asterisk/tcptls.h
main/http.c
main/tcptls.c

index 611709c..2f6decd 100644 (file)
@@ -114,7 +114,7 @@ struct ast_tls_config {
  */
 struct ast_tcptls_session_args {
        struct sockaddr_in local_address;
-       struct sockaddr_in old_local_address;
+       struct sockaddr_in old_address; /*!< copy of the local or remote address depending on if its a client or server session */
        struct sockaddr_in remote_address;
        char hostname[MAXHOSTNAMELEN]; /*!< only necessary for SSL clients so we can compare to common name */
        struct ast_tls_config *tls_cfg; /*!< points to the SSL configuration if any */
index 237ad66..27ae407 100644 (file)
@@ -257,13 +257,13 @@ static struct ast_str *httpstatus_callback(struct ast_tcptls_session_instance *s
                       "<h2>&nbsp;&nbsp;Asterisk&trade; HTTP Status</h2></td></tr>\r\n");
        ast_str_append(&out, 0, "<tr><td><i>Prefix</i></td><td><b>%s</b></td></tr>\r\n", prefix);
        ast_str_append(&out, 0, "<tr><td><i>Bind Address</i></td><td><b>%s</b></td></tr>\r\n",
-                      ast_inet_ntoa(http_desc.old_local_address.sin_addr));
+                      ast_inet_ntoa(http_desc.old_address.sin_addr));
        ast_str_append(&out, 0, "<tr><td><i>Bind Port</i></td><td><b>%d</b></td></tr>\r\n",
-                      ntohs(http_desc.old_local_address.sin_port));
+                      ntohs(http_desc.old_address.sin_port));
 
        if (http_tls_cfg.enabled) {
                ast_str_append(&out, 0, "<tr><td><i>SSL Bind Port</i></td><td><b>%d</b></td></tr>\r\n",
-                              ntohs(https_desc.old_local_address.sin_port));
+                              ntohs(https_desc.old_address.sin_port));
        }
 
        ast_str_append(&out, 0, "<tr><td colspan=\"2\"><hr></td></tr>\r\n");
@@ -974,16 +974,16 @@ static char *handle_show_http(struct ast_cli_entry *e, int cmd, struct ast_cli_a
        }
        ast_cli(a->fd, "HTTP Server Status:\n");
        ast_cli(a->fd, "Prefix: %s\n", prefix);
-       if (!http_desc.old_local_address.sin_family) {
+       if (!http_desc.old_address.sin_family) {
                ast_cli(a->fd, "Server Disabled\n\n");
        } else {
                ast_cli(a->fd, "Server Enabled and Bound to %s:%d\n\n",
-                       ast_inet_ntoa(http_desc.old_local_address.sin_addr),
-                       ntohs(http_desc.old_local_address.sin_port));
+                       ast_inet_ntoa(http_desc.old_address.sin_addr),
+                       ntohs(http_desc.old_address.sin_port));
                if (http_tls_cfg.enabled) {
                        ast_cli(a->fd, "HTTPS Server Enabled and Bound to %s:%d\n\n",
-                               ast_inet_ntoa(https_desc.old_local_address.sin_addr),
-                               ntohs(https_desc.old_local_address.sin_port));
+                               ast_inet_ntoa(https_desc.old_address.sin_addr),
+                               ntohs(https_desc.old_address.sin_port));
                }
        }
 
index b1c615a..4c01f22 100644 (file)
@@ -334,12 +334,12 @@ struct ast_tcptls_session_instance *ast_tcptls_client_start(struct ast_tcptls_se
        struct ast_tcptls_session_instance *tcptls_session = NULL;
 
        /* Do nothing if nothing has changed */
-       if(!memcmp(&desc->old_local_address, &desc->local_address, sizeof(desc->old_local_address))) {
+       if (!memcmp(&desc->old_address, &desc->remote_address, sizeof(desc->old_address))) {
                ast_debug(1, "Nothing changed in %s\n", desc->name);
                return NULL;
        }
 
-       desc->old_local_address = desc->local_address;
+       desc->old_address = desc->remote_address;
 
        if (desc->accept_fd != -1)
                close(desc->accept_fd);
@@ -417,12 +417,12 @@ void ast_tcptls_server_start(struct ast_tcptls_session_args *desc)
        int x = 1;
        
        /* Do nothing if nothing has changed */
-       if (!memcmp(&desc->old_local_address, &desc->local_address, sizeof(desc->old_local_address))) {
+       if (!memcmp(&desc->old_address, &desc->local_address, sizeof(desc->old_address))) {
                ast_debug(1, "Nothing changed in %s\n", desc->name);
                return;
        }
        
-       desc->old_local_address = desc->local_address;
+       desc->old_address = desc->local_address;
        
        /* Shutdown a running server if there is one */
        if (desc->master != AST_PTHREADT_NULL) {