Arne Wichmann
2016-04-29 13:46:29 UTC
Package: x2goserver
Version: 3.0.99-3
Tags: patch
After some years of working x2goserver stopped accepting sessions - after
some debugging it turned out that the list of used ports in the database
was never cleaned up.
--- /usr/sbin/x2gocleansessions 2016-01-18 12:45:22.794498999 +0100
+++ /usr/sbin/x2gocleansessions.151214 2015-12-14 16:26:55.979026003 +0100
@@ -2,10 +2,6 @@
use Sys::Hostname;
use strict;
-use lib "/usr/lib/x2go";
-use x2godbwrapper;
-
-
sub check_pid
{
my $pid=shift;
@@ -105,6 +101,5 @@
}
}
}
- db_cleanports() or warn "cleanports failed";
}
}
--- /usr/lib/x2go/x2godbwrapper.pm 2016-01-18 12:05:26.544499000 +0100
+++ /usr/lib/x2go/x2godbwrapper.pm.151214 2015-12-14 16:25:17.759026003 +0100
@@ -59,12 +59,10 @@
use base 'Exporter';
-our @EXPORT=('db_listsessions','db_listsessions_all', 'db_getservers',
- 'db_getagent', 'db_resume', 'db_changestatus', 'db_getdisplays',
- 'db_insertsession', 'db_getports', 'db_insertport', 'db_createsession',
- 'db_insertmount', 'db_getmounts', 'db_deletemount', 'db_getdisplay',
- 'dbsys_getmounts', 'dbsys_listsessionsroot', 'dbsys_listsessionsroot_all',
- 'dbsys_rmsessionsroot', 'db_cleanports');
+our @EXPORT=('db_listsessions','db_listsessions_all', 'db_getservers', 'db_getagent', 'db_resume', 'db_changestatus',
+ 'db_getdisplays', 'db_insertsession', 'db_getports', 'db_insertport', 'db_createsession', 'db_insertmount',
+ 'db_getmounts', 'db_deletemount', 'db_getdisplay', 'dbsys_getmounts', 'dbsys_listsessionsroot',
+ 'dbsys_listsessionsroot_all', 'dbsys_rmsessionsroot');
@@ -409,15 +407,7 @@
{
return split("\n",`sudo -u x2gouser x2gosqlitewrapper getports $server`);
}
-}
-# throw away all ports for which no matching session exists
-sub db_cleanports {
- if($backend eq 'postgres') {
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
- my $sth=$dbh->prepare("delete from used_ports where port in (select port from used_ports natural left join sessions where status is null)");
- $sth->execute()or die;
- } else { die "not implemented - possibly not needed"; }
}
sub db_getservers
Version: 3.0.99-3
Tags: patch
After some years of working x2goserver stopped accepting sessions - after
some debugging it turned out that the list of used ports in the database
was never cleaned up.
--- /usr/sbin/x2gocleansessions 2016-01-18 12:45:22.794498999 +0100
+++ /usr/sbin/x2gocleansessions.151214 2015-12-14 16:26:55.979026003 +0100
@@ -2,10 +2,6 @@
use Sys::Hostname;
use strict;
-use lib "/usr/lib/x2go";
-use x2godbwrapper;
-
-
sub check_pid
{
my $pid=shift;
@@ -105,6 +101,5 @@
}
}
}
- db_cleanports() or warn "cleanports failed";
}
}
--- /usr/lib/x2go/x2godbwrapper.pm 2016-01-18 12:05:26.544499000 +0100
+++ /usr/lib/x2go/x2godbwrapper.pm.151214 2015-12-14 16:25:17.759026003 +0100
@@ -59,12 +59,10 @@
use base 'Exporter';
-our @EXPORT=('db_listsessions','db_listsessions_all', 'db_getservers',
- 'db_getagent', 'db_resume', 'db_changestatus', 'db_getdisplays',
- 'db_insertsession', 'db_getports', 'db_insertport', 'db_createsession',
- 'db_insertmount', 'db_getmounts', 'db_deletemount', 'db_getdisplay',
- 'dbsys_getmounts', 'dbsys_listsessionsroot', 'dbsys_listsessionsroot_all',
- 'dbsys_rmsessionsroot', 'db_cleanports');
+our @EXPORT=('db_listsessions','db_listsessions_all', 'db_getservers', 'db_getagent', 'db_resume', 'db_changestatus',
+ 'db_getdisplays', 'db_insertsession', 'db_getports', 'db_insertport', 'db_createsession', 'db_insertmount',
+ 'db_getmounts', 'db_deletemount', 'db_getdisplay', 'dbsys_getmounts', 'dbsys_listsessionsroot',
+ 'dbsys_listsessionsroot_all', 'dbsys_rmsessionsroot');
@@ -409,15 +407,7 @@
{
return split("\n",`sudo -u x2gouser x2gosqlitewrapper getports $server`);
}
-}
-# throw away all ports for which no matching session exists
-sub db_cleanports {
- if($backend eq 'postgres') {
- my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
- my $sth=$dbh->prepare("delete from used_ports where port in (select port from used_ports natural left join sessions where status is null)");
- $sth->execute()or die;
- } else { die "not implemented - possibly not needed"; }
}
sub db_getservers
--
[...] If you don't want to be restricted, don't agree to it. If you are
coerced, comply as much as you must to protect yourself, just don't support
it. Noone can free you but yourself. (crag, on Debian Planet)
Arne Wichmann (***@saar.de)
[...] If you don't want to be restricted, don't agree to it. If you are
coerced, comply as much as you must to protect yourself, just don't support
it. Noone can free you but yourself. (crag, on Debian Planet)
Arne Wichmann (***@saar.de)