#define TELOPT_AUTHENTICATION 37 /* Authenticate */
#define TELOPT_ENCRYPT 38 /* Encryption option */
#define TELOPT_NEW_ENVIRON 39 /* New - Environment variables */
+#define TELOPT_TN3270E 40 /* TN3270 enhancements */
+#define TELOPT_XAUTH 41
+#define TELOPT_CHARSET 42 /* Character set */
+#define TELOPT_RSP 43 /* Remote serial port */
+#define TELOPT_COM_PORT_OPTION 44 /* Com port control */
+#define TELOPT_SLE 45 /* Suppress local echo */
+#define TELOPT_STARTTLS 46 /* Start TLS */
+#define TELOPT_KERMIT 47 /* Automatic Kermit file transfer */
+#define TELOPT_SEND_URL 48
+#define TELOPT_FORWARD_X 49
+#define TELOPT_PRAGMA_LOGON 138
+#define TELOPT_SSPI_LOGON 139
+#define TELOPT_PRAGMA_HEARTBEAT 140
#define TELOPT_EXOPL 255 /* extended-options-list */
#define TELQUAL_IS 0 /* option is... */
i(AUTHENTICATION);
i(ENCRYPT);
i(NEW_ENVIRON);
+ i(TN3270E);
+ i(XAUTH);
+ i(CHARSET);
+ i(RSP);
+ i(COM_PORT_OPTION);
+ i(SLE);
+ i(STARTTLS);
+ i(KERMIT);
+ i(SEND_URL);
+ i(FORWARD_X);
+ i(PRAGMA_LOGON);
+ i(SSPI_LOGON);
+ i(PRAGMA_HEARTBEAT);
i(EXOPL);
#undef i
return "<unknown>";
return NULL;
}
+static void telnet_free(void *handle)
+{
+ Telnet telnet = (Telnet) handle;
+
+ sfree(telnet->sb_buf);
+ if (telnet->s)
+ sk_close(telnet->s);
+ sfree(telnet);
+}
/*
* Reconfigure the Telnet backend. There's no immediate action
* necessary, in this backend: we just save the fresh config for
{
Telnet telnet = (Telnet) handle;
unsigned char *p, *end;
- static unsigned char iac[2] = { IAC, IAC };
- static unsigned char cr[2] = { CR, NUL };
+ static const unsigned char iac[2] = { IAC, IAC };
+ static const unsigned char cr[2] = { CR, NUL };
#if 0
- static unsigned char nl[2] = { CR, LF };
+ static const unsigned char nl[2] = { CR, LF };
#endif
if (telnet->s == NULL)
telnet->bufsize = sk_write(telnet->s, (char *)b, 2);
break;
case TS_EOL:
- /* In BINARY mode, CR-LF becomes just CR. */
+ /* In BINARY mode, CR-LF becomes just CR -
+ * and without the NUL suffix too. */
if (telnet->opt_states[o_we_bin.index] == ACTIVE)
- telnet->bufsize = sk_write(telnet->s, "\r", 2);
+ telnet->bufsize = sk_write(telnet->s, "\r", 1);
else
telnet->bufsize = sk_write(telnet->s, "\r\n", 2);
break;
Backend telnet_backend = {
telnet_init,
+ telnet_free,
telnet_reconfig,
telnet_send,
telnet_sendbuffer,