Avoid code duplication in iso_connect/iso_reconnect.

git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/rdesktop/trunk@1526 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
Peter Åstrand 2010-01-07 18:42:47 +00:00
parent a410341c11
commit d00373436a
3 changed files with 10 additions and 36 deletions

31
iso.c
View File

@ -174,38 +174,21 @@ iso_recv(uint8 * rdpver)
/* Establish a connection up to the ISO layer */ /* Establish a connection up to the ISO layer */
RD_BOOL RD_BOOL
iso_connect(char *server, char *username) iso_connect(char *server, char *username, RD_BOOL reconnect)
{ {
uint8 code = 0; uint8 code = 0;
if (!tcp_connect(server)) if (!tcp_connect(server))
return False; return False;
iso_send_connection_request(username); if (reconnect)
if (iso_recv_msg(&code, NULL) == NULL)
return False;
if (code != ISO_PDU_CC)
{ {
error("expected CC, got 0x%x\n", code); iso_send_msg(ISO_PDU_CR);
tcp_disconnect(); }
return False; else
{
iso_send_connection_request(username);
} }
return True;
}
/* Establish a reconnection up to the ISO layer */
RD_BOOL
iso_reconnect(char *server)
{
uint8 code = 0;
if (!tcp_connect(server))
return False;
iso_send_msg(ISO_PDU_CR);
if (iso_recv_msg(&code, NULL) == NULL) if (iso_recv_msg(&code, NULL) == NULL)
return False; return False;

12
mcs.c
View File

@ -377,16 +377,8 @@ mcs_connect_common(char *server, STREAM mcs_data, char *username, RD_BOOL reconn
{ {
unsigned int i; unsigned int i;
if (reconnect) if (!iso_connect(server, username, reconnect))
{ return False;
if (!iso_reconnect(server))
return False;
}
else
{
if (!iso_connect(server, username))
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))

View File

@ -75,8 +75,7 @@ void ewmh_init(void);
STREAM iso_init(int length); STREAM iso_init(int length);
void iso_send(STREAM s); void iso_send(STREAM s);
STREAM iso_recv(uint8 * rdpver); STREAM iso_recv(uint8 * rdpver);
RD_BOOL iso_connect(char *server, char *username); RD_BOOL iso_connect(char *server, char *username, RD_BOOL reconnect);
RD_BOOL iso_reconnect(char *server);
void iso_disconnect(void); void iso_disconnect(void);
void iso_reset_state(void); void iso_reset_state(void);
/* licence.c */ /* licence.c */