static int telnet_closing(Plug plug, char *error_msg, int error_code,
int calling_back)
{
- sk_close(s);
- s = NULL;
+ if (s) {
+ sk_close(s);
+ s = NULL;
+ }
if (error_msg) {
/* A socket error has occurred. */
connection_fatal(error_msg);
*
* Returns an error message, or NULL on success.
*
- * Also places the canonical host name into `realhost'.
+ * Also places the canonical host name into `realhost'. It must be
+ * freed by the caller.
*/
static char *telnet_init(char *host, int port, char **realhost)
{
char *p;
static unsigned char iac[2] = { IAC, IAC };
static unsigned char cr[2] = { CR, NUL };
+#if 0
static unsigned char nl[2] = { CR, LF };
+#endif
if (s == NULL)
return;
sk_write(s, q, p - q);
while (p < buf + len && !iswritable((unsigned char) *p)) {
- sk_write(s, (unsigned char) *p == IAC ? iac : nl, 2);
+ sk_write(s, (unsigned char) *p == IAC ? iac : cr, 2);
p++;
}
}
b[1] = xEOF;
sk_write(s, b, 2);
break;
+ case TS_EOL:
+ sk_write(s, "\r\n", 2);
+ break;
case TS_SYNCH:
b[1] = DM;
sk_write(s, b, 1);