1
0
mirror of https://github.com/solemnwarning/ipxwrapper synced 2024-12-30 16:45:37 +01:00

Implemented getpeername function.

This commit is contained in:
Daniel Collins 2011-09-15 18:59:23 +00:00
parent 3924db36b8
commit 412a4c3932
5 changed files with 25 additions and 1 deletions

View File

@ -17,3 +17,4 @@ EXPORTS
WSHEnumProtocols
connect
send
getpeername

View File

@ -131,5 +131,6 @@ SOCKET WSAAPI r_socket(int,int,int);
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);
#endif /* !IPXWRAPPER_H */

View File

@ -33,3 +33,4 @@ r_socket:4
r_ioctlsocket:4
r_connect:4
r_send:4
r_getpeername:4

View File

@ -817,3 +817,24 @@ int PASCAL send(SOCKET fd, const char *buf, int len, int flags) {
return r_send(fd, buf, len, flags);
}
}
int PASCAL getpeername(SOCKET fd, struct sockaddr *addr, int *addrlen) {
ipx_socket *sockptr = get_socket(fd);
if(sockptr) {
if(!(sockptr->flags & IPX_CONNECTED)) {
RETURN_WSA(WSAENOTCONN, -1);
}
if(*addrlen < sizeof(struct sockaddr_ipx)) {
RETURN_WSA(WSAEFAULT, -1);
}
memcpy(addr, &(sockptr->remote_addr), sizeof(struct sockaddr_ipx));
*addrlen = sizeof(struct sockaddr_ipx);
RETURN(0);
}else{
return r_getpeername(fd, addr, addrlen);
}
}

View File

@ -2,7 +2,7 @@ accept
bind:0
closesocket:0
connect:0
getpeername
getpeername:0
getsockname:0
getsockopt:0
htonl