/[rdesktop]/sourceforge.net/trunk/seamlessrdp/ServerExe/vchannel.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/seamlessrdp/ServerExe/vchannel.c

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

revision 1077 by ossman_, Thu Mar 9 15:14:53 2006 UTC revision 1078 by ossman_, Thu Mar 9 15:27:39 2006 UTC
# Line 61  vchannel_open() Line 61  vchannel_open()
61                  return -1;                  return -1;
62    
63          g_mutex = CreateMutex(NULL, FALSE, "Local\\SeamlessChannel");          g_mutex = CreateMutex(NULL, FALSE, "Local\\SeamlessChannel");
64          if (!g_mutex) {          if (!g_mutex)
65            {
66                  WTSVirtualChannelClose(g_vchannel);                  WTSVirtualChannelClose(g_vchannel);
67                  g_vchannel = NULL;                  g_vchannel = NULL;
68                  return -1;                  return -1;
# Line 108  vchannel_read(char *line, size_t length) Line 109  vchannel_read(char *line, size_t length)
109          result = WTSVirtualChannelRead(g_vchannel, 0, buffer + size,          result = WTSVirtualChannelRead(g_vchannel, 0, buffer + size,
110                                         sizeof(buffer) - size, &bytes_read);                                         sizeof(buffer) - size, &bytes_read);
111    
112          if (!result) {          if (!result)
113            {
114                  errno = EIO;                  errno = EIO;
115                  return -1;                  return -1;
116          }          }
117    
118          if (overflow_mode) {          if (overflow_mode)
119            {
120                  newline = strchr(buffer, '\n');                  newline = strchr(buffer, '\n');
121                  if (newline && (newline - buffer) < bytes_read) {                  if (newline && (newline - buffer) < bytes_read)
122                    {
123                          size = bytes_read - (newline - buffer) - 1;                          size = bytes_read - (newline - buffer) - 1;
124                          memmove(buffer, newline + 1, size);                          memmove(buffer, newline + 1, size);
125                          overflow_mode = FALSE;                          overflow_mode = FALSE;
# Line 124  vchannel_read(char *line, size_t length) Line 128  vchannel_read(char *line, size_t length)
128          else          else
129                  size += bytes_read;                  size += bytes_read;
130    
131          if (overflow_mode) {          if (overflow_mode)
132            {
133                  errno = -EAGAIN;                  errno = -EAGAIN;
134                  return -1;                  return -1;
135          }          }
136    
137          newline = strchr(buffer, '\n');          newline = strchr(buffer, '\n');
138          if (!newline || (newline - buffer) >= size) {          if (!newline || (newline - buffer) >= size)
139                  if (size == sizeof(buffer)) {          {
140                    if (size == sizeof(buffer))
141                    {
142                          overflow_mode = TRUE;                          overflow_mode = TRUE;
143                          size = 0;                          size = 0;
144                  }                  }
# Line 139  vchannel_read(char *line, size_t length) Line 146  vchannel_read(char *line, size_t length)
146                  return -1;                  return -1;
147          }          }
148    
149          if ((newline - buffer) >= length) {          if ((newline - buffer) >= length)
150            {
151                  errno = ENOMEM;                  errno = ENOMEM;
152                  return -1;                  return -1;
153          }          }

Legend:
Removed from v.1077  
changed lines
  Added in v.1078

  ViewVC Help
Powered by ViewVC 1.1.26