if (rlogin->s) {
sk_close(rlogin->s);
rlogin->s = NULL;
+ notify_remote_exit(rlogin->frontend);
}
if (error_msg) {
/* A socket error has occurred. */
static const char *rlogin_init(void *frontend_handle, void **backend_handle,
Config *cfg,
char *host, int port, char **realhost,
- int nodelay)
+ int nodelay, int keepalive)
{
static const struct plug_function_table fn_table = {
rlogin_closing,
sfree(buf);
}
addr = name_lookup(host, port, realhost, cfg);
- if ((err = sk_addr_error(addr)) != NULL)
+ if ((err = sk_addr_error(addr)) != NULL) {
+ sk_addr_free(addr);
return err;
+ }
if (port < 0)
port = 513; /* default rlogin port */
sfree(buf);
}
rlogin->s = new_connection(addr, *realhost, port, 1, 0,
- nodelay, (Plug) rlogin, cfg);
+ nodelay, keepalive, (Plug) rlogin, cfg);
if ((err = sk_socket_error(rlogin->s)) != NULL)
return err;
- sk_addr_free(addr);
-
/*
* Send local username, remote username, terminal/speed
*/