diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 184993943df69a99c6c26be94024b50f83a9b5a9..b641c805f6771c4c145df6d4fbc768c2c51f7c43 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -5381,14 +5381,14 @@ NO_SSH:
 
 		sbbs->autoterm=0;
 		sbbs->cols = startup->default_term_width;
-		SOCKADDR_IN local_addr;
+		union xp_sockaddr local_addr;
 		memset(&local_addr, 0, sizeof(local_addr));
 		socklen_t addr_len=sizeof(local_addr);
 		if(getsockname(client_socket, (struct sockaddr *)&local_addr, &addr_len) == 0
-			&& (ntohs(local_addr.sin_port) == startup->pet40_port
-				|| ntohs(local_addr.sin_port) == startup->pet80_port)) {
+			&& (inet_addrport(&local_addr) == startup->pet40_port
+				|| inet_addrport(&local_addr) == startup->pet80_port)) {
 			sbbs->autoterm = PETSCII;
-			sbbs->cols = ntohs(local_addr.sin_port) == startup->pet40_port ? 40 : 80;
+			sbbs->cols = inet_addrport(&local_addr) == startup->pet40_port ? 40 : 80;
 			sbbs->outcom(PETSCII_UPPERLOWER);
 		}