WRAPPER_EXPORT HANDLE PASCAL FAR WSAAsyncGetHostByName(HWND hWnd, u_int wMsg, const char FAR * name, char FAR * buf, int buflen) { HANDLE ret; char nbuff[256]; char hbuff[256]; idn_resconf_t encodeCtx; TRACE("ENTER WSAAsyncGetHostByName <%-.100s>\n", name); encodeCtx = idnGetContext(); if (encodeCtx == NULL || name == NULL) { ret = _org_WSAAsyncGetHostByName(hWnd, wMsg, name, buf, buflen); } else { idnHook(hWnd, wMsg, buf, encodeCtx); idnConvReq(encodeCtx, name, nbuff, sizeof(nbuff)); TRACE("Converted Name <%s>\n", dumpName(nbuff, hbuff, sizeof(hbuff))); ret = _org_WSAAsyncGetHostByName(hWnd, wMsg, nbuff, buf, buflen); } TRACE("LEAVE WSAAsyncGetHostByName HANDLE %08x\n", ret); return (ret); }
BOOL APIENTRY DllMain(HMODULE hmod, DWORD reason, LPVOID *resv) { switch (reason) { case DLL_PROCESS_ATTACH: procPid = getpid(); GetModuleFileName(NULL, procExe, 256); idnLogInit("ws20"); idnHookInit(); TRACE("Attached to Process <%s>\n", procExe); return (idnWinsockVersion("2.0")); case DLL_PROCESS_DETACH: idnConvDone(idnGetContext()); idnHookDone(); TRACE("Detached from Process\n"); idnLogFinish(); break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; } return (TRUE); }
WRAPPER_EXPORT struct hostent FAR * PASCAL FAR gethostbyname(const char FAR * name) { struct hostent FAR *ret; char nbuff[256]; char hbuff[256]; BOOL stat; idn_resconf_t encodeCtx; TRACE("ENTER gethostbyname <%-.100s>\n", (name != NULL ? name : "NULL")); encodeCtx = idnGetContext(); if (encodeCtx == NULL) { TRACE("gethostbyname: not encode here\n"); ret = _org_gethostbyname(name); } else if (name == NULL) { TRACE("gethostbyname: name is NULL\n"); ret = _org_gethostbyname(name); } else { stat = idnConvReq(encodeCtx, name, nbuff, sizeof(nbuff)); if (stat == FALSE) { TRACE("idnConvReq failed\n"); ret = NULL; } else { TRACE("Converted Name <%s>\n", dumpName(nbuff, hbuff, sizeof(hbuff))); ret = _org_gethostbyname(nbuff); } } if (ret != NULL && encodeCtx != NULL) { TRACE("Resulting Name <%s>\n", dumpName(ret->h_name, hbuff, sizeof(hbuff))); stat = idnConvRsp(encodeCtx, ret->h_name, nbuff, sizeof(nbuff)); if (stat == FALSE) { TRACE("Decoding failed - return the name verbatim\n"); } else { TRACE("Converted Back <%s>\n", dumpName(nbuff, hbuff, sizeof(hbuff))); strcpy(ret->h_name, nbuff); } } if (ret == NULL) { TRACE("LEAVE gethostbyname NULL\n"); } else { TRACE("LEAVE gethostbyname <%s>\n", dumpHost(ret, hbuff, sizeof(hbuff))); } return (ret); }
WRAPPER_EXPORT HANDLE PASCAL FAR WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg, const char FAR * addr, int len, int type, char FAR * buf, int buflen) { HANDLE ret; char abuff[256]; idn_resconf_t encodeCtx; encodeCtx = idnGetContext(); if (encodeCtx != NULL) { idnHook(hWnd, wMsg, buf, encodeCtx); } TRACE("ENTER WSAAsyncGetHostByAddr <%s>\n", dumpAddr(addr, len, abuff, sizeof(abuff))); ret = _org_WSAAsyncGetHostByAddr(hWnd, wMsg, addr, len, type, buf, buflen); TRACE("LEAVE WSAAsyncGetHostByAddr HANDLE %08x\n", ret); return (ret); }
WRAPPER_EXPORT struct hostent FAR * PASCAL FAR gethostbyaddr(const char FAR * addr, int len, int type) { struct hostent FAR *ret; char nbuff[256]; char abuff[256]; char hbuff[256]; BOOL stat; idn_resconf_t encodeCtx; TRACE("ENTER gethostbyaddr <%s>\n", dumpAddr(addr, len, abuff, sizeof(abuff))); encodeCtx = idnGetContext(); ret = _org_gethostbyaddr(addr, len, type); if (ret != NULL && encodeCtx != NULL) { TRACE("Resulting Name <%s>\n", dumpName(ret->h_name, hbuff, sizeof(hbuff))); stat = idnConvRsp(encodeCtx, ret->h_name, nbuff, sizeof(nbuff)); if (stat == FALSE) { TRACE("Decoding failed - return the name verbatim\n"); } else { TRACE("Converted Back <%s>\n", dumpName(nbuff, hbuff, sizeof(hbuff))); strcpy(ret->h_name, nbuff); } } if (ret == NULL) { TRACE("LEAVE gethostbyaddr NULL\n") ; } else { TRACE("LEAVE gethostbyaddr <%s>\n", dumpHost(ret, hbuff, sizeof(hbuff))); } return (ret); }