Avoid code duplication in mcs_connect/mcs_reconnect.

git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/rdesktop/trunk@1524 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
Peter Åstrand 2010-01-07 18:31:16 +00:00
parent 1f3d7e61bc
commit 775715848c

55
mcs.c
View File

@ -372,14 +372,21 @@ mcs_recv(uint16 * channel, uint8 * rdpver)
return s; return s;
} }
/* Establish a connection up to the MCS layer */
RD_BOOL RD_BOOL
mcs_connect(char *server, STREAM mcs_data, char *username) mcs_connect_common(char *server, STREAM mcs_data, char *username, RD_BOOL reconnect)
{ {
unsigned int i; unsigned int i;
if (reconnect)
{
if (!iso_reconnect(server))
return False;
}
else
{
if (!iso_connect(server, username)) if (!iso_connect(server, username))
return False; return False;
}
mcs_send_connect_initial(mcs_data); mcs_send_connect_initial(mcs_data);
if (!mcs_recv_connect_response(mcs_data)) if (!mcs_recv_connect_response(mcs_data))
@ -413,45 +420,19 @@ mcs_connect(char *server, STREAM mcs_data, char *username)
return False; 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 */ /* Establish a connection up to the MCS layer */
RD_BOOL RD_BOOL
mcs_reconnect(char *server, STREAM mcs_data) mcs_reconnect(char *server, STREAM mcs_data)
{ {
unsigned int i; return mcs_connect_common(server, mcs_data, NULL, False);
if (!iso_reconnect(server))
return False;
mcs_send_connect_initial(mcs_data);
if (!mcs_recv_connect_response(mcs_data))
goto error;
mcs_send_edrq();
mcs_send_aurq();
if (!mcs_recv_aucf(&g_mcs_userid))
goto error;
mcs_send_cjrq(g_mcs_userid + MCS_USERCHANNEL_BASE);
if (!mcs_recv_cjcf())
goto error;
mcs_send_cjrq(MCS_GLOBAL_CHANNEL);
if (!mcs_recv_cjcf())
goto error;
for (i = 0; i < g_num_channels; i++)
{
mcs_send_cjrq(g_channels[i].mcs_id);
if (!mcs_recv_cjcf())
goto error;
}
return True;
error:
iso_disconnect();
return False;
} }
/* Disconnect from the MCS layer */ /* Disconnect from the MCS layer */