diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index 49445f8ac126e3e179d917af76c9238d5410c5f9..f2465635e7fafa056564996ceeb5f84c6abc802c 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -4671,7 +4671,7 @@ void DLLCALL ftp_server(void* arg)
 
 		if(startup->seteuid!=NULL)
 			startup->seteuid(FALSE);
-		result=bind(server_socket, (struct sockaddr *) &server_addr,sizeof(server_addr));
+		result=retry_bind(server_socket, (struct sockaddr *) &server_addr,sizeof(server_addr),startup->bind_retry_count,startup->bind_retry_delay,lprintf);
 		if(startup->seteuid!=NULL)
 			startup->seteuid(TRUE);
 		if(result!=0) {
diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index d08404fcc3b1f6187d7b148666675e521ffe98c8..8c889cc0d9578ba91d9318a6c2912ea1d80ffd5a 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -4101,7 +4101,7 @@ void DLLCALL mail_server(void* arg)
 
 		if(startup->seteuid!=NULL)
 			startup->seteuid(FALSE);
-		result = bind(server_socket,(struct sockaddr *)&server_addr,sizeof(server_addr));
+		result = retry_bind(server_socket,(struct sockaddr *)&server_addr,sizeof(server_addr),startup->bind_retry_count,startup->bind_retry_delay,lprintf);
 		if(startup->seteuid!=NULL)
 			startup->seteuid(TRUE);
 		if(result != 0) {
@@ -4149,7 +4149,7 @@ void DLLCALL mail_server(void* arg)
 
 			if(startup->seteuid!=NULL)
 				startup->seteuid(FALSE);
-			result = bind(pop3_socket,(struct sockaddr *)&server_addr,sizeof(server_addr));
+			result = retry_bind(pop3_socket,(struct sockaddr *)&server_addr,sizeof(server_addr),startup->bind_retry_count,startup->bind_retry_delay,lprintf);
 			if(startup->seteuid!=NULL)
 				startup->seteuid(TRUE);
 			if(result != 0) {
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index d812348c2cc58807bd6ea8a8da2bffd90ff79b1f..83762748cf82694410830b02284567e60d432b15 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -3953,7 +3953,7 @@ void DLLCALL bbs_thread(void* arg)
 
 	if(startup->seteuid!=NULL)
 		startup->seteuid(FALSE);
-    result = bind(telnet_socket,(struct sockaddr *)&server_addr,sizeof(server_addr));
+    result = retry_bind(telnet_socket,(struct sockaddr *)&server_addr,sizeof(server_addr),startup->bind_retry_count,startup->bind_retry_delay,lprintf);
 	if(startup->seteuid!=NULL)
 		startup->seteuid(TRUE);
 	if(result != 0) {
@@ -3998,7 +3998,7 @@ void DLLCALL bbs_thread(void* arg)
 
 		if(startup->seteuid!=NULL)
 			startup->seteuid(FALSE);
-		result = bind(rlogin_socket,(struct sockaddr *)&server_addr,sizeof(server_addr));
+		result = retry_bind(rlogin_socket,(struct sockaddr *)&server_addr,sizeof(server_addr),startup->bind_retry_count,startup->bind_retry_delay,lprintf);
 		if(startup->seteuid!=NULL)
 			startup->seteuid(TRUE);
 		if(result != 0) {
diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index d7382691b884c3163b061f37e94d7d84b5b67bca..f68ec93070220154cc11efc5e88fa84d477beb02 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -1716,7 +1716,7 @@ void DLLCALL services_thread(void* arg)
 
 			if(startup->seteuid!=NULL)
 				startup->seteuid(FALSE);
-			result=bind(socket, (struct sockaddr *) &addr, sizeof(addr));
+			result=retry_bind(socket, (struct sockaddr *) &addr, sizeof(addr),startup->bind_retry_count,startup->bind_retry_delay,lprintf);
 			if(startup->seteuid!=NULL)
 				startup->seteuid(TRUE);
 			if(result!=0) {
diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c
index 462927b2aaff06923e80d1eb8058ba441d7741ea..7008c8fa4772b7c482aa46df1d470980761f4914 100644
--- a/src/sbbs3/websrvr.c
+++ b/src/sbbs3/websrvr.c
@@ -3090,7 +3090,7 @@ void DLLCALL web_server(void* arg)
 
 		if(startup->seteuid!=NULL)
 			startup->seteuid(FALSE);
-		result = bind(server_socket,(struct sockaddr *)&server_addr,sizeof(server_addr));
+		result = retry_bind(server_socket,(struct sockaddr *)&server_addr,sizeof(server_addr),startup->bind_retry_count,startup->bind_retry_delay,lprintf);
 		if(startup->seteuid!=NULL)
 			startup->seteuid(TRUE);
 		if(result != 0) {