If RDR_Initialize() fails after instantiating the worker thread
pool it must call RDR_ShutdownFinal() to destroy the pool before
exiting. Otherwise, the threads will spin endlessly as each
DeviceIoControl call to the redirector fails.
Change-Id: I347a509703a44c6b8ca25a084ea10dc0df801eb9
Reviewed-on: http://gerrit.openafs.org/9860
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
Tested-by: Jeffrey Altman <jaltman@your-file-system.com>
if( glDevHandle == INVALID_HANDLE_VALUE)
{
+ dwErr = GetLastError();
+
free(redirInitInfo);
- return GetLastError();
+
+ return dwErr;
}
//
&bytesReturned ))
{
+ dwErr = GetLastError();
+
CloseHandle( glDevHandle);
glDevHandle = NULL;
free(redirInitInfo);
- return GetLastError();
+ return dwErr;
}
//
&bytesReturned ))
{
+ //
+ // Must kill off the worker threads we spawned.
+ //
+
+ RDR_ShutdownFinal();
+
+ dwErr = GetLastError();
+
CloseHandle( glDevHandle);
glDevHandle = NULL;
free(redirInitInfo);
- return GetLastError();
+ return dwErr;
}
free(redirInitInfo);