353 volatile int sockfd = -1;
354 volatile int sock2fd = -1;
356 char **
volatile curaddr;
358 char *
volatile fhost;
366 const char *firstLine, *secondLine, *srvr;
378 fhost = cip->firewallHost;
379 fport = cip->firewallPort;
382 fport = cip->lip->defaultPort;
392 fport = (
unsigned int)
htons((
unsigned short) fport);
394 cip->servCtlAddr.sin_port = (
unsigned short) fport;
407 cip->servCtlAddr.sin_family =
AF_INET;
408 cip->servCtlAddr.sin_addr.s_addr = ip_address.s_addr;
440 err =
SConnect(sockfd, &cip->servCtlAddr, (
int) cip->connTimeout);
450 if (cip->connTimeout > 0) {
452 (
void) alarm(cip->connTimeout);
457 #ifdef HAVE_SIGSETJMP 460 sj =
setjmp(gCancelConnectJmp);
475 }
else if (
gGotSig == SIGALRM) {
486 (
int)
sizeof (cip->servCtlAddr));
487 if (cip->connTimeout > 0) {
525 err =
SConnect(sockfd, &cip->servCtlAddr, (
int) cip->connTimeout);
536 if (cip->connTimeout > 0) {
538 (
void) alarm(cip->connTimeout);
542 #ifdef HAVE_SIGSETJMP 545 sj =
setjmp(gCancelConnectJmp);
560 }
else if (
gGotSig == SIGALRM) {
571 (
int)
sizeof (cip->servCtlAddr));
572 if (cip->connTimeout > 0) {
598 #elif defined(WSAENETDOWN) 603 #elif defined(WSAENETUNREACH) 608 #elif defined(WSAECONNABORTED) 613 #elif defined(WSAETIMEDOUT) 618 #elif defined(WSAEHOSTDOWN) 623 #elif defined(WSAECONNRESET) 626 Error(cip,
kDoPerror,
"Could not connect to %s -- try again later.\n", fhost);
631 #elif defined(WSAECONNREFUSED) 657 #if defined(IP_TOS) && defined(IPTOS_LOWDELAY) 665 cip->ctrlSocketR = sockfd;
666 cip->ctrlSocketW = sockfd;
671 if (
InitSReadlineInfo(&cip->ctrlSrl, sockfd, cip->srlBuf,
sizeof(cip->srlBuf), (
int) cip->ctrlTimeout, 1) < 0) {
678 if ((sock2fd =
dup(sockfd)) < 0) {
681 Error(cip,
kDoPerror,
"Could not duplicate a file descriptor.\n");
688 if ((cip->cin =
fdopen(sockfd,
"r")) ==
NULL) {
695 if ((cip->cout =
fdopen(sock2fd,
"w")) ==
NULL) {
704 cip->ctrlSocketR = sockfd;
705 cip->ctrlSocketW = sockfd;
711 #ifdef HAVE_SETLINEBUF 712 setlinebuf(cip->cin);
713 setlinebuf(cip->cout);
720 #ifdef HAVE_INET_NTOP 752 if (
strstr(firstLine,
"Version wu-") !=
NULL) {
755 }
else if (
strstr(firstLine,
"NcFTPd") !=
NULL) {
757 srvr =
"NcFTPd Server";
758 }
else if (
STRNEQ(
"ProFTPD", firstLine, 7)) {
761 }
else if (
strstr(firstLine,
"Microsoft FTP Service") !=
NULL) {
763 srvr =
"Microsoft FTP Service";
764 }
else if (
strstr(firstLine,
"(NetWare ") !=
NULL) {
766 srvr =
"NetWare FTP Service";
767 }
else if (
STRNEQ(
"WFTPD", firstLine, 5)) {
770 }
else if (
STRNEQ(
"Serv-U FTP", firstLine, 10)) {
772 srvr =
"Serv-U FTP-Server";
773 }
else if (
strstr(firstLine,
"VFTPD") !=
NULL) {
776 }
else if (
STRNEQ(
"FTP-Max", firstLine, 7)) {
779 }
else if (
strstr(firstLine,
"Roxen") !=
NULL) {
782 }
else if (
strstr(firstLine,
"WS_FTP") !=
NULL) {
784 srvr =
"WS_FTP Server";
785 }
else if ((secondLine !=
NULL) && (
strstr(secondLine,
"WarFTP") !=
NULL)) {
791 PrintF(cip,
"Remote server is running %s.\n", srvr);
794 if ((cip->onConnectMsgProc != 0) && (rp->
codeType < 4))
795 (*cip->onConnectMsgProc)(cip, rp);
#define kServerTypeWarFTPd
#define kServerTypeWuFTPd
#define kServerTypeWS_FTP
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
SOCKET WSAAPI socket(IN INT af, IN INT type, IN INT protocol)
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
#define kServerTypeNcFTPd
int InitSReadlineInfo(SReadlineInfo *, int, char *, size_t, int, int)
char * strstr(char *String1, char *String2)
#define kServerTypeServ_U
void DoneWithResponse(const FTPCIPtr, ResponsePtr)
#define STRNCPY(dst, src, n)
static int GetSocketAddress(const FTPCIPtr cip, int sockfd, struct sockaddr_in *saddr)
int __MINGW_NOTHROW __cdecl setjmp(jmp_buf _Buf)
#define kFirewallNotInUse
#define LIBNCFTP_USE_VAR(a)
INT WSAAPI connect(IN SOCKET s, IN CONST struct sockaddr *name, IN INT namelen)
int SConnect(int sfd, const struct sockaddr_in *const addr, int tlen)
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
#define kServerTypeNetWareFTP
static struct hostent * GetHostEntry(char *host, struct in_addr *ip_address)
#define kServerTypeMicrosoftFTP
#define kServerTypeUnknown
#define kErrConnectRefused
_CRTIMP int __cdecl getpid(void)
int sigsetjmp(sigjmp_buf buf, int savesigs)
int SetTypeOfService(const FTPCIPtr, int, int)
int SClose(int sfd, int tlen)
#define kClosedFileDescriptor
#define memcpy(s1, s2, n)
int SetSockBufSize(int sockfd, size_t rsize, size_t ssize)
#define kErrConnectMiscErr
int GetResponse(const FTPCIPtr, ResponsePtr)
void PrintF(const FTPCIPtr cip, const char *const fmt,...)
int SetKeepAlive(const FTPCIPtr cip, int sockfd)
void fatal(const char *msg)
int SetInlineOutOfBandData(const FTPCIPtr, int)
char gLibNcFTPVersion[64]
_Check_return_ _CRTIMP FILE *__cdecl fdopen(_In_ int _FileHandle, _In_z_ const char *_Format)
#define kErrNewStreamSocket
int SetLinger(const FTPCIPtr cip, int sockfd, int onoff)
_Check_return_ _CRTIMP int __cdecl dup(_In_ int _FileHandle)
const char *WSAAPI inet_ntop(int af, const void *src, char *dst, size_t cnt)
#define kErrConnectRetryableErr
ResponsePtr InitResponse(void)
#define kServerTypeProFTPD
#define kServerTypeFTP_Max
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *