Elminate code duplication in rdp_reconnect and sec_connect.
git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/rdesktop/trunk@1528 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
parent
cf715c225c
commit
440542c535
16
constants.h
16
constants.h
@ -122,12 +122,26 @@ enum RDP_DATA_PDU_TYPE
|
||||
RDP_DATA_PDU_SYNCHRONISE = 31,
|
||||
RDP_DATA_PDU_BELL = 34,
|
||||
RDP_DATA_PDU_CLIENT_WINDOW_STATUS = 35,
|
||||
RDP_DATA_PDU_LOGON = 38,
|
||||
RDP_DATA_PDU_LOGON = 38, /* PDUTYPE2_SAVE_SESSION_INFO */
|
||||
RDP_DATA_PDU_FONT2 = 39,
|
||||
RDP_DATA_PDU_KEYBOARD_INDICATORS = 41,
|
||||
RDP_DATA_PDU_DISCONNECT = 47
|
||||
};
|
||||
|
||||
enum RDP_SAVE_SESSION_PDU_TYPE
|
||||
{
|
||||
INFOTYPE_LOGON = 0,
|
||||
INFOTYPE_LOGON_LONG = 1,
|
||||
INFOTYPE_LOGON_PLAINNOTIFY = 2,
|
||||
INFOTYPE_LOGON_EXTENDED_INF = 3
|
||||
};
|
||||
|
||||
enum RDP_LOGON_INFO_EXTENDED_TYPE
|
||||
{
|
||||
LOGON_EX_AUTORECONNECTCOOKIE = 1,
|
||||
LOGON_EX_LOGONERRORS = 2
|
||||
};
|
||||
|
||||
enum RDP_CONTROL_PDU_TYPE
|
||||
{
|
||||
RDP_CTL_REQUEST_CONTROL = 1,
|
||||
|
17
mcs.c
17
mcs.c
@ -373,7 +373,7 @@ mcs_recv(uint16 * channel, uint8 * rdpver)
|
||||
}
|
||||
|
||||
RD_BOOL
|
||||
mcs_connect_common(char *server, STREAM mcs_data, char *username, RD_BOOL reconnect)
|
||||
mcs_connect(char *server, STREAM mcs_data, char *username, RD_BOOL reconnect)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
@ -412,21 +412,6 @@ mcs_connect_common(char *server, STREAM mcs_data, char *username, RD_BOOL reconn
|
||||
return False;
|
||||
}
|
||||
|
||||
/* Establish a connection up to the MCS layer */
|
||||
RD_BOOL
|
||||
mcs_connect(char *server, STREAM mcs_data, char *username)
|
||||
{
|
||||
return mcs_connect_common(server, mcs_data, username, False);
|
||||
}
|
||||
|
||||
|
||||
/* Establish a connection up to the MCS layer */
|
||||
RD_BOOL
|
||||
mcs_reconnect(char *server, STREAM mcs_data)
|
||||
{
|
||||
return mcs_connect_common(server, mcs_data, NULL, False);
|
||||
}
|
||||
|
||||
/* Disconnect from the MCS layer */
|
||||
void
|
||||
mcs_disconnect(void)
|
||||
|
10
proto.h
10
proto.h
@ -85,8 +85,7 @@ STREAM mcs_init(int length);
|
||||
void mcs_send_to_channel(STREAM s, uint16 channel);
|
||||
void mcs_send(STREAM s);
|
||||
STREAM mcs_recv(uint16 * channel, uint8 * rdpver);
|
||||
RD_BOOL mcs_connect(char *server, STREAM mcs_data, char *username);
|
||||
RD_BOOL mcs_reconnect(char *server, STREAM mcs_data);
|
||||
RD_BOOL mcs_connect(char *server, STREAM mcs_data, char *username, RD_BOOL reconnect);
|
||||
void mcs_disconnect(void);
|
||||
void mcs_reset_state(void);
|
||||
/* orders.c */
|
||||
@ -152,9 +151,7 @@ void process_disconnect_pdu(STREAM s, uint32 * ext_disc_reason);
|
||||
void rdp_main_loop(RD_BOOL * deactivated, uint32 * ext_disc_reason);
|
||||
RD_BOOL rdp_loop(RD_BOOL * deactivated, uint32 * ext_disc_reason);
|
||||
RD_BOOL rdp_connect(char *server, uint32 flags, char *domain, char *password, char *command,
|
||||
char *directory);
|
||||
RD_BOOL rdp_reconnect(char *server, uint32 flags, char *domain, char *password, char *command,
|
||||
char *directory, char *cookie);
|
||||
char *directory, RD_BOOL reconnect);
|
||||
void rdp_reset_state(void);
|
||||
void rdp_disconnect(void);
|
||||
/* rdpdr.c */
|
||||
@ -190,8 +187,7 @@ void sec_send_to_channel(STREAM s, uint32 flags, uint16 channel);
|
||||
void sec_send(STREAM s, uint32 flags);
|
||||
void sec_process_mcs_data(STREAM s);
|
||||
STREAM sec_recv(uint8 * rdpver);
|
||||
RD_BOOL sec_connect(char *server, char *username);
|
||||
RD_BOOL sec_reconnect(char *server);
|
||||
RD_BOOL sec_connect(char *server, char *username, RD_BOOL reconnect);
|
||||
void sec_disconnect(void);
|
||||
void sec_reset_state(void);
|
||||
/* serial.c */
|
||||
|
@ -963,11 +963,10 @@ main(int argc, char *argv[])
|
||||
{
|
||||
if (run_count == 0)
|
||||
{
|
||||
if (!rdp_connect(server, flags, domain, password, shell, directory))
|
||||
if (!rdp_connect(server, flags, domain, password, shell, directory, False))
|
||||
return EX_PROTOCOL;
|
||||
}
|
||||
else if (!rdp_reconnect
|
||||
(server, flags, domain, password, shell, directory, g_redirect_cookie))
|
||||
else if (!rdp_connect(server, flags, domain, password, shell, directory, True))
|
||||
return EX_PROTOCOL;
|
||||
|
||||
/* By setting encryption to False here, we have an encrypted login
|
||||
|
16
rdp.c
16
rdp.c
@ -1513,21 +1513,9 @@ rdp_loop(RD_BOOL * deactivated, uint32 * ext_disc_reason)
|
||||
/* Establish a connection up to the RDP layer */
|
||||
RD_BOOL
|
||||
rdp_connect(char *server, uint32 flags, char *domain, char *password,
|
||||
char *command, char *directory)
|
||||
char *command, char *directory, RD_BOOL reconnect)
|
||||
{
|
||||
if (!sec_connect(server, g_username))
|
||||
return False;
|
||||
|
||||
rdp_send_logon_info(flags, domain, g_username, password, command, directory);
|
||||
return True;
|
||||
}
|
||||
|
||||
/* Establish a reconnection up to the RDP layer */
|
||||
RD_BOOL
|
||||
rdp_reconnect(char *server, uint32 flags, char *domain, char *password,
|
||||
char *command, char *directory, char *cookie)
|
||||
{
|
||||
if (!sec_reconnect(server))
|
||||
if (!sec_connect(server, g_username, reconnect))
|
||||
return False;
|
||||
|
||||
rdp_send_logon_info(flags, domain, g_username, password, command, directory);
|
||||
|
25
secure.c
25
secure.c
@ -838,7 +838,7 @@ sec_recv(uint8 * rdpver)
|
||||
|
||||
/* Establish a secure connection */
|
||||
RD_BOOL
|
||||
sec_connect(char *server, char *username)
|
||||
sec_connect(char *server, char *username, RD_BOOL reconnect)
|
||||
{
|
||||
struct stream mcs_data;
|
||||
|
||||
@ -847,28 +847,7 @@ sec_connect(char *server, char *username)
|
||||
mcs_data.p = mcs_data.data = (uint8 *) xmalloc(mcs_data.size);
|
||||
sec_out_mcs_data(&mcs_data);
|
||||
|
||||
if (!mcs_connect(server, &mcs_data, username))
|
||||
return False;
|
||||
|
||||
/* sec_process_mcs_data(&mcs_data); */
|
||||
if (g_encryption)
|
||||
sec_establish_key();
|
||||
xfree(mcs_data.data);
|
||||
return True;
|
||||
}
|
||||
|
||||
/* Establish a secure connection */
|
||||
RD_BOOL
|
||||
sec_reconnect(char *server)
|
||||
{
|
||||
struct stream mcs_data;
|
||||
|
||||
/* We exchange some RDP data during the MCS-Connect */
|
||||
mcs_data.size = 512;
|
||||
mcs_data.p = mcs_data.data = (uint8 *) xmalloc(mcs_data.size);
|
||||
sec_out_mcs_data(&mcs_data);
|
||||
|
||||
if (!mcs_reconnect(server, &mcs_data))
|
||||
if (!mcs_connect(server, &mcs_data, username, reconnect))
|
||||
return False;
|
||||
|
||||
/* sec_process_mcs_data(&mcs_data); */
|
||||
|
Loading…
Reference in New Issue
Block a user