~mdw
/
sgt
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add a comment about Dragon NaturallySpeaking: it apparently requires
[sgt/putty]
/
telnet.c
diff --git
a/telnet.c
b/telnet.c
index
3cef9c7
..
04cbec0
100644
(file)
--- a/
telnet.c
+++ b/
telnet.c
@@
-565,8
+565,10
@@
static void do_telnet_read(char *buf, int len)
static int telnet_closing(Plug plug, char *error_msg, int error_code,
int calling_back)
{
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);
if (error_msg) {
/* A socket error has occurred. */
connection_fatal(error_msg);
@@
-587,7
+589,8
@@
static int telnet_receive(Plug plug, int urgent, char *data, int len)
*
* Returns an error message, or NULL on success.
*
*
* 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)
{
*/
static char *telnet_init(char *host, int port, char **realhost)
{
@@
-652,7
+655,9
@@
static void telnet_send(char *buf, int len)
char *p;
static unsigned char iac[2] = { IAC, IAC };
static unsigned char cr[2] = { CR, NUL };
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 };
static unsigned char nl[2] = { CR, LF };
+#endif
if (s == NULL)
return;
if (s == NULL)
return;
@@
-666,7
+671,7
@@
static void telnet_send(char *buf, int len)
sk_write(s, q, p - q);
while (p < buf + len && !iswritable((unsigned char) *p)) {
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++;
}
}
p++;
}
}
@@
-758,6
+763,9
@@
static void telnet_special(Telnet_Special code)
b[1] = xEOF;
sk_write(s, b, 2);
break;
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);
case TS_SYNCH:
b[1] = DM;
sk_write(s, b, 1);