diff --git a/daemon/daemon.cc b/daemon/daemon.cc
index 2af8da2be2e311bd4c23b7bd8f54943d316b3e5e..84201448bc09ee408aaf4903a576f1d692514417 100644
--- a/daemon/daemon.cc
+++ b/daemon/daemon.cc
@@ -706,6 +706,7 @@ char *Daemon::readLine(const char *prompt) {
 #ifdef HAVE_READLINE
 	return readline(prompt);
 #else
+	if (cin.eof()) return NULL;
 	cout << prompt;
 	char *buff = (char *) malloc(sLineSize);
 	cin.getline(buff, sLineSize);
@@ -735,6 +736,10 @@ int Daemon::run() {
 		if (mServerFd == -1 && ret != NULL) {
 			free(ret);
 		}
+		if (!ret && mRunning) {
+			mRunning = false; // ctrl+d
+			cout << "Quitting..." << endl;
+		}
 	}
 	stopThread();
 	return 0;