mirror of
https://github.com/solemnwarning/ipxwrapper
synced 2024-12-30 16:45:37 +01:00
Implemented listen function.
This commit is contained in:
parent
0819a324c1
commit
b408f4e4e9
@ -18,3 +18,4 @@ EXPORTS
|
||||
connect
|
||||
send
|
||||
getpeername
|
||||
listen
|
||||
|
@ -43,6 +43,7 @@
|
||||
#define IPX_EXT_ADDR (int)(1<<9)
|
||||
#define IPX_IS_SPX (int)(1<<10)
|
||||
#define IPX_IS_SPXII (int)(1<<11)
|
||||
#define IPX_LISTENING (int)(1<<12)
|
||||
|
||||
typedef struct ipx_socket ipx_socket;
|
||||
typedef struct ipx_packet ipx_packet;
|
||||
@ -109,5 +110,6 @@ int PASCAL r_ioctlsocket(SOCKET fd, long cmd, u_long *argp);
|
||||
int PASCAL r_connect(SOCKET fd, const struct sockaddr *addr, int addrlen);
|
||||
int PASCAL r_send(SOCKET fd, const char *buf, int len, int flags);
|
||||
int PASCAL r_getpeername(SOCKET fd, struct sockaddr *addr, int *addrlen);
|
||||
int PASCAL r_listen(SOCKET s, int backlog);
|
||||
|
||||
#endif /* !IPXWRAPPER_H */
|
||||
|
@ -8,7 +8,7 @@ ntohl:4
|
||||
htons:4
|
||||
ntohs:4
|
||||
select:4
|
||||
listen:4
|
||||
r_listen:4
|
||||
accept:4
|
||||
send:4
|
||||
connect:4
|
||||
|
@ -1307,3 +1307,52 @@ int PASCAL getpeername(SOCKET fd, struct sockaddr *addr, int *addrlen)
|
||||
return r_getpeername(fd, addr, addrlen);
|
||||
}
|
||||
}
|
||||
|
||||
int PASCAL listen(SOCKET s, int backlog)
|
||||
{
|
||||
ipx_socket *sock = get_socket(s);
|
||||
|
||||
if(sock)
|
||||
{
|
||||
if(sock->flags & IPX_IS_SPX)
|
||||
{
|
||||
if(!(sock->flags & IPX_BOUND))
|
||||
{
|
||||
unlock_sockets();
|
||||
|
||||
WSASetLastError(WSAEINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(sock->flags & IPX_LISTENING)
|
||||
{
|
||||
unlock_sockets();
|
||||
|
||||
WSASetLastError(WSAEISCONN);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(r_listen(sock->fd, backlog) == -1)
|
||||
{
|
||||
unlock_sockets();
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
sock->flags |= IPX_LISTENING;
|
||||
|
||||
unlock_sockets();
|
||||
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
unlock_sockets();
|
||||
|
||||
WSASetLastError(WSAEOPNOTSUPP);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else{
|
||||
return r_listen(s, backlog);
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ htons
|
||||
inet_addr
|
||||
inet_ntoa
|
||||
ioctlsocket:0
|
||||
listen
|
||||
listen:0
|
||||
ntohl
|
||||
ntohs
|
||||
recv:0
|
||||
|
Loading…
x
Reference in New Issue
Block a user