DWORD transport_get_event_handles(rdpTransport* transport, HANDLE* events, DWORD count) { DWORD nCount = 0; DWORD tmp; if (!transport->GatewayEnabled) { if (events && (nCount < count)) { if (BIO_get_event(transport->frontBio, &events[nCount]) != 1) return 0; nCount++; } } else { if (transport->rdg) { tmp = rdg_get_event_handles(transport->rdg, events, nCount - count); if (tmp == 0) return 0; nCount = tmp; } else if (transport->tsg) { tmp = tsg_get_event_handles(transport->tsg, events, nCount - count); if (tmp == 0) return 0; nCount = tmp; } } return nCount; }
DWORD transport_get_event_handles(rdpTransport* transport, HANDLE* events, DWORD count) { DWORD nCount = 1; /* always the reread Event */ DWORD tmp; if (events) { if (count < 1) { WLog_Print(transport->log, WLOG_ERROR, "%s: provided handles array is too small", __FUNCTION__); return 0; } events[0] = transport->rereadEvent; } if (!transport->GatewayEnabled) { nCount++; if (events) { if (nCount > count) { WLog_Print(transport->log, WLOG_ERROR, "%s: provided handles array is too small (count=%"PRIu32" nCount=%"PRIu32")", __FUNCTION__, count, nCount); return 0; } if (BIO_get_event(transport->frontBio, &events[1]) != 1) { WLog_Print(transport->log, WLOG_ERROR, "%s: error getting the frontBio handle", __FUNCTION__); return 0; } } } else { if (transport->rdg) { tmp = rdg_get_event_handles(transport->rdg, &events[1], count - 1); if (tmp == 0) return 0; nCount += tmp; } else if (transport->tsg) { tmp = tsg_get_event_handles(transport->tsg, &events[1], count - 1); if (tmp == 0) return 0; nCount += tmp; } } return nCount; }