From e884d935f603e16d416d31a88f876cedc46366ac Mon Sep 17 00:00:00 2001
From: Alexander Traud <pabstraud@compuserve.com>
Date: Wed, 4 Nov 2020 14:39:10 +0100
Subject: [PATCH] chan_sip: Remove unused sip_socket->port.

12 years ago, with ASTERISK_12115 the last four get/uses of socket.port
vanished. However, the struct member itself and all seven set/uses
remained as dead code.

ASTERISK-28798

Change-Id: Ib90516a49eca3d724a70191278aaf2144fb58c59
---
 channels/chan_sip.c        | 26 +++-----------------------
 channels/sip/include/sip.h |  2 +-
 2 files changed, 4 insertions(+), 24 deletions(-)

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 551997f4ac..72188895e0 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -3120,10 +3120,8 @@ static void *_sip_tcp_helper_thread(struct ast_tcptls_session_instance *tcptls_s
 
 			if (ast_iostream_get_ssl(tcptls_session->stream)) {
 				set_socket_transport(&req.socket, AST_TRANSPORT_TLS);
-				req.socket.port = htons(ourport_tls);
 			} else {
 				set_socket_transport(&req.socket, AST_TRANSPORT_TCP);
-				req.socket.port = htons(ourport_tcp);
 			}
 			req.socket.fd = ast_iostream_get_fd(tcptls_session->stream);
 
@@ -6402,10 +6400,8 @@ static int create_addr(struct sip_pvt *dialog, const char *opeer, struct ast_soc
 		}
 	}
 
-	if (!dialog->socket.type)
+	if (!dialog->socket.type) {
 		set_socket_transport(&dialog->socket, AST_TRANSPORT_UDP);
-	if (!dialog->socket.port) {
-		dialog->socket.port = htons(ast_sockaddr_port(&bindaddr));
 	}
 
 	if (!ast_sockaddr_port(&dialog->sa)) {
@@ -15148,7 +15144,6 @@ static int __sip_subscribe_mwi_do(struct sip_subscription_mwi *mwi)
 		ast_string_field_set(mwi->call, peersecret, mwi->secret);
 	}
 	set_socket_transport(&mwi->call->socket, mwi->transport);
-	mwi->call->socket.port = htons(mwi->portno);
 	ast_sip_ouraddrfor(&mwi->call->sa, &mwi->call->ourip, mwi->call);
 	build_via(mwi->call);
 
@@ -16262,19 +16257,8 @@ static int transmit_register(struct sip_registry *r, int sipmethod, const char *
 			ast_string_field_set(p, exten, r->callback);
 		}
 
-		/* Set transport and port so the correct contact is built */
+		/* Set transport so the correct contact is built */
 		set_socket_transport(&p->socket, r->transport);
-		if (r->transport == AST_TRANSPORT_TLS || r->transport == AST_TRANSPORT_TCP) {
-			if (ast_sockaddr_isnull(&sip_tcp_desc.local_address)) {
-				ast_log(LOG_ERROR,
-				    "TCP/TLS clients without server were not tested.\n");
-				ast_log(LOG_ERROR,
-				    "Please, follow-up and report at issue 28798.\n");
-			} else {
-				p->socket.port =
-				    htons(ast_sockaddr_port(&sip_tcp_desc.local_address));
-			}
-		}
 
 		/*
 		  check which address we should use in our contact header
@@ -29422,8 +29406,7 @@ static int sipsock_read(int *id, int fd, short events, void *ignore)
 
 	req.socket.fd = sipsock;
 	set_socket_transport(&req.socket, AST_TRANSPORT_UDP);
-	req.socket.tcptls_session	= NULL;
-	req.socket.port = htons(ast_sockaddr_port(&bindaddr));
+	req.socket.tcptls_session = NULL;
 
 	handle_request_do(&req, &addr);
 	deinit_req(&req);
@@ -32364,9 +32347,6 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v_head
 				      (peer->socket.type & AST_TRANSPORT_TLS) ?
 				      STANDARD_TLS_PORT : STANDARD_SIP_PORT);
 	}
-	if (!peer->socket.port) {
-		peer->socket.port = htons(((peer->socket.type & AST_TRANSPORT_TLS) ? STANDARD_TLS_PORT : STANDARD_SIP_PORT));
-	}
 
 	if (realtime) {
 		int enablepoke = 1;
diff --git a/channels/sip/include/sip.h b/channels/sip/include/sip.h
index ca26fa3a2c..18db352209 100644
--- a/channels/sip/include/sip.h
+++ b/channels/sip/include/sip.h
@@ -790,7 +790,7 @@ struct ast_websocket;
 struct sip_socket {
 	enum ast_transport type;  /*!< UDP, TCP or TLS */
 	int fd;                   /*!< Filed descriptor, the actual socket */
-	uint16_t port;
+	uint16_t unused; /* since 1.6.2, retained not to change order/size of struct */
 	struct ast_tcptls_session_instance *tcptls_session;  /* If tcp or tls, a socket manager */
 	struct ast_websocket *ws_session; /*! If ws or wss, a WebSocket session */
 };
-- 
GitLab