|
59 | 59 | WSPAPI
|
60 | 60 | NewIcfConnection(IN PSOCK_ICF_DATA IcfData)
|
61 | 61 | {
|
| 62 | + BOOLEAN Failed = FALSE; |
| 63 | + |
62 | 64 | /* Load the ICF DLL */
|
63 | 65 | IcfData->DllHandle = LoadLibraryW(L"hnetcfg.dll");
|
64 | 66 | if (IcfData->DllHandle)
|
65 | 67 | {
|
66 | 68 | /* Get the entrypoints */
|
67 | 69 | IcfData->IcfOpenDynamicFwPort = GetProcAddress(IcfData->DllHandle,
|
68 | 70 | "IcfOpenDynamicFwPort");
|
| 71 | + if (!IcfData->IcfOpenDynamicFwPort) |
| 72 | + { |
| 73 | + DbgPrint("FIXME: Implement IcfOpenDynamicFwPort in hnetcfg.dll for MSWSOCK!\n"); |
| 74 | + Failed = TRUE; |
| 75 | + } |
| 76 | + |
69 | 77 | IcfData->IcfConnect = (PICF_CONNECT)GetProcAddress(IcfData->DllHandle,
|
70 | 78 | "IcfConnect");
|
| 79 | + if (!IcfData->IcfConnect) |
| 80 | + { |
| 81 | + DbgPrint("FIXME: Implement IcfConnect in hnetcfg.dll for MSWSOCK!\n"); |
| 82 | + Failed = TRUE; |
| 83 | + } |
| 84 | + |
71 | 85 | IcfData->IcfDisconnect = GetProcAddress(IcfData->DllHandle,
|
72 | 86 | "IcfDisconnect");
|
| 87 | + if (!IcfData->IcfDisconnect) |
| 88 | + { |
| 89 | + DbgPrint("FIXME: Implement IcfDisconnect in hnetcfg.dll for MSWSOCK!\n"); |
| 90 | + Failed = TRUE; |
| 91 | + } |
73 | 92 |
|
74 | 93 | /* Now call IcfConnect */
|
75 |
| - if (!IcfData->IcfConnect(IcfData)) |
| 94 | + if (Failed || !IcfData->IcfConnect(IcfData)) |
76 | 95 | {
|
77 | 96 | /* We failed, release the library */
|
78 | 97 | FreeLibrary(IcfData->DllHandle);
|
| 98 | + IcfData->DllHandle = NULL; |
79 | 99 | }
|
80 | 100 | }
|
81 | 101 | }
|
@@ -103,7 +123,7 @@ CloseIcfConnection(IN PSOCK_ICF_DATA IcfData)
|
103 | 123 | if (IcfData->IcfHandle)
|
104 | 124 | {
|
105 | 125 | /* Call IcfDisconnect */
|
106 |
| - IcfData->IcfConnect(IcfData); |
| 126 | + IcfData->IcfDisconnect(IcfData); |
107 | 127 |
|
108 | 128 | /* Release the library */
|
109 | 129 | FreeLibrary(IcfData->DllHandle);
|
|
0 commit comments