[X2Go-Commits] [nx-libs] 02/02: Add 210_nxagent_nxcomp_save_session_state.patch. Save session state in path specified by "state" option in agent options file. If option is omitted, session state will not be saved. Session states are: STARTING, RUNNING, SUSPENDING, SUSPENDED, RESUMING, TERMINATING, TERMINATED.

git-admin at x2go.org git-admin at x2go.org
Wed Jun 25 10:02:15 CEST 2014


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository nx-libs.

commit 9f6eb6f796e81b00ff5b37c9abc89bb159e4e372
Author: Oleksandr Shneyder <o.shneyder at phoca-gmbh.de>
Date:   Wed Jun 25 10:02:02 2014 +0200

    Add 210_nxagent_nxcomp_save_session_state.patch. Save session state in path specified by "state" option in agent options file. If option is omitted, session state will not be saved. Session states are: STARTING, RUNNING, SUSPENDING, SUSPENDED, RESUMING, TERMINATING, TERMINATED.
---
 debian/changelog                                   |    6 +
 .../210_nxagent_nxcomp_save_session_state.patch    |  188 ++++++++++++++++++++
 debian/patches/series                              |    1 +
 3 files changed, 195 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index f5d68e5..93d6d7a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -45,6 +45,12 @@ nx-libs (2:3.5.0.25-0x2go1) UNRELEASED; urgency=low
     + 209_x2goagent_add-man-page.full.patch
     + 220_nxproxy_bind-loopback-only.full+lite.patch
 
+  [ Oleksandr Shneyder ]
+  * Add 210_nxagent_nxcomp_save_session_state.patch. Save session state in path
+    specified by "state" option in agent options file. If option is omitted,
+    session state will not be saved. Session states are: STARTING, RUNNING,
+    SUSPENDING, SUSPENDED, RESUMING, TERMINATING, TERMINATED.
+
  -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Wed, 07 May 2014 09:58:10 +0200
 
 nx-libs (2:3.5.0.24-0x2go1) unstable; urgency=low
diff --git a/debian/patches/210_nxagent_nxcomp_save_session_state.patch b/debian/patches/210_nxagent_nxcomp_save_session_state.patch
new file mode 100644
index 0000000..53cfb85
--- /dev/null
+++ b/debian/patches/210_nxagent_nxcomp_save_session_state.patch
@@ -0,0 +1,188 @@
+Description: Save session state in file
+Author: Oleksandr Shneyder <o.shneyder at phoca-gmbh.de>
+
+--- a/nx-X11/programs/Xserver/hw/nxagent/Args.c
++++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c
+@@ -60,6 +60,7 @@
+ #endif
+ #include "Handlers.h"
+ #include "Error.h"
++#include "Reconnect.h"
+ 
+ /*
+  * NX includes and definitions.
+@@ -1106,6 +1107,11 @@
+ 
+     return;
+   }
++  else if (!strcmp(name, "state"))
++  {
++    setStatePath(value);
++    return;
++  }
+   else if (!strcmp(name, "fullscreen"))
+   {
+     if (nxagentReconnectTrap == True)
+@@ -1362,6 +1368,11 @@
+               validateString(nxagentOptionFile));
+   #endif
+ 
++  /*
++   * Init statePath
++   */
++  setStatePath("");
++
+   if (nxagentOptionFile == NULL)
+   {
+     return;
+--- a/nx-X11/programs/Xserver/hw/nxagent/Init.c
++++ b/nx-X11/programs/Xserver/hw/nxagent/Init.c
+@@ -63,7 +63,7 @@
+ 
+ #include "NX.h"
+ #include "NXlib.h"
+-
++#include "Reconnect.h"
+ /*
+  * Set here the required log level.
+  */
+@@ -233,6 +233,7 @@
+     fprintf(stderr, "Info: Agent running with pid '%d'.\n", getpid());
+ 
+     fprintf(stderr, "Session: Starting session at '%s'.\n", GetTimeAsString());
++    saveAgentState("STARTING");
+   }
+ 
+   /*
+--- a/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c
++++ b/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c
+@@ -118,6 +118,33 @@
+ 
+ static enum RECONNECTION_STEP failedStep;
+ 
++#include <limits.h>
++
++/*
++ * Path of state File
++ */
++char stateFile[PATH_MAX];
++
++
++void setStatePath(char* path)
++{
++    strncpy(stateFile, path, PATH_MAX-1);
++}
++
++void saveAgentState(char* state)
++{
++    FILE* fptr;
++    if(strlen(stateFile))
++    {
++        fptr=fopen(stateFile, "w");
++        if(!fptr)
++            return;
++        fprintf(fptr,"%s", state);
++        fclose(fptr);
++    }
++}
++
++
+ int nxagentHandleConnectionStates(void)
+ {
+   #ifdef TEST
+@@ -211,6 +238,7 @@
+           fprintf(stderr, "Session: Display failure detected at '%s'.\n", GetTimeAsString());
+ 
+           fprintf(stderr, "Session: Suspending session at '%s'.\n", GetTimeAsString());
++          saveAgentState("SUSPENDING");
+         }
+ 
+         nxagentDisconnectSession();
+@@ -265,6 +293,7 @@
+         fprintf(stderr, "Session: Session suspended at '%s'.\n", GetTimeAsString());
+         #endif
+       }
++      saveAgentState("SUSPENDED");
+ 
+       nxagentResetDisplayHandlers();
+ 
+@@ -622,6 +651,7 @@
+   #else
+   fprintf(stderr, "Session: Session resumed at '%s'.\n", GetTimeAsString());
+   #endif
++  saveAgentState("RUNNING");
+ 
+   nxagentRemoveSplashWindow(NULL);
+ 
+@@ -785,12 +815,14 @@
+   if (nxagentSessionState == SESSION_GOING_DOWN)
+   {
+     fprintf(stderr, "Session: Suspending session at '%s'.\n", GetTimeAsString());
++    saveAgentState("SUSPENDING");
+ 
+     nxagentDisconnectSession();
+   }
+   else if (nxagentSessionState == SESSION_GOING_UP)
+   {
+     fprintf(stderr, "Session: Resuming session at '%s'.\n", GetTimeAsString());
++    saveAgentState("RESUMING");
+ 
+     if (nxagentReconnectSession())
+     {
+@@ -803,6 +835,7 @@
+       fprintf(stderr, "Session: Display failure detected at '%s'.\n", GetTimeAsString());
+ 
+       fprintf(stderr, "Session: Suspending session at '%s'.\n", GetTimeAsString());
++      saveAgentState("SUSPENDING");
+ 
+       nxagentDisconnectSession();
+     }
+--- a/nx-X11/programs/Xserver/hw/nxagent/Reconnect.h
++++ b/nx-X11/programs/Xserver/hw/nxagent/Reconnect.h
+@@ -34,6 +34,8 @@
+ Bool nxagentReconnectSession(void);
+ int nxagentHandleConnectionStates(void);
+ void nxagentHandleConnectionChanges(void);
++void setStatePath(char*);
++void saveAgentState(char*);
+ 
+ enum SESSION_STATE
+ {
+--- a/nx-X11/programs/Xserver/hw/nxagent/X/NXdispatch.c
++++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXdispatch.c
+@@ -609,6 +609,7 @@
+           #endif
+ 
+           nxagentSessionState = SESSION_UP;
++          saveAgentState("RUNNING");
+         }
+ 
+         #ifdef BLOCKS
+@@ -823,6 +824,7 @@
+        */
+   
+       fprintf(stderr, "Session: Terminating session at '%s'.\n", GetTimeAsString());
++      saveAgentState("TERMINATING");
+ 
+       nxagentWaitDisplay();
+ 
+@@ -833,6 +835,7 @@
+     {
+       NXShadowDestroy();
+     }
++    saveAgentState("TERMINATED");
+ 
+     KillAllClients();
+     DEALLOCATE_LOCAL(clientReady);
+--- a/nxcomp/Loop.cpp
++++ b/nxcomp/Loop.cpp
+@@ -8898,7 +8898,8 @@
+     }
+     else if (strcasecmp(name, "defer") == 0 ||
+                  strcasecmp(name, "tile") == 0 ||
+-                     strcasecmp(name, "menu") == 0)
++                     strcasecmp(name, "menu") == 0 ||
++                        strcasecmp(name, "state") == 0 )
+     {
+       #ifdef DEBUG
+       *logofs << "Loop: Ignoring agent option '" << name
diff --git a/debian/patches/series b/debian/patches/series
index edbd38e..25f20dd 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -65,3 +65,4 @@
 999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch
 016_nx-X11_install-location.debian.patch
 102_xserver-xext_set-securitypolicy-path.debian.patch
+210_nxagent_nxcomp_save_session_state.patch

--
Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git


More information about the x2go-commits mailing list