Пример #1
0
/* used in uiports and rdp_main_loop, processes the rdp packets waiting */
RD_BOOL
rdp_loop(RD_BOOL * deactivated, uint32 * ext_disc_reason)
{
    uint8 type;
    RD_BOOL cont = True;
    STREAM s;

    while (cont)
    {
        s = rdp_recv(&type);
        if (s == NULL)
            return False;
        switch (type)
        {
        case RDP_PDU_DEMAND_ACTIVE:
            process_demand_active(s);
            *deactivated = False;
            break;
        case RDP_PDU_DEACTIVATE:
            DEBUG(("RDP_PDU_DEACTIVATE\n"));
            *deactivated = True;
            break;
        case RDP_PDU_REDIRECT:
            return process_redirect_pdu(s, False);
            break;
        case RDP_PDU_ENHANCED_REDIRECT:
            return process_redirect_pdu(s, True);
            break;
        case RDP_PDU_DATA:
            /* If we got a data PDU, we don't need to keep the password in memory
               anymore and therefor we should clear it for security reasons. */
            if (g_password[0] != '\0')
                memset(g_password, 0, sizeof(g_password));

            process_data_pdu(s, ext_disc_reason);
            break;
        case 0:
            break;
        default:
            unimpl("PDU %d\n", type);
        }
        cont = g_next_packet < s->end;
    }
    return True;
}
Пример #2
0
/* used in uiports and rdp_main_loop, processes the rdp packets waiting */
RD_BOOL rdp_loop(RD_BOOL * deactivated, uint32 * ext_disc_reason) {
	__android_log_print(ANDROID_LOG_INFO, "JNIMsg", "rdp_loop");
	uint8 type;
	RD_BOOL cont = True;
	STREAM s;

	while (cont) {
		s = rdp_recv(&type);
		if (s == NULL)
			return False;
		switch (type) {
		case RDP_PDU_DEMAND_ACTIVE:
			__android_log_print(ANDROID_LOG_INFO, "JNIMsg",
					"rdp_loop RDP_PDU_DEMAND_ACTIVE");
			process_demand_active(s);
			*deactivated = False;
			break;
		case RDP_PDU_DEACTIVATE:
			__android_log_print(ANDROID_LOG_INFO, "JNIMsg",
					"rdp_loop RDP_PDU_DEACTIVATE");
			DEBUG(("RDP_PDU_DEACTIVATE\n"));
			*deactivated = True;
			break;
		case RDP_PDU_REDIRECT:
			__android_log_print(ANDROID_LOG_INFO, "JNIMsg",
					"rdp_loop RDP_PDU_REDIRECT");
			return process_redirect_pdu(s);
			break;
		case RDP_PDU_DATA:
			__android_log_print(ANDROID_LOG_INFO, "JNIMsg",
					"rdp_loop RDP_PDU_DATA");
			process_data_pdu(s, ext_disc_reason);
			break;
		case 0:
			break;
		default:
			unimpl("PDU %d\n", type);
		}
		cont = g_next_packet < s->end;
	}
	return True;
}
Пример #3
0
/* used in uiports and rdp_main_loop, processes the rdp packets waiting */
BOOL
rdp_loop(RDPCLIENT * This, BOOL * deactivated, uint32 * ext_disc_reason)
{
	uint8 type;
	BOOL disc = False;	/* True when a disconnect PDU was received */
	BOOL cont = True;
	STREAM s;

	while (cont)
	{
		s = rdp_recv(This, &type);
		if (s == NULL)
			return False;
		switch (type)
		{
			case RDP_PDU_DEMAND_ACTIVE:
				if(!process_demand_active(This, s))
					return False;
				*deactivated = False;
				break;
			case RDP_PDU_DEACTIVATE:
				DEBUG(("RDP_PDU_DEACTIVATE\n"));
				*deactivated = True;
				break;
			case RDP_PDU_REDIRECT:
				return process_redirect_pdu(This, s);
				break;
			case RDP_PDU_DATA:
				disc = process_data_pdu(This, s, ext_disc_reason);
				break;
			case 0:
				break;
			default:
				unimpl("PDU %d\n", type);
		}
		if (disc)
			return False;
		cont = This->next_packet < s->end;
	}
	return True;
}
Пример #4
0
/* Process incoming packets */
BOOL
rdp_main_loop(void)
{
	uint8 type;
	STREAM s;

	while ((s = rdp_recv(&type)) != NULL)
	{
		switch (type)
		{
			case RDP_PDU_DEMAND_ACTIVE:
				process_demand_active(s);
				break;

			case RDP_PDU_DEACTIVATE:
				DEBUG(("RDP_PDU_DEACTIVATE\n"));
				/* We thought we could detect a clean
				   shutdown of the session by this
				   packet, but it seems Windows 2003
				   is sending us one of these when we
				   reconnect to a disconnected session
				   return True; */
				break;

			case RDP_PDU_DATA:
				process_data_pdu(s);
				break;

			case 0:
				break;

			default:
				unimpl("PDU %d\n", type);
		}
	}
	return True;
	/* We want to detect if we got a clean shutdown, but we
	   can't. Se above.  
	   return False;  */
}
Пример #5
0
/* used in uiports and rdp_main_loop, processes the rdp packets waiting */
RD_BOOL
rdp_loop(RD_BOOL * deactivated, uint32 * ext_disc_reason)
{
	uint8 type;
	RD_BOOL cont = True;
	STREAM s;

	while (cont)
	{
		s = rdp_recv(&type);
		if (s == NULL)
			return False;
		switch (type)
		{
			case RDP_PDU_DEMAND_ACTIVE:
				process_demand_active(s);
				*deactivated = False;
				break;
			case RDP_PDU_DEACTIVATE:
				DEBUG(("RDP_PDU_DEACTIVATE\n"));
				*deactivated = True;
				break;
			case RDP_PDU_REDIRECT:
				return process_redirect_pdu(s);
				break;
			case RDP_PDU_DATA:
				process_data_pdu(s, ext_disc_reason);
				break;
			case 0:
				break;
			default:
				unimpl("PDU %d\n", type);
		}
		cont = g_next_packet < s->end;
	}
	return True;
}