diff options
author | Jesús Corrius <jcorrius@gmail.com> | 2013-08-14 16:04:31 +0200 |
---|---|---|
committer | Fridrich Strba <fridrich@documentfoundation.org> | 2013-08-18 10:43:27 +0000 |
commit | b0041fd68ae1a9df91f8c3274e0b4003ef914a44 (patch) | |
tree | 8af97e9848d0a381570e898270e2971fa987d44d /desktop/source | |
parent | 54d8baf8ad4e17ae7367ffa69e74b4e4f367a653 (diff) |
Revert "Fixing i#119950 warn about other running terminal sessions"
This reverts commit b218cbf59de4d7ae0a6962995fb0f719ed68b5d2.
The original patch just looks for another instance running which
of course can be in the same terminal session. The assumptions
the author makes are wrong.
The bug the patch tries to solve is real and we'll probably
have to solve it in the future, but not this way.
Conflicts:
desktop/source/app/officeipcthread.cxx
Change-Id: I1e645671aa09c6147163820c12d5efb3b3688bd1
Reviewed-on: https://gerrit.libreoffice.org/5415
Reviewed-by: Fridrich Strba <fridrich@documentfoundation.org>
Tested-by: Fridrich Strba <fridrich@documentfoundation.org>
Diffstat (limited to 'desktop/source')
-rw-r--r-- | desktop/source/app/app.cxx | 22 | ||||
-rw-r--r-- | desktop/source/app/officeipcthread.cxx | 50 | ||||
-rw-r--r-- | desktop/source/app/officeipcthread.hxx | 3 |
3 files changed, 24 insertions, 51 deletions
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx index c4e972909099..b436adea9dfe 100644 --- a/desktop/source/app/app.cxx +++ b/desktop/source/app/app.cxx @@ -415,10 +415,7 @@ OUString MakeStartupConfigAccessErrorMessage( OUString const & aInternalErrMsg ) // are allowed. Otherwise we will force a "crash inside a crash". // Thats why we have to use a special native message box here which does not use yield :-) //============================================================================= - -// #i119950# Add a option that not to display the "Fatal Error" on dialog title -void FatalError(const OUString& sMessage, const bool isDisplayErrorString = true); -void FatalError(const OUString& sMessage, const bool isDisplayErrorString) +void FatalError(const OUString& sMessage) { OUString sProductKey = ::utl::Bootstrap::getProductKey(); if ( sProductKey.isEmpty()) @@ -432,9 +429,8 @@ void FatalError(const OUString& sMessage, const bool isDisplayErrorString) OUStringBuffer sTitle (128); sTitle.append (sProductKey ); - if (isDisplayErrorString) { - sTitle.appendAscii (" - Fatal Error"); - } + sTitle.appendAscii (" - Fatal Error"); + Application::ShowNativeErrorBox (sTitle.makeStringAndClear (), sMessage); _exit(EXITHELPER_FATAL_ERROR); } @@ -626,10 +622,6 @@ void Desktop::Init() { SetBootstrapError( BE_PATHINFO_MISSING, OUString() ); } - else if ( aStatus == OfficeIPCThread::IPC_STATUS_MULTI_TS_ERROR ) - { - SetBootstrapError( BE_MULTISESSION_NOT_SUPPORTED, OUString() ); - } else if ( aStatus == OfficeIPCThread::IPC_STATUS_2ND_OFFICE ) { // 2nd office startup should terminate after sending cmdlineargs through pipe @@ -856,13 +848,7 @@ OUString Desktop::CreateErrorMsgString( void Desktop::HandleBootstrapErrors( BootstrapError aBootstrapError, OUString const & aErrorMessage ) { - if ( aBootstrapError == BE_MULTISESSION_NOT_SUPPORTED ) { - OUString aMessage; - aMessage = GetMsgString( STR_BOOTSTRAP_ERR_MULTISESSION, - OUString( RTL_CONSTASCII_USTRINGPARAM( "You have another instance running in a different terminal session. Close that instance and then try again." )) ); - FatalError(aMessage,sal_False); - - } else if ( aBootstrapError == BE_PATHINFO_MISSING ) + if ( aBootstrapError == BE_PATHINFO_MISSING ) { OUString aErrorMsg; OUString aBuffer; diff --git a/desktop/source/app/officeipcthread.cxx b/desktop/source/app/officeipcthread.cxx index 14000eb3431a..e897ee151606 100644 --- a/desktop/source/app/officeipcthread.cxx +++ b/desktop/source/app/officeipcthread.cxx @@ -522,42 +522,30 @@ OfficeIPCThread::Status OfficeIPCThread::EnableOfficeIPCThread() do { osl::Security &rSecurity = Security::get(); - // #119950# Try to connect pipe first. If connected, means another instance already launched. - if ( pThread->maPipe.create( aPipeIdent.getStr(), osl_Pipe_OPEN, rSecurity )) - { - // #119950# Test if launched in a new terminal session for same user. On Windows platform, normally a user is resticted - // to have only one terminal session. But if mutiple terminal session for one user is allowed, crash will happen if launched - // LibreOffice from more than one terminal session. So need to detect and prevent this happen. - - // Will try to create a same name pipe. If creation is successfully, means current instance is launched in a new session. - osl::Pipe aSessionPipe; - if ( aSessionPipe.create( aPipeIdent.getStr(), osl_Pipe_OPEN, rSecurity )) { - // Can create a pipe with same name. This can only happen in multiple terminal session environment on Windows platform. - // Will display a warning dialog and exit. - return IPC_STATUS_MULTI_TS_ERROR; - } else { - osl::StreamPipe aStreamPipe(pThread->maPipe.getHandle()); - if (readStringFromPipe(aStreamPipe) == SEND_ARGUMENTS) - { - // Pipe connected to first office - nPipeMode = PIPEMODE_CONNECTED; - } - else - { - // Pipe connection failed (other office exited or crashed) - TimeValue tval; - tval.Seconds = 0; - tval.Nanosec = 500000000; - salhelper::Thread::wait( tval ); - } - } - } - else if ( pThread->maPipe.create( aPipeIdent.getStr(), osl_Pipe_CREATE, rSecurity )) // Connection not successfull, now we try to create + // Try to create pipe + if ( pThread->maPipe.create( aPipeIdent.getStr(), osl_Pipe_CREATE, rSecurity )) { // Pipe created nPipeMode = PIPEMODE_CREATED; } + else if( pThread->maPipe.create( aPipeIdent.getStr(), osl_Pipe_OPEN, rSecurity )) // Creation not successful, now we try to connect + { + osl::StreamPipe aStreamPipe(pThread->maPipe.getHandle()); + if (readStringFromPipe(aStreamPipe) == SEND_ARGUMENTS) + { + // Pipe connected to first office + nPipeMode = PIPEMODE_CONNECTED; + } + else + { + // Pipe connection failed (other office exited or crashed) + TimeValue tval; + tval.Seconds = 0; + tval.Nanosec = 500000000; + salhelper::Thread::wait( tval ); + } + } else { oslPipeError eReason = pThread->maPipe.getError(); diff --git a/desktop/source/app/officeipcthread.hxx b/desktop/source/app/officeipcthread.hxx index 223e371d4a93..a17e11681722 100644 --- a/desktop/source/app/officeipcthread.hxx +++ b/desktop/source/app/officeipcthread.hxx @@ -108,8 +108,7 @@ class OfficeIPCThread : public salhelper::Thread IPC_STATUS_OK, IPC_STATUS_2ND_OFFICE, IPC_STATUS_PIPE_ERROR, - IPC_STATUS_BOOTSTRAP_ERROR, - IPC_STATUS_MULTI_TS_ERROR + IPC_STATUS_BOOTSTRAP_ERROR }; // controlling pipe communication during shutdown |