mirror of
https://github.com/tmate-io/tmate-ssh-server.git
synced 2020-11-18 19:53:51 -08:00
removed keyframe... over engineering
This commit is contained in:
parent
b203e3f9b9
commit
63e8077137
@ -1,7 +1,6 @@
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/tcp.h>
|
||||
#include <fcntl.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "tmate.h"
|
||||
#include "tmate-protocol.h"
|
||||
@ -27,28 +26,6 @@ void tmate_dispatch_master_message(struct tmate_session *session,
|
||||
|
||||
#define pack(what, ...) _pack(&tmate_session->master_encoder, what, __VA_ARGS__)
|
||||
|
||||
void tmate_send_master_keyframe(struct tmate_session *session)
|
||||
{
|
||||
struct timespec time_diff;
|
||||
|
||||
if (!tmate_has_master())
|
||||
return;
|
||||
|
||||
/* Eventually the deamon will send the timestamps and keyframe number */
|
||||
|
||||
if (clock_gettime(CLOCK_MONOTONIC, &session->keyframe_start_time) < 0)
|
||||
tmate_fatal("Cannot get time");
|
||||
|
||||
timespec_subtract(&time_diff, &session->keyframe_start_time,
|
||||
&session->session_start_time);
|
||||
session->keyframe_size = 0;
|
||||
|
||||
pack(array, 3);
|
||||
pack(int, TMATE_CTL_KEYFRAME);
|
||||
pack(unsigned_int, session->keyframe_cnt++);
|
||||
pack(unsigned_long_long, timespec_to_millisec(&time_diff));
|
||||
}
|
||||
|
||||
void tmate_send_master_daemon_msg(struct tmate_session *session,
|
||||
struct tmate_unpacker *uk)
|
||||
{
|
||||
@ -58,15 +35,8 @@ void tmate_send_master_daemon_msg(struct tmate_session *session,
|
||||
if (!tmate_has_master())
|
||||
return;
|
||||
|
||||
if (clock_gettime(CLOCK_MONOTONIC, ¤t_time) < 0)
|
||||
tmate_fatal("Cannot get time");
|
||||
|
||||
timespec_subtract(&time_diff, ¤t_time,
|
||||
&session->keyframe_start_time);
|
||||
|
||||
pack(array, 3);
|
||||
pack(array, 2);
|
||||
pack(int, TMATE_CTL_DEAMON_OUT_MSG);
|
||||
pack(unsigned_int, timespec_to_millisec(&time_diff));
|
||||
|
||||
pack(array, uk->argc);
|
||||
for (i = 0; i < uk->argc; i++)
|
||||
@ -92,11 +62,7 @@ void tmate_init_master_session(struct tmate_session *session)
|
||||
if (!tmate_has_master())
|
||||
return;
|
||||
|
||||
if (clock_gettime(CLOCK_MONOTONIC, &session->session_start_time) < 0)
|
||||
tmate_fatal("Cannot get time");
|
||||
|
||||
session->keyframe_cnt = 0;
|
||||
session->keyframe_size = 0;
|
||||
/* Further init */
|
||||
}
|
||||
|
||||
static int _tmate_connect_to_master(const char *hostname, int port)
|
||||
|
@ -11,7 +11,6 @@
|
||||
enum tmate_control_out_msg_types {
|
||||
TMATE_CTL_AUTH,
|
||||
TMATE_CTL_DEAMON_OUT_MSG,
|
||||
TMATE_CTL_KEYFRAME,
|
||||
};
|
||||
|
||||
enum tmate_control_in_msg_types {
|
||||
|
@ -39,16 +39,6 @@ static void on_master_encoder_write(void *userdata, struct evbuffer *buffer)
|
||||
|
||||
master_out = bufferevent_get_output(session->bev_master);
|
||||
|
||||
len = evbuffer_get_length(buffer);
|
||||
|
||||
if (session->keyframe_size + len > TMATE_KEYFRAME_MAX_SIZE) {
|
||||
if (session->keyframe_size == 0)
|
||||
tmate_fatal("keyframe max size too small");
|
||||
tmate_send_master_keyframe(session);
|
||||
}
|
||||
|
||||
session->keyframe_size += len;
|
||||
|
||||
if (evbuffer_add_buffer(master_out, buffer) < 0)
|
||||
tmate_fatal("Cannot write to master buffer");
|
||||
}
|
||||
@ -66,20 +56,8 @@ static void on_master_event(struct bufferevent *bev, short events, void *_sessio
|
||||
static void on_daemon_decoder_read(void *userdata, struct tmate_unpacker *uk)
|
||||
{
|
||||
struct tmate_session *session = userdata;
|
||||
struct timespec time_diff, current_time;
|
||||
|
||||
if (tmate_has_master()) {
|
||||
if (clock_gettime(CLOCK_MONOTONIC, ¤t_time) < 0)
|
||||
tmate_fatal("Cannot get time");
|
||||
|
||||
timespec_subtract(&time_diff, ¤t_time,
|
||||
&session->keyframe_start_time);
|
||||
if (time_diff.tv_sec > TMATE_KEYFRAME_INTERVAL_SEC - 1)
|
||||
tmate_send_master_keyframe(session);
|
||||
|
||||
tmate_send_master_daemon_msg(session, uk);
|
||||
}
|
||||
|
||||
tmate_send_master_daemon_msg(session, uk);
|
||||
tmate_dispatch_daemon_message(session, uk);
|
||||
}
|
||||
|
||||
@ -156,8 +134,6 @@ static void init_master(struct tmate_session *session)
|
||||
|
||||
tmate_init_master_session(session);
|
||||
tmate_send_master_header(session);
|
||||
|
||||
tmate_send_master_keyframe(session);
|
||||
}
|
||||
|
||||
void tmate_daemon_init(struct tmate_session *session)
|
||||
|
7
tmate.h
7
tmate.h
@ -7,7 +7,6 @@
|
||||
#include <libssh/libssh.h>
|
||||
#include <libssh/callbacks.h>
|
||||
#include <event.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "tmux.h"
|
||||
struct tmate_session;
|
||||
@ -223,11 +222,6 @@ struct tmate_session {
|
||||
struct tmate_encoder master_encoder;
|
||||
struct tmate_decoder master_decoder;
|
||||
|
||||
struct timespec session_start_time;
|
||||
struct timespec keyframe_start_time;
|
||||
unsigned int keyframe_cnt;
|
||||
size_t keyframe_size;
|
||||
|
||||
/* only for client-pty */
|
||||
int pty;
|
||||
struct event ev_pty;
|
||||
@ -245,7 +239,6 @@ extern void tmate_spawn_slave(struct tmate_session *session);
|
||||
extern void tmate_dispatch_master_message(struct tmate_session *session,
|
||||
struct tmate_unpacker *uk);
|
||||
|
||||
extern void tmate_send_master_keyframe(struct tmate_session *session);
|
||||
extern void tmate_send_master_daemon_msg(struct tmate_session *session,
|
||||
struct tmate_unpacker *uk);
|
||||
extern void tmate_send_master_header(struct tmate_session *session);
|
||||
|
Loading…
x
Reference in New Issue
Block a user