tsg_read can also return 0 which means that no data (complete PDU) is
currently available. This case wasn't handled properly.
Fixes #2056
return TRUE;
}
+/**
+ * @brief
+ *
+ * @param[in] tsg
+ * @param[in] data
+ * @param[in] length
+ * @return < 0 on error; 0 if not enough data is available (non blocking mode); > 0 bytes to read
+ */
+
+
int tsg_read(rdpTsg* tsg, BYTE* data, UINT32 length)
{
int CopyLength;
{
BIO_clear_flags(bio, BIO_FLAGS_SHOULD_RETRY);
}
+ else if (status == 0)
+ {
+ BIO_set_flags(bio, BIO_FLAGS_SHOULD_RETRY);
+ }
else
{
BIO_set_flags(bio, BIO_FLAGS_READ);
}
- return status >= 0 ? status : -1;
+ return status > 0 ? status : -1;
}
static int transport_bio_tsg_puts(BIO* bio, const char* str)