BOOL My_WSASendDisconnect() { SOCKET s=NULL; LPWSABUF lpOutboundDisconnectData=NULL; int returnVal_Real = NULL; int returnVal_Intercepted = NULL; DWORD error_Real = 0; DWORD error_Intercepted = 0; disableInterception(); returnVal_Real = WSASendDisconnect (s,lpOutboundDisconnectData); error_Real = GetLastError(); enableInterception(); returnVal_Intercepted = WSASendDisconnect (s,lpOutboundDisconnectData); error_Intercepted = GetLastError(); return ((returnVal_Real == returnVal_Intercepted) && (error_Real == error_Intercepted)); }
BOOL My_WSASendDisconnect() { SOCKET s=NULL; LPWSABUF lpOutboundDisconnectData=NULL; int returnVal_Real = NULL; int returnVal_Intercepted = NULL; DWORD error_Real = 0; DWORD error_Intercepted = 0; __try{ disableInterception(); returnVal_Real = WSASendDisconnect (s,lpOutboundDisconnectData); error_Real = GetLastError(); enableInterception(); returnVal_Intercepted = WSASendDisconnect (s,lpOutboundDisconnectData); error_Intercepted = GetLastError(); }__except(puts("in filter"), 1){puts("exception caught");} return ((returnVal_Real == returnVal_Intercepted) && (error_Real == error_Intercepted)); }
int dbgsysSocketClose(int fd) { struct linger l; int len = sizeof(l); if (getsockopt(fd, SOL_SOCKET, SO_LINGER, (char *)&l, &len) == 0) { if (l.l_onoff == 0) { WSASendDisconnect(fd, NULL); } } return closesocket(fd); }
static int net_socket_close(SOCKET fd) { struct linger l; int ret; int len = sizeof (l); if (getsockopt(fd, SOL_SOCKET, SO_LINGER, (char *)&l, &len) == 0) { if (l.l_onoff == 0) { WSASendDisconnect(fd, NULL); } } ret = closesocket (fd); return ret; }
JNIEXPORT void JNICALL Java_sun_nio_ch_SocketDispatcher_preClose0(JNIEnv *env, jclass clazz, jobject fdo) { jint fd = fdval(env, fdo); struct linger l; int len = sizeof(l); if (getsockopt(fd, SOL_SOCKET, SO_LINGER, (char *)&l, &len) == 0) { if (l.l_onoff == 0) { WSASendDisconnect(fd, NULL); } } }
JNIEXPORT int JNICALL NET_SocketClose(int fd) { struct linger l; int ret; int len = sizeof (l); if (getsockopt(fd, SOL_SOCKET, SO_LINGER, (char *)&l, &len) == 0) { if (l.l_onoff == 0) { WSASendDisconnect(fd, NULL); } } ret = closesocket (fd); return ret; }