Fix windows issues

This commit is contained in:
Vladimir Dubrovin 2024-02-17 18:53:58 +03:00
parent 8198db8617
commit d162ad5c38
4 changed files with 35 additions and 32 deletions

View File

@ -14,7 +14,7 @@ LN = link
LDFLAGS = /nologo /subsystem:console /incremental:no /machine:I386 LDFLAGS = /nologo /subsystem:console /incremental:no /machine:I386
DLFLAGS = /DLL DLFLAGS = /DLL
DLSUFFICS = .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 LIBSOLD = libeay32MT.lib ssleay32MT.lib
LIBSPREFIX = LIBSPREFIX =
LIBSSUFFIX = .lib LIBSSUFFIX = .lib

View File

@ -14,7 +14,7 @@ LN = link
LDFLAGS = /nologo /subsystem:console /incremental:no /machine:x64 LDFLAGS = /nologo /subsystem:console /incremental:no /machine:x64
DLFLAGS = /DLL DLFLAGS = /DLL
DLSUFFICS = .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 LIBSOLD = libeay32.lib ssleay32.lib
LIBSPREFIX = LIBSPREFIX =
LIBSSUFFIX = .lib LIBSSUFFIX = .lib

View File

@ -207,13 +207,16 @@ int
return connect(s, name, namelen); return connect(s, name, namelen);
} }
int WINAPI def_getpeername(void* state, SOCKET s, struct sockaddr * name, int * 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){ int WINAPI def_getsockname(void* state, SOCKET s, struct sockaddr * name, int * namelen){
return getsockname(s, name, namelen); return getsockname(s, name, namelen);
} }
int WINAPI def_getsockopt(void* state, SOCKET s, int level, int optname, char * optval, int * optlen){ 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){ int WINAPI def_poll(void* state, struct pollfd *fds, unsigned int nfds, int timeout){
#ifndef WITH_POLL #ifndef WITH_POLL
@ -227,10 +230,10 @@ int
#endif #endif
} }
int WINAPI def_send(void* state, SOCKET s, const char *msg, int len, int flags){ 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){ 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){ int WINAPI def_recv(void* state, SOCKET s, char *buf, int len, int flags){

View File

@ -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){ 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){ 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_REQ:
case GOT_SMTP_DATA: case GOT_SMTP_DATA:
fps->state = FLUSH_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; fps->state = state;
break; break;
case GOT_HTTP_REQUEST: case GOT_HTTP_REQUEST:
@ -299,7 +299,7 @@ void processcallbacks(struct fp_stream *fps, int what, char *msg, int size){
case GOT_HTTP_SRVDATA: case GOT_HTTP_SRVDATA:
if(!fps->serversent){ if(!fps->serversent){
fps->state = FLUSH_DATA; 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; fps->state = state;
} }
break; break;
@ -307,15 +307,15 @@ void processcallbacks(struct fp_stream *fps, int what, char *msg, int size){
case GOT_FTP_REQ: case GOT_FTP_REQ:
case GOT_FTP_SRVDATA: case GOT_FTP_SRVDATA:
fps->state = FLUSH_DATA; 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; fps->state = state;
break; break;
default: default:
break; 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; 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; 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){ if(fps->serversent >= fps->srvhdrwritten){
sprintf(fps->buf, "%lx\r\n", len); sprintf(fps->buf, "%lx\r\n", len);
sendchunk = (int)strlen(fps->buf); 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; return -4;
} }
} }
@ -398,20 +398,20 @@ static int copyfdtosock(struct fp_stream * fps, DIRECTION which, long len){
#endif #endif
return -3; 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; return -4;
} }
len -= res; len -= res;
} }
if(sendchunk){ 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; return -4;
} }
fps->state = state; fps->state = state;
return 0; 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; struct fp_stream *fps = NULL;
int res; int res;
unsigned i; 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; struct fp_stream *fps = NULL;
int res; int res;
res = searchsocket(s, &fps); 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); closefiles(fps);
fps->state = 0; 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))){ 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 #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 == '\r' || c == '\n') continue;
if((c<'0'|| c>'9') && (c<'A' || c>'F') && (c<'a' || c>'f')) { 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; 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); closefiles(fps);
fps->state = 0; fps->state = 0;
return sso._send(s, msg, len, flags); return sso._send(sso.state, s, msg, len, flags);
} }
return len; 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 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; struct fp_stream *fps = NULL;
int res; int res;
res = searchsocket(s, &fps); 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 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){ static fp_ssize_t WINAPI fp_recv(void *state, SOCKET s, void *buf, fp_size_t len, int flags){
return sso._recv(s, buf, len, 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){ 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(s, buf, len, flags, from, 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; struct fp_stream *fps = NULL;
int res; 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){ static int WINAPI fp_closesocket(void *state, SOCKET s){
return sso._closesocket(s); return sso._closesocket(sso.state, s);
} }