- updated FTP code to use specific ports for MG and not random FTP ports

This commit is contained in:
Mark Vejvoda
2011-01-06 00:52:00 +00:00
parent b5dd9591da
commit a5a744fcad
12 changed files with 167 additions and 47 deletions

View File

@@ -237,7 +237,7 @@ int ftpReceive(socket_t s, void *data, int len)
return recv(s, data, len, 0);
}
socket_t ftpEstablishDataConnection(int passive, ip_t *ip, port_t *port)
socket_t ftpEstablishDataConnection(int passive, ip_t *ip, port_t *port, int sessionId)
{
SOCKET dataSocket;
struct sockaddr_in clientAddr;
@@ -257,7 +257,8 @@ socket_t ftpEstablishDataConnection(int passive, ip_t *ip, port_t *port)
}
myAddr.sin_family = AF_INET;
myAddr.sin_addr.s_addr = INADDR_ANY;
myAddr.sin_port = htons(20);
myAddr.sin_port = htons(20);
if(bind(dataSocket, (struct sockaddr *)&myAddr, sizeof(myAddr)))
{
closesocket(dataSocket);
@@ -273,10 +274,15 @@ socket_t ftpEstablishDataConnection(int passive, ip_t *ip, port_t *port)
}
}
else
{
{
myAddr.sin_family = AF_INET;
myAddr.sin_addr.s_addr = INADDR_ANY;
myAddr.sin_port = htons(0);
//myAddr.sin_port = htons(0);
myAddr.sin_port = htons(ftpGetPassivePort() + sessionId);
int val = 1;
setsockopt(theServer, SOL_SOCKET, SO_REUSEADDR, (char *)&val, sizeof(val));
if(bind(dataSocket, (struct sockaddr *)&myAddr, sizeof(myAddr)))
{
closesocket(dataSocket);
@@ -296,7 +302,11 @@ socket_t ftpEstablishDataConnection(int passive, ip_t *ip, port_t *port)
{
closesocket(dataSocket);
return -1;
}
}
//*port = ftpGetPassivePort();
//*ip = ownIp;
//dataSocket = ftpGetServerPassivePortListenSocket();
}
return (socket_t)dataSocket;
}
@@ -333,11 +343,7 @@ socket_t ftpCreateServerSocket(int portNumber)
serverinfo.sin_port = htons(portNumber);
len = sizeof(serverinfo);
#ifndef WIN32
setsockopt(theServer, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));
#else
setsockopt(theServer, SOL_SOCKET, SO_REUSEADDR, (char *)&val, sizeof(val));
#endif
if(bind(theServer, (struct sockaddr *)&serverinfo, len))
{
@@ -345,7 +351,7 @@ socket_t ftpCreateServerSocket(int portNumber)
return -2;
}
if(listen(theServer, 3))
if(listen(theServer, 16))
{
ftpCloseSocket(theServer);
return -3;