--- sourceforge.net/trunk/rdesktop/tcp.c 2001/09/15 12:34:34 33 +++ sourceforge.net/trunk/rdesktop/tcp.c 2002/11/19 14:48:02 275 @@ -1,7 +1,7 @@ /* rdesktop: A Remote Desktop Protocol client. Protocol services - TCP layer - Copyright (C) Matthew Chapman 1999-2001 + Copyright (C) Matthew Chapman 1999-2002 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,6 +31,7 @@ static int sock; static struct stream in; static struct stream out; +extern int tcp_port_rdp; /* Initialise TCP transport data packet */ STREAM @@ -83,7 +84,9 @@ while (length > 0) { - ui_select(sock); + if (!ui_select(sock)) + /* User quit */ + return NULL; rcvd = recv(sock, in.end, length, 0); if (rcvd == -1) @@ -109,8 +112,7 @@ if ((nslookup = gethostbyname(server)) != NULL) { - memcpy(&servaddr.sin_addr, nslookup->h_addr, - sizeof(servaddr.sin_addr)); + memcpy(&servaddr.sin_addr, nslookup->h_addr, sizeof(servaddr.sin_addr)); } else if (!(servaddr.sin_addr.s_addr = inet_addr(server))) { @@ -125,19 +127,16 @@ } servaddr.sin_family = AF_INET; - servaddr.sin_port = htons(TCP_PORT_RDP); + servaddr.sin_port = htons(tcp_port_rdp); - if (connect - (sock, (struct sockaddr *) &servaddr, - sizeof(struct sockaddr)) < 0) + if (connect(sock, (struct sockaddr *) &servaddr, sizeof(struct sockaddr)) < 0) { error("connect: %s\n", strerror(errno)); close(sock); return False; } - setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (void *) &true, - sizeof(true)); + setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (void *) &true, sizeof(true)); in.size = 4096; in.data = xmalloc(in.size); @@ -150,7 +149,7 @@ /* Disconnect on the TCP layer */ void -tcp_disconnect() +tcp_disconnect(void) { close(sock); }