From bf62ce71d689c304c419d79c2215116943a1edf6 Mon Sep 17 00:00:00 2001 From: Daniel Collins Date: Thu, 11 Dec 2008 21:27:40 +0000 Subject: [PATCH] Updated getsockopt() and setsockopt() to return WSAENOPROTOOPT when given unimplemented NSPROTO_IPX options. --- src/winsock.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/winsock.c b/src/winsock.c index 0f7915a..a13ca90 100644 --- a/src/winsock.c +++ b/src/winsock.c @@ -444,16 +444,22 @@ int WSAAPI getsockopt(SOCKET fd, int level, int optname, char FAR *optval, int F if(optname == IPX_PTYPE) { CHECK_OPTLEN(sizeof(int)); *intval = ptr->s_ptype; + + RETURN(0); } if(optname == IPX_FILTERPTYPE) { CHECK_OPTLEN(sizeof(int)); *intval = ptr->f_ptype; + + RETURN(0); } if(optname == IPX_MAXSIZE) { CHECK_OPTLEN(sizeof(int)); *intval = MAX_PACKET_SIZE; + + RETURN(0); } if(optname == IPX_ADDRESS) { @@ -482,6 +488,8 @@ int WSAAPI getsockopt(SOCKET fd, int level, int optname, char FAR *optval, int F ipxdata->status = FALSE; ipxdata->maxpkt = MAX_PACKET_SIZE; ipxdata->linkspeed = 100000; /* 10MBps */ + + RETURN(0); } if(optname == IPX_MAX_ADAPTER_NUM) { @@ -494,9 +502,11 @@ int WSAAPI getsockopt(SOCKET fd, int level, int optname, char FAR *optval, int F (*intval)++; nic = nic->next; } + + RETURN(0); } - RETURN(0); + RETURN_WSA(WSAENOPROTOOPT, -1); } } @@ -513,18 +523,22 @@ int WSAAPI setsockopt(SOCKET fd, int level, int optname, const char FAR *optval, if(level == NSPROTO_IPX) { if(optname == IPX_PTYPE) { sockptr->s_ptype = *intval; + RETURN(0); } if(optname == IPX_FILTERPTYPE) { sockptr->f_ptype = *intval; sockptr->flags |= IPX_FILTER; + + RETURN(0); } if(optname == IPX_STOPFILTERPTYPE) { sockptr->flags &= ~IPX_FILTER; + RETURN(0); } - RETURN(0); + RETURN_WSA(WSAENOPROTOOPT, -1); } if(level == SOL_SOCKET) {