From d162ad5c38929aad4389058d3e14e3c704f9c0e7 Mon Sep 17 00:00:00 2001 From: Vladimir Dubrovin <3proxy@3proxy.ru> Date: Sat, 17 Feb 2024 18:53:58 +0300 Subject: [PATCH] Fix windows issues --- Makefile.msvc | 2 +- Makefile.msvc64 | 2 +- src/common.c | 11 +++--- src/plugins/FilePlugin/FilePlugin.c | 52 ++++++++++++++--------------- 4 files changed, 35 insertions(+), 32 deletions(-) diff --git a/Makefile.msvc b/Makefile.msvc index 7fedec3..c7ec4ea 100644 --- a/Makefile.msvc +++ b/Makefile.msvc @@ -14,7 +14,7 @@ LN = link LDFLAGS = /nologo /subsystem:console /incremental:no /machine:I386 DLFLAGS = /DLL DLSUFFICS = .dll -LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib libcrypto_static.lib libssl_static.lib +LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib Crypt32.lib libcrypto64MT.lib libssl64MT.lib LIBSOLD = libeay32MT.lib ssleay32MT.lib LIBSPREFIX = LIBSSUFFIX = .lib diff --git a/Makefile.msvc64 b/Makefile.msvc64 index 1d0ed0e..2a5f171 100644 --- a/Makefile.msvc64 +++ b/Makefile.msvc64 @@ -14,7 +14,7 @@ LN = link LDFLAGS = /nologo /subsystem:console /incremental:no /machine:x64 DLFLAGS = /DLL DLSUFFICS = .dll -LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib libcrypto_static.lib libssl_static.lib +LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib Crypt32.lib libcrypto64MT.lib libssl64MT.lib LIBSOLD = libeay32.lib ssleay32.lib LIBSPREFIX = LIBSSUFFIX = .lib diff --git a/src/common.c b/src/common.c index 4b8666e..0c1dd31 100644 --- a/src/common.c +++ b/src/common.c @@ -207,13 +207,16 @@ int return connect(s, name, namelen); } int WINAPI def_getpeername(void* state, SOCKET s, struct sockaddr * name, int * namelen){ - return getpeername(s, struct name, namelen); + return getpeername(s, name, namelen); } int WINAPI def_getsockname(void* state, SOCKET s, struct sockaddr * name, int * namelen){ return getsockname(s, name, namelen); } int WINAPI def_getsockopt(void* state, SOCKET s, int level, int optname, char * optval, int * optlen){ - return getsockopts(s, level, optname, optval, optlen); + return getsockopt(s, level, optname, optval, optlen); + } + int WINAPI def_setsockopt(void* state, SOCKET s, int level, int optname, const char *optval, int optlen){ + return setsockopt(s, level, optname, optval, optlen); } int WINAPI def_poll(void* state, struct pollfd *fds, unsigned int nfds, int timeout){ #ifndef WITH_POLL @@ -227,10 +230,10 @@ int #endif } int WINAPI def_send(void* state, SOCKET s, const char *msg, int len, int flags){ - return send(state, s, msg, len, flags); + return send(s, msg, len, flags); } int WINAPI def_sendto(void* state, SOCKET s, const char *msg, int len, int flags, const struct sockaddr *to, int tolen){ - return sendto(state, s, msg, len, flags, to, tolen); + return sendto(s, msg, len, flags, to, tolen); } int WINAPI def_recv(void* state, SOCKET s, char *buf, int len, int flags){ diff --git a/src/plugins/FilePlugin/FilePlugin.c b/src/plugins/FilePlugin/FilePlugin.c index e597f77..ec1cc97 100644 --- a/src/plugins/FilePlugin/FilePlugin.c +++ b/src/plugins/FilePlugin/FilePlugin.c @@ -262,7 +262,7 @@ static void removefps(struct fp_stream * fps){ } static int WINAPI fp_connect(SOCKET s, const struct sockaddr *name, fp_size_t namelen){ - return sso._connect(s, name, namelen); + return sso._connect(sso.state, s, name, namelen); } void processcallbacks(struct fp_stream *fps, int what, char *msg, int size){ @@ -287,7 +287,7 @@ void processcallbacks(struct fp_stream *fps, int what, char *msg, int size){ case GOT_SMTP_REQ: case GOT_SMTP_DATA: fps->state = FLUSH_DATA; - pl->socksend(fps->fpd.cp->clisock, fp_stringtable[1], (int)strlen(fp_stringtable[1]), pl->conf->timeouts[STRING_S]); + pl->socksend(fps->fpd.cp->sostate,fps->fpd.cp->clisock, fp_stringtable[1], (int)strlen(fp_stringtable[1]), pl->conf->timeouts[STRING_S]); fps->state = state; break; case GOT_HTTP_REQUEST: @@ -299,7 +299,7 @@ void processcallbacks(struct fp_stream *fps, int what, char *msg, int size){ case GOT_HTTP_SRVDATA: if(!fps->serversent){ fps->state = FLUSH_DATA; - pl->socksend(fps->fpd.cp->clisock, fp_stringtable[0], (int)strlen(fp_stringtable[0]), pl->conf->timeouts[STRING_S]); + pl->socksend(fps->fpd.cp->sostate, fps->fpd.cp->clisock, fp_stringtable[0], (int)strlen(fp_stringtable[0]), pl->conf->timeouts[STRING_S]); fps->state = state; } break; @@ -307,15 +307,15 @@ void processcallbacks(struct fp_stream *fps, int what, char *msg, int size){ case GOT_FTP_REQ: case GOT_FTP_SRVDATA: fps->state = FLUSH_DATA; - pl->socksend(fps->fpd.cp->ctrlsock, fp_stringtable[1], (int)strlen(fp_stringtable[1]), pl->conf->timeouts[STRING_S]); + pl->socksend(fps->fpd.cp->sostate, fps->fpd.cp->ctrlsock, fp_stringtable[1], (int)strlen(fp_stringtable[1]), pl->conf->timeouts[STRING_S]); fps->state = state; break; default: break; } - if(fps->fpd.cp->remsock != INVALID_SOCKET)sso._closesocket(fps->fpd.cp->remsock); + if(fps->fpd.cp->remsock != INVALID_SOCKET)sso._closesocket(sso.state, fps->fpd.cp->remsock); fps->fpd.cp->remsock = INVALID_SOCKET; - if(fps->fpd.cp->clisock != INVALID_SOCKET)sso._closesocket(fps->fpd.cp->clisock); + if(fps->fpd.cp->clisock != INVALID_SOCKET)sso._closesocket(sso.state, fps->fpd.cp->clisock); fps->fpd.cp->clisock = INVALID_SOCKET; } } @@ -359,7 +359,7 @@ static int copyfdtosock(struct fp_stream * fps, DIRECTION which, long len){ if(fps->serversent >= fps->srvhdrwritten){ sprintf(fps->buf, "%lx\r\n", len); sendchunk = (int)strlen(fps->buf); - if(pl->socksend(fps->fpd.cp->clisock, fps->buf, sendchunk, pl->conf->timeouts[STRING_S]) != sendchunk){ + if(pl->socksend(fps->fpd.cp->sostate, fps->fpd.cp->clisock, fps->buf, sendchunk, pl->conf->timeouts[STRING_S]) != sendchunk){ return -4; } } @@ -398,20 +398,20 @@ static int copyfdtosock(struct fp_stream * fps, DIRECTION which, long len){ #endif return -3; } - if(pl->socksend(sock, fps->buf, res, pl->conf->timeouts[STRING_S]) != res) { + if(pl->socksend(fps->fpd.cp->sostate, sock, fps->buf, res, pl->conf->timeouts[STRING_S]) != res) { return -4; } len -= res; } if(sendchunk){ - if(pl->socksend(sock, "\r\n", 2, pl->conf->timeouts[STRING_S]) != 2) + if(pl->socksend(fps->fpd.cp->sostate, sock, "\r\n", 2, pl->conf->timeouts[STRING_S]) != 2) return -4; } fps->state = state; return 0; } -static int WINAPI fp_poll(struct pollfd *fds, unsigned int nfds, int timeout){ +static int WINAPI fp_poll(void *state, struct pollfd *fds, unsigned int nfds, int timeout){ struct fp_stream *fps = NULL; int res; unsigned i; @@ -456,10 +456,10 @@ static int WINAPI fp_poll(struct pollfd *fds, unsigned int nfds, int timeout){ } } - return sso._poll(fds, nfds, timeout); + return sso._poll(sso.state, fds, nfds, timeout); } -static fp_ssize_t WINAPI fp_send(SOCKET s, const char *msg, fp_size_t len, int flags){ +static fp_ssize_t WINAPI fp_send(void *state, SOCKET s, const char *msg, fp_size_t len, int flags){ struct fp_stream *fps = NULL; int res; res = searchsocket(s, &fps); @@ -474,7 +474,7 @@ static fp_ssize_t WINAPI fp_send(SOCKET s, const char *msg, fp_size_t len, int f } closefiles(fps); fps->state = 0; - return sso._send(s, msg, len, flags); + return sso._send(sso.state, s, msg, len, flags); } if((((fps->what & FP_CLIHEADER) && (fps->state == GOT_HTTP_REQUEST || fps->state == GOT_HTTP_CLI_HDR2)) || ((fps->what & FP_CLIDATA) && fps->state == GOT_HTTP_CLIDATA))){ #ifdef _WIN32 @@ -504,7 +504,7 @@ static fp_ssize_t WINAPI fp_send(SOCKET s, const char *msg, fp_size_t len, int f if(c == '\r' || c == '\n') continue; if((c<'0'|| c>'9') && (c<'A' || c>'F') && (c<'a' || c>'f')) { - return sso._send(s, msg, len, flags); + return sso._send(sso.state, s, msg, len, flags); } if(c != '0') hasnonzero = 1; } @@ -519,7 +519,7 @@ static fp_ssize_t WINAPI fp_send(SOCKET s, const char *msg, fp_size_t len, int f } closefiles(fps); fps->state = 0; - return sso._send(s, msg, len, flags); + return sso._send(sso.state, s, msg, len, flags); } return len; } @@ -541,9 +541,9 @@ static fp_ssize_t WINAPI fp_send(SOCKET s, const char *msg, fp_size_t len, int f return res; } } - return sso._send(s, msg, len, flags); + return sso._send(sso.state, s, msg, len, flags); } -static fp_ssize_t WINAPI fp_sendto(SOCKET s, const void *msg, int len, int flags, const struct sockaddr *to, fp_size_t tolen){ +static fp_ssize_t WINAPI fp_sendto(void *state, SOCKET s, const void *msg, int len, int flags, const struct sockaddr *to, fp_size_t tolen){ struct fp_stream *fps = NULL; int res; res = searchsocket(s, &fps); @@ -659,15 +659,15 @@ static fp_ssize_t WINAPI fp_sendto(SOCKET s, const void *msg, int len, int flags return res; } } - return sso._sendto(s, msg, len, flags, to, tolen); + return sso._sendto(sso.state, s, msg, len, flags, to, tolen); } -static fp_ssize_t WINAPI fp_recv(SOCKET s, void *buf, fp_size_t len, int flags){ - return sso._recv(s, buf, len, flags); +static fp_ssize_t WINAPI fp_recv(void *state, SOCKET s, void *buf, fp_size_t len, int flags){ + return sso._recv(sso.state, s, buf, len, flags); } -static fp_ssize_t WINAPI fp_recvfrom(SOCKET s, void * buf, fp_size_t len, int flags, struct sockaddr * from, fp_size_t * fromlen){ - return sso._recvfrom(s, buf, len, flags, from, fromlen); +static fp_ssize_t WINAPI fp_recvfrom(void *state, SOCKET s, void * buf, fp_size_t len, int flags, struct sockaddr * from, fp_size_t * fromlen){ + return sso._recvfrom(sso.state, s, buf, len, flags, from, fromlen); } -static int WINAPI fp_shutdown(SOCKET s, int how){ +static int WINAPI fp_shutdown(void *state, SOCKET s, int how){ struct fp_stream *fps = NULL; int res; @@ -691,10 +691,10 @@ static int WINAPI fp_shutdown(SOCKET s, int how){ } } - return sso._shutdown(s, how); + return sso._shutdown(sso.state, s, how); } -static int WINAPI fp_closesocket(SOCKET s){ - return sso._closesocket(s); +static int WINAPI fp_closesocket(void *state, SOCKET s){ + return sso._closesocket(sso.state, s); }