/[rdesktop]/sourceforge.net/trunk/rdesktop/tcp.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /sourceforge.net/trunk/rdesktop/tcp.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 33 by matty, Sat Sep 15 12:34:34 2001 UTC revision 376 by jsorg71, Mon May 19 21:36:33 2003 UTC
# Line 1  Line 1 
1  /*  /*
2     rdesktop: A Remote Desktop Protocol client.     rdesktop: A Remote Desktop Protocol client.
3     Protocol services - TCP layer     Protocol services - TCP layer
4     Copyright (C) Matthew Chapman 1999-2001     Copyright (C) Matthew Chapman 1999-2002
5        
6     This program is free software; you can redistribute it and/or modify     This program is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by     it under the terms of the GNU General Public License as published by
# Line 12  Line 12 
12     but WITHOUT ANY WARRANTY; without even the implied warranty of     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.     GNU General Public License for more details.
15      
16     You should have received a copy of the GNU General Public License     You should have received a copy of the GNU General Public License
17     along with this program; if not, write to the Free Software     along with this program; if not, write to the Free Software
18     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# Line 28  Line 28 
28  #include <errno.h>              /* errno */  #include <errno.h>              /* errno */
29  #include "rdesktop.h"  #include "rdesktop.h"
30    
31    #ifndef INADDR_NONE
32    #define INADDR_NONE ((unsigned long) -1)
33    #endif
34    
35  static int sock;  static int sock;
36  static struct stream in;  static struct stream in;
37  static struct stream out;  static struct stream out;
38    extern int tcp_port_rdp;
39    
40  /* Initialise TCP transport data packet */  /* Initialise TCP transport data packet */
41  STREAM  STREAM
42  tcp_init(int maxlen)  tcp_init(uint32 maxlen)
43  {  {
44          if (maxlen > out.size)          if (maxlen > out.size)
45          {          {
46                  out.data = xrealloc(out.data, maxlen);                  out.data = (uint8*)xrealloc(out.data, maxlen);
47                  out.size = maxlen;                  out.size = maxlen;
48          }          }
49    
# Line 69  tcp_send(STREAM s) Line 74  tcp_send(STREAM s)
74    
75  /* Receive a message on the TCP layer */  /* Receive a message on the TCP layer */
76  STREAM  STREAM
77  tcp_recv(int length)  tcp_recv(uint32 length)
78  {  {
79          int rcvd = 0;          int rcvd = 0;
80    
81          if (length > in.size)          if (length > in.size)
82          {          {
83                  in.data = xrealloc(in.data, length);                  in.data = (uint8*)xrealloc(in.data, length);
84                  in.size = length;                  in.size = length;
85          }          }
86    
# Line 83  tcp_recv(int length) Line 88  tcp_recv(int length)
88    
89          while (length > 0)          while (length > 0)
90          {          {
91                  ui_select(sock);                  if (!ui_select(sock))
92                            /* User quit */
93                            return NULL;
94    
95                  rcvd = recv(sock, in.end, length, 0);                  rcvd = recv(sock, in.end, length, 0);
96                  if (rcvd == -1)                  if (rcvd == -1)
# Line 105  tcp_connect(char *server) Line 112  tcp_connect(char *server)
112  {  {
113          struct hostent *nslookup;          struct hostent *nslookup;
114          struct sockaddr_in servaddr;          struct sockaddr_in servaddr;
115          int true = 1;          int true_value = 1;
116    
117          if ((nslookup = gethostbyname(server)) != NULL)          if ((nslookup = gethostbyname(server)) != NULL)
118          {          {
119                  memcpy(&servaddr.sin_addr, nslookup->h_addr,                  memcpy(&servaddr.sin_addr, nslookup->h_addr, sizeof(servaddr.sin_addr));
                        sizeof(servaddr.sin_addr));  
120          }          }
121          else if (!(servaddr.sin_addr.s_addr = inet_addr(server)))          else if ((servaddr.sin_addr.s_addr = inet_addr(server)) == INADDR_NONE)
122          {          {
123                  error("%s: unable to resolve host\n", server);                  error("%s: unable to resolve host\n", server);
124                  return False;                  return False;
# Line 125  tcp_connect(char *server) Line 131  tcp_connect(char *server)
131          }          }
132    
133          servaddr.sin_family = AF_INET;          servaddr.sin_family = AF_INET;
134          servaddr.sin_port = htons(TCP_PORT_RDP);          servaddr.sin_port = htons(tcp_port_rdp);
135    
136          if (connect          if (connect(sock, (struct sockaddr *) &servaddr, sizeof(struct sockaddr)) < 0)
             (sock, (struct sockaddr *) &servaddr,  
              sizeof(struct sockaddr)) < 0)  
137          {          {
138                  error("connect: %s\n", strerror(errno));                  error("connect: %s\n", strerror(errno));
139                  close(sock);                  close(sock);
140                  return False;                  return False;
141          }          }
142    
143          setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (void *) &true,          setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (void *) &true_value, sizeof(true_value));
                    sizeof(true));  
144    
145          in.size = 4096;          in.size = 4096;
146          in.data = xmalloc(in.size);          in.data = (uint8*)xmalloc(in.size);
147    
148          out.size = 4096;          out.size = 4096;
149          out.data = xmalloc(out.size);          out.data = (uint8*)xmalloc(out.size);
150    
151          return True;          return True;
152  }  }
153    
154  /* Disconnect on the TCP layer */  /* Disconnect on the TCP layer */
155  void  void
156  tcp_disconnect()  tcp_disconnect(void)
157  {  {
158          close(sock);          close(sock);
159  }  }

Legend:
Removed from v.33  
changed lines
  Added in v.376

  ViewVC Help
Powered by ViewVC 1.1.26