Fixed IE6 support, and fixed possible memory corruption, when sessions
time out. git-svn-id: https://shellinabox.googlecode.com/svn/trunk@77 0da03de8-d603-11dd-86c2-0f8696b7b6f9
This commit is contained in:
parent
5cea9a25d8
commit
97fff401a3
6 changed files with 44 additions and 15 deletions
|
@ -1,3 +1,9 @@
|
|||
2009-03-17 Markus Gutschke <markus@shellinabox.com>
|
||||
|
||||
* Fixed IE6 support.
|
||||
|
||||
* Fixed possible memory corruption, when sessions time out.
|
||||
|
||||
2009-03-16 Markus Gutschke <markus@shellinabox.com>
|
||||
|
||||
* Fixed some compiler warnings, that newer versions of GCC issue.
|
||||
|
|
8
config.h
8
config.h
|
@ -35,13 +35,13 @@
|
|||
#define HAVE_PTSNAME_R 1
|
||||
|
||||
/* Define to 1 if you have the <security/pam_appl.h> header file. */
|
||||
/* #undef HAVE_SECURITY_PAM_APPL_H */
|
||||
#define HAVE_SECURITY_PAM_APPL_H 1
|
||||
|
||||
/* Define to 1 if you have the <security/pam_client.h> header file. */
|
||||
/* #undef HAVE_SECURITY_PAM_CLIENT_H */
|
||||
#define HAVE_SECURITY_PAM_CLIENT_H 1
|
||||
|
||||
/* Define to 1 if you have the <security/pam_misc.h> header file. */
|
||||
/* #undef HAVE_SECURITY_PAM_MISC_H */
|
||||
#define HAVE_SECURITY_PAM_MISC_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#define HAVE_STDINT_H 1
|
||||
|
@ -95,7 +95,7 @@
|
|||
#define STDC_HEADERS 1
|
||||
|
||||
/* Most recent revision number in the version control system */
|
||||
#define VCS_REVISION "76"
|
||||
#define VCS_REVISION "77"
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "2.4"
|
||||
|
|
|
@ -1077,7 +1077,7 @@ static void childProcess(struct Service *service, int width, int height,
|
|||
environment[numEnvVars] = NULL;
|
||||
|
||||
// Set initial terminal settings
|
||||
struct termios tt;
|
||||
struct termios tt = { 0 };
|
||||
tcgetattr(0, &tt);
|
||||
cfsetispeed(&tt, 38400);
|
||||
cfsetospeed(&tt, 38400);
|
||||
|
|
|
@ -158,9 +158,18 @@ ShellInABox.prototype.sendRequest = function(request) {
|
|||
if (request == undefined) {
|
||||
request = new XMLHttpRequest();
|
||||
}
|
||||
request.open('POST', this.url, true);
|
||||
request.open(this.session ? 'POST' : 'GET', this.url, true);
|
||||
request.setRequestHeader('Content-Type',
|
||||
'application/x-www-form-urlencoded; charset=utf-8');
|
||||
var content = this.session ?
|
||||
('width=' + this.terminalWidth +
|
||||
'&height=' + this.terminalHeight +
|
||||
'&session=' +
|
||||
encodeURIComponent(this.session)) : '';
|
||||
if (this.session) {
|
||||
request.setRequestHeader('Content-Length', content.length);
|
||||
}
|
||||
|
||||
request.onreadystatechange = function(shellInABox) {
|
||||
return function() {
|
||||
try {
|
||||
|
@ -170,10 +179,15 @@ ShellInABox.prototype.sendRequest = function(request) {
|
|||
}
|
||||
}
|
||||
}(this);
|
||||
request.send(
|
||||
'width=' + this.terminalWidth +
|
||||
'&height=' + this.terminalHeight +
|
||||
(this.session ? "&session=" + encodeURIComponent(this.session) : ""));
|
||||
try {
|
||||
if (this.session) {
|
||||
request.send(content);
|
||||
} else {
|
||||
request.send();
|
||||
}
|
||||
} catch (e) {
|
||||
alert('' + e + '\n' + this.url + '\n' + content);
|
||||
}
|
||||
};
|
||||
|
||||
ShellInABox.prototype.onReadyStateChange = function(request) {
|
||||
|
|
|
@ -273,6 +273,10 @@ static int handleSession(struct ServerConnection *connection, void *arg,
|
|||
}
|
||||
check(!session->done);
|
||||
check(completePendingRequest(session, buf, bytes, MAX_RESPONSE));
|
||||
connection = serverGetConnection(session->server,
|
||||
connection,
|
||||
session->pty);
|
||||
session->connection = connection;
|
||||
if (session->len >= MAX_RESPONSE) {
|
||||
serverConnectionSetEvents(session->server, connection, 0);
|
||||
}
|
||||
|
|
|
@ -226,6 +226,7 @@ VT100.prototype.initializeElements = function(container) {
|
|||
}
|
||||
} catch (e) {
|
||||
}
|
||||
|
||||
this.container.innerHTML =
|
||||
'<div id="reconnect" style="visibility: hidden">' +
|
||||
'<input type="button" value="Connect" ' +
|
||||
|
@ -308,7 +309,8 @@ VT100.prototype.initializeElements = function(container) {
|
|||
this.isEmbedded = marginTop != y ||
|
||||
marginLeft != x ||
|
||||
(window.innerWidth ||
|
||||
document.documentElement.clientWidth) -
|
||||
document.documentElement.clientWidth ||
|
||||
document.body.clientWidth) -
|
||||
marginRight != x + this.container.offsetWidth;
|
||||
if (!this.isEmbedded) {
|
||||
this.addListener(window, 'resize',
|
||||
|
@ -485,13 +487,15 @@ VT100.prototype.resizer = function() {
|
|||
var console = this.console[this.currentScreen];
|
||||
var height = (this.isEmbedded ? this.container.clientHeight
|
||||
: (window.innerHeight ||
|
||||
document.documentElement.clientHeight))-1;
|
||||
document.documentElement.clientHeight ||
|
||||
document.body.clientHeight))-1;
|
||||
var partial = height % this.cursorHeight;
|
||||
this.scrollable.style.height = height + 'px';
|
||||
this.padding.style.height = partial + 'px';
|
||||
this.scrollable.style.height = (height > 0 ? height : 0) + 'px';
|
||||
this.padding.style.height = (partial > 0 ? partial : 0) + 'px';
|
||||
var oldTerminalHeight = this.terminalHeight;
|
||||
this.updateWidth();
|
||||
this.updateHeight();
|
||||
|
||||
// Clip the cursor to the visible screen.
|
||||
var cx = this.cursorX;
|
||||
var cy = this.cursorY + this.numScrollbackLines;
|
||||
|
@ -746,7 +750,8 @@ VT100.prototype.updateHeight = function() {
|
|||
} else {
|
||||
// Use the full browser window.
|
||||
this.terminalHeight = Math.floor(((window.innerHeight ||
|
||||
document.documentElement.clientHeight)-1)/
|
||||
document.documentElement.clientHeight ||
|
||||
document.body.clientHeight)-1)/
|
||||
this.cursorHeight);
|
||||
}
|
||||
return this.terminalHeight;
|
||||
|
|
Loading…
Reference in a new issue