summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
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