xrdpapi: send for all bytes
This commit is contained in:
parent
4f6cbfd3fe
commit
d1fc67102a
@ -155,6 +155,31 @@ WTSVirtualChannelOpenEx(unsigned int SessionId, const char *pVirtualName,
|
|||||||
return wts;
|
return wts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
static int
|
||||||
|
mysend(int sck, const void* adata, int bytes)
|
||||||
|
{
|
||||||
|
int sent;
|
||||||
|
int error;
|
||||||
|
const char* data;
|
||||||
|
|
||||||
|
data = (char*)adata;
|
||||||
|
sent = 0;
|
||||||
|
while (sent < bytes)
|
||||||
|
{
|
||||||
|
if (can_send(sck, 100))
|
||||||
|
{
|
||||||
|
error = send(sck, data + sent, bytes - sent, MSG_NOSIGNAL);
|
||||||
|
if (error < 1)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
sent += error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sent;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* write data to client connection
|
* write data to client connection
|
||||||
*
|
*
|
||||||
@ -189,11 +214,12 @@ WTSVirtualChannelWrite(void *hChannelHandle, const char *Buffer,
|
|||||||
return 0; /* can't write now, ok to try again */
|
return 0; /* can't write now, ok to try again */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rv = 0;
|
||||||
memcpy(header, g_xrdpapi_magic, 12);
|
memcpy(header, g_xrdpapi_magic, 12);
|
||||||
header[3] = Length;
|
header[3] = Length;
|
||||||
if (send(wts->fd, header, 16, 0) == 16)
|
if (mysend(wts->fd, header, 16) == 16)
|
||||||
{
|
{
|
||||||
rv = send(wts->fd, Buffer, Length, 0);
|
rv = mysend(wts->fd, Buffer, Length);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -201,7 +227,7 @@ WTSVirtualChannelWrite(void *hChannelHandle, const char *Buffer,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
LLOGLN(10, ("WTSVirtualChannelWrite: send() reted %d", rv));
|
LLOGLN(10, ("WTSVirtualChannelWrite: mysend() reted %d", rv));
|
||||||
|
|
||||||
if (rv >= 0)
|
if (rv >= 0)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user