summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorJesús Corrius <jcorrius@gmail.com>2013-08-14 16:04:31 +0200
committerFridrich Strba <fridrich@documentfoundation.org>2013-08-18 10:43:27 +0000
commitb0041fd68ae1a9df91f8c3274e0b4003ef914a44 (patch)
tree8af97e9848d0a381570e898270e2971fa987d44d /desktop
parent54d8baf8ad4e17ae7367ffa69e74b4e4f367a653 (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')
-rw-r--r--desktop/inc/app.hxx1
-rw-r--r--desktop/source/app/app.cxx22
-rw-r--r--desktop/source/app/officeipcthread.cxx50
-rw-r--r--desktop/source/app/officeipcthread.hxx3
4 files changed, 24 insertions, 52 deletions
diff --git a/desktop/inc/app.hxx b/desktop/inc/app.hxx
index 04153ef359ac..d94930441836 100644
--- a/desktop/inc/app.hxx
+++ b/desktop/inc/app.hxx
@@ -64,7 +64,6 @@ class Desktop : public Application
BE_LANGUAGE_MISSING,
BE_USERINSTALL_NOTENOUGHDISKSPACE,
BE_USERINSTALL_NOWRITEACCESS,
- BE_MULTISESSION_NOT_SUPPORTED,
BE_OFFICECONFIG_BROKEN
};
enum BootstrapStatus
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