diff --git a/rainbow/Turtle/Event.cpp b/rainbow/Turtle/Event.cpp index 66fddb932..601f9257c 100644 --- a/rainbow/Turtle/Event.cpp +++ b/rainbow/Turtle/Event.cpp @@ -123,6 +123,10 @@ bool Ctrl::IsWaitingEvent() while(socket.Timeout(0).WaitRead()) { socket.Timeout(20000); String s = websocket.Recieve(); + if(s.IsVoid()) { // No data returned -> means EOF was reached + TurtleWhenDisconnect(); + Exit(0); + } LLOG("Recieved data " << s); StringStream ss(s); while(!ss.IsEof()) diff --git a/rainbow/Turtle/Stream.cpp b/rainbow/Turtle/Stream.cpp index bc92eaf71..fb1794d1f 100644 --- a/rainbow/Turtle/Stream.cpp +++ b/rainbow/Turtle/Stream.cpp @@ -30,6 +30,8 @@ String TurtleStream::FlushStream() return s; } +Callback TurtleWhenDisconnect; + END_UPP_NAMESPACE #endif diff --git a/rainbow/Turtle/Turtle.h b/rainbow/Turtle/Turtle.h index 6130323c9..1fc0b6dc3 100644 --- a/rainbow/Turtle/Turtle.h +++ b/rainbow/Turtle/Turtle.h @@ -30,6 +30,7 @@ public: }; extern TurtleStream turtle_stream; +extern Callback TurtleWhenDisconnect; class SystemDraw : public SDraw { public: diff --git a/rainbow/WebWord/WebWord.cpp b/rainbow/WebWord/WebWord.cpp index d264ae402..43419c168 100644 --- a/rainbow/WebWord/WebWord.cpp +++ b/rainbow/WebWord/WebWord.cpp @@ -312,6 +312,8 @@ INITBLOCK { CONSOLE_APP_MAIN { StdLogSetup(LOG_COUT|LOG_FILE); + + LOG("Session Started"); #ifdef _DEBUG MemoryLimitKb(10000); @@ -339,4 +341,6 @@ CONSOLE_APP_MAIN StoreToFile(callback(UWord::SerializeApp)); UPP::Ctrl::CloseTopCtrls(); + + LOG("Session Finished"); }