Add the ability to close sessions. This adds *_free() functions to most
[u/mdw/putty] / telnet.c
index 53ad180..f2d31ef 100644 (file)
--- a/telnet.c
+++ b/telnet.c
@@ -740,6 +740,15 @@ static char *telnet_init(void *frontend_handle, void **backend_handle,
     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
@@ -758,10 +767,10 @@ static int telnet_send(void *handle, char *buf, int len)
 {
     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)
@@ -974,6 +983,7 @@ static int telnet_exitcode(void *handle)
 
 Backend telnet_backend = {
     telnet_init,
+    telnet_free,
     telnet_reconfig,
     telnet_send,
     telnet_sendbuffer,