File 0001-Fall-back-to-regular-login-when-autologin-fails.patch of Package sddm
From 5f43cbf23a9ec9e3547dfe0f59928d0ac5324db9 Mon Sep 17 00:00:00 2001
From: Jerome Leclanche <jerome@leclan.ch>
Date: Thu, 5 Nov 2015 21:28:22 +0200
Subject: [PATCH] Fall back to regular login when autologin fails
Fixes #316
---
src/daemon/Display.cpp | 42 +++++++++++++++++++++++++-----------------
src/daemon/Display.h | 1 +
2 files changed, 26 insertions(+), 17 deletions(-)
diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp
index 8de59e5..6bc9965 100644
--- a/src/daemon/Display.cpp
+++ b/src/daemon/Display.cpp
@@ -103,6 +103,29 @@ namespace SDDM {
m_displayServer->start();
}
+ bool Display::attemptAutologin() {
+ Session::Type sessionType = Session::X11Session;
+
+ // determine session type
+ const QString &autologinSession = mainConfig.Autologin.Session.get();
+ if (findSessionEntry(mainConfig.XDisplay.SessionDir.get(), autologinSession)) {
+ sessionType = Session::X11Session;
+ } else if (findSessionEntry(mainConfig.WaylandDisplay.SessionDir.get(), autologinSession)) {
+ sessionType = Session::WaylandSession;
+ } else {
+ qCritical() << "Unable to find autologin session entry" << autologinSession;
+ return false;
+ }
+
+ Session session;
+ session.setTo(sessionType, autologinSession);
+
+ m_auth->setAutologin(true);
+ startAuth(mainConfig.Autologin.User.get(), QString(), session);
+
+ return true;
+ }
+
void Display::displayServerStarted() {
// check flag
if (m_started)
@@ -122,25 +145,10 @@ namespace SDDM {
// set flags
m_started = true;
- // determine session type
- const QString &autologinSession = mainConfig.Autologin.Session.get();
- Session session;
- if (findSessionEntry(mainConfig.XDisplay.SessionDir.get(), autologinSession)) {
- session.setTo(Session::X11Session, autologinSession);
- } else if (findSessionEntry(mainConfig.WaylandDisplay.SessionDir.get(), autologinSession)) {
- session.setTo(Session::WaylandSession, autologinSession);
- } else {
- qCritical() << "Unable to find autologin session entry" << autologinSession;
- emit loginFailed(m_socket);
+ bool success = attemptAutologin();
+ if (success) {
return;
}
-
- // start session
- m_auth->setAutologin(true);
- startAuth(mainConfig.Autologin.User.get(), QString(), session);
-
- // return
- return;
}
// start socket server
diff --git a/src/daemon/Display.h b/src/daemon/Display.h
index dc46463..3d6d6a5 100644
--- a/src/daemon/Display.h
+++ b/src/daemon/Display.h
@@ -60,6 +60,7 @@ namespace SDDM {
void login(QLocalSocket *socket,
const QString &user, const QString &password,
const Session &session);
+ bool attemptAutologin();
void displayServerStarted();
signals:
--
2.10.0