|
@@ -119,11 +119,11 @@ void * ftpprchild(struct clientparam* param) {
|
|
|
clidatasock = INVALID_SOCKET;
|
|
clidatasock = INVALID_SOCKET;
|
|
|
}
|
|
}
|
|
|
if ((clidatasock=socket(SASOCK(¶m->sincl), SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {RETURN(821);}
|
|
if ((clidatasock=socket(SASOCK(¶m->sincl), SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {RETURN(821);}
|
|
|
- sasize = sizeof(param->sincl);
|
|
|
|
|
*SAPORT(¶m->sincl) = 0;
|
|
*SAPORT(¶m->sincl) = 0;
|
|
|
if(so._bind(clidatasock, (struct sockaddr *)¶m->sincl, SASIZE(¶m->sincl))){RETURN(822);}
|
|
if(so._bind(clidatasock, (struct sockaddr *)¶m->sincl, SASIZE(¶m->sincl))){RETURN(822);}
|
|
|
if (pasv) {
|
|
if (pasv) {
|
|
|
if(so._listen(clidatasock, 1)) {RETURN(823);}
|
|
if(so._listen(clidatasock, 1)) {RETURN(823);}
|
|
|
|
|
+ sasize = sizeof(param->sincl);
|
|
|
if(so._getsockname(clidatasock, (struct sockaddr *)¶m->sincl, &sasize)){RETURN(824);}
|
|
if(so._getsockname(clidatasock, (struct sockaddr *)¶m->sincl, &sasize)){RETURN(824);}
|
|
|
if(*SAFAMILY(¶m->sincl) == AF_INET)
|
|
if(*SAFAMILY(¶m->sincl) == AF_INET)
|
|
|
sprintf((char *)buf, "227 OK (%u,%u,%u,%u,%u,%u)\r\n",
|
|
sprintf((char *)buf, "227 OK (%u,%u,%u,%u,%u,%u)\r\n",
|
|
@@ -145,8 +145,7 @@ void * ftpprchild(struct clientparam* param) {
|
|
|
|
|
|
|
|
if(sscanf((char *)buf+5, "%lu,%lu,%lu,%lu,%hu,%hu", &b1, &b2, &b3, &b4, &b5, &b6)!=6) {RETURN(828);}
|
|
if(sscanf((char *)buf+5, "%lu,%lu,%lu,%lu,%hu,%hu", &b1, &b2, &b3, &b4, &b5, &b6)!=6) {RETURN(828);}
|
|
|
*SAPORT(¶m->sincr) = htons((unsigned short)((b5<<8)^b6));
|
|
*SAPORT(¶m->sincr) = htons((unsigned short)((b5<<8)^b6));
|
|
|
- sasize = sizeof(param->sincr);
|
|
|
|
|
- if(so._connect(clidatasock, (struct sockaddr *)¶m->sincr, sasize)) {
|
|
|
|
|
|
|
+ if(so._connect(clidatasock, (struct sockaddr *)¶m->sincr, SASIZE(¶m->sincr))) {
|
|
|
so._closesocket(clidatasock);
|
|
so._closesocket(clidatasock);
|
|
|
clidatasock = INVALID_SOCKET;
|
|
clidatasock = INVALID_SOCKET;
|
|
|
RETURN(826);
|
|
RETURN(826);
|