From 775715848c0baa03157b5fa7bbc57cf5dca1ae12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20=C3=85strand?= Date: Thu, 7 Jan 2010 18:31:16 +0000 Subject: [PATCH] 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 --- mcs.c | 59 ++++++++++++++++++++--------------------------------------- 1 file changed, 20 insertions(+), 39 deletions(-) diff --git a/mcs.c b/mcs.c index d527929..7c9f2eb 100644 --- a/mcs.c +++ b/mcs.c @@ -372,14 +372,21 @@ mcs_recv(uint16 * channel, uint8 * rdpver) return s; } -/* Establish a connection up to the MCS layer */ 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; - if (!iso_connect(server, username)) - return False; + if (reconnect) + { + if (!iso_reconnect(server)) + return False; + } + else + { + if (!iso_connect(server, username)) + return False; + } mcs_send_connect_initial(mcs_data); if (!mcs_recv_connect_response(mcs_data)) @@ -413,45 +420,19 @@ mcs_connect(char *server, STREAM mcs_data, char *username) 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) { - unsigned int i; - - 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; + return mcs_connect_common(server, mcs_data, NULL, False); } /* Disconnect from the MCS layer */