Call ioctlsocket() indirectly
We were calling ioctlsocket() through a macro. However, due to type safety issues, we have to call it indirectly through rk_SOCK_IOCTL().
This commit is contained in:
		@@ -68,7 +68,8 @@ typedef SOCKET rk_socket_t;
 | 
				
			|||||||
#define rk_IS_BAD_SOCKET(s) ((s) == INVALID_SOCKET)
 | 
					#define rk_IS_BAD_SOCKET(s) ((s) == INVALID_SOCKET)
 | 
				
			||||||
#define rk_IS_SOCKET_ERROR(rv) ((rv) == SOCKET_ERROR)
 | 
					#define rk_IS_SOCKET_ERROR(rv) ((rv) == SOCKET_ERROR)
 | 
				
			||||||
#define rk_SOCK_ERRNO WSAGetLastError()
 | 
					#define rk_SOCK_ERRNO WSAGetLastError()
 | 
				
			||||||
#define rk_SOCK_IOCTL(s,c,a) ioctlsocket((s),(c),(a))
 | 
					
 | 
				
			||||||
 | 
					ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rk_SOCK_IOCTL(SOCKET s, long cmd, int * argp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ETIMEDOUT               WSAETIMEDOUT
 | 
					#define ETIMEDOUT               WSAETIMEDOUT
 | 
				
			||||||
#define EWOULDBLOCK             WSAEWOULDBLOCK
 | 
					#define EWOULDBLOCK             WSAEWOULDBLOCK
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -316,6 +316,19 @@ socket_to_fd(rk_socket_t sock, int flags)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef HAVE_WINSOCK
 | 
				
			||||||
 | 
					ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
 | 
				
			||||||
 | 
					rk_SOCK_IOCTL(SOCKET s, long cmd, int * argp) {
 | 
				
			||||||
 | 
					    u_long ul = (argp)? *argp : 0;
 | 
				
			||||||
 | 
					    int rv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rv = ioctlsocket(s, cmd, &ul);
 | 
				
			||||||
 | 
					    if (argp)
 | 
				
			||||||
 | 
						*argp = (int) ul;
 | 
				
			||||||
 | 
					    return rv;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef HEIMDAL_SMALLER
 | 
					#ifndef HEIMDAL_SMALLER
 | 
				
			||||||
#undef socket
 | 
					#undef socket
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user