From ffc982ac9c3976fac08e5e539e17d5ca57f5de6d Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Wed, 5 Feb 2003 22:06:17 +0000 Subject: [PATCH] Fixed normal (non-PASV) file transfers on Unix when running as non-root user, if it can't bind ctrl_port-1, then it'll retry the bind using any port (0). --- src/sbbs3/ftpsrvr.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c index 23ecee4258..a0366a6c9c 100644 --- a/src/sbbs3/ftpsrvr.c +++ b/src/sbbs3/ftpsrvr.c @@ -1865,11 +1865,11 @@ static void filexfer(SOCKADDR_IN* addr, SOCKET ctrl_sock, SOCKET pasv_sock, SOCK server_addr.sin_family = AF_INET; server_addr.sin_port = htons((WORD)(startup->port-1)); /* 20? */ - if(startup->seteuid!=NULL) - startup->seteuid(FALSE); result=bind(*data_sock, (struct sockaddr *) &server_addr,sizeof(server_addr)); - if(startup->seteuid!=NULL) - startup->seteuid(TRUE); + if(result!=0) { + server_addr.sin_port = 0; /* any user port */ + result=bind(*data_sock, (struct sockaddr *) &server_addr,sizeof(server_addr)); + } if(result!=0) { lprintf ("%04d !DATA ERROR %d (%d) binding socket %d" ,ctrl_sock, result, ERROR_VALUE, *data_sock); -- GitLab