From 68890cdf86147273392dceec7eeac32b3b642879 Mon Sep 17 00:00:00 2001 From: Eric House Date: Wed, 8 Jan 2020 11:12:12 -0800 Subject: [PATCH] don't pass relayDevID unless inviting using relay And do some cleanup to make things more clear --- xwords4/linux/gtkboard.c | 27 +++++++++++++++------------ xwords4/linux/gtkinvit.c | 23 ++++++++++------------- xwords4/linux/gtkinvit.h | 2 +- xwords4/linux/relaycon.c | 6 +++--- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/xwords4/linux/gtkboard.c b/xwords4/linux/gtkboard.c index 17e62780f..f40ffed47 100644 --- a/xwords4/linux/gtkboard.c +++ b/xwords4/linux/gtkboard.c @@ -85,7 +85,7 @@ static void handle_invite_button( GtkWidget* widget, GtkGameGlobals* globals ); static void gtkShowFinalScores( const GtkGameGlobals* globals, XP_Bool ignoreTimeout ); static void send_invites( CommonGlobals* cGlobals, XP_U16 nPlayers, - XP_U32 devID, const XP_UCHAR* relayID, + XP_U32 relayDevID, const XP_UCHAR* relayID, const CommsAddrRec* addrs ); @@ -1556,18 +1556,19 @@ handle_invite_button( GtkWidget* XP_UNUSED(widget), GtkGameGlobals* globals ) CommsAddrRec inviteAddr = {0}; gint nPlayers = nMissing; - XP_U32 devID; - XP_Bool confirmed = gtkInviteDlg( globals, &inviteAddr, &nPlayers, &devID ); + XP_U32 relayDevID = 0; + XP_Bool confirmed = gtkInviteDlg( globals, &inviteAddr, &nPlayers, + &relayDevID ); XP_LOGF( "%s: inviteDlg => %d", __func__, confirmed ); if ( confirmed ) { - send_invites( cGlobals, nPlayers, devID, NULL, &inviteAddr ); + send_invites( cGlobals, nPlayers, relayDevID, NULL, &inviteAddr ); } } /* handle_invite_button */ static void send_invites( CommonGlobals* cGlobals, XP_U16 nPlayers, - XP_U32 devID, const XP_UCHAR* relayID, + XP_U32 relayDevID, const XP_UCHAR* relayID, const CommsAddrRec* addrs ) { CommsAddrRec addr = {0}; @@ -1579,10 +1580,12 @@ send_invites( CommonGlobals* cGlobals, XP_U16 nPlayers, NetLaunchInfo nli = {0}; nli_init( &nli, cGlobals->gi, &addr, nPlayers, forceChannel ); - XP_UCHAR buf[32]; - snprintf( buf, sizeof(buf), "%X", makeRandomInt() ); - nli_setInviteID( &nli, buf ); - nli_setDevID( &nli, linux_getDevIDRelay( cGlobals->params ) ); + if ( 0 != relayDevID || !!relayID ) { + XP_UCHAR buf[32]; + snprintf( buf, sizeof(buf), "%X", makeRandomInt() ); + nli_setInviteID( &nli, buf ); + } + // nli_setDevID( &nli, linux_getDevIDRelay( cGlobals->params ) ); #ifdef DEBUG { @@ -1603,9 +1606,9 @@ send_invites( CommonGlobals* cGlobals, XP_U16 nPlayers, linux_sms_invite( cGlobals->params, &nli, addrs->u.sms.phone, addrs->u.sms.port ); } - if ( 0 != devID || !!relayID ) { - XP_ASSERT( 0 != devID || (!!relayID && !!relayID[0]) ); - relaycon_invite( cGlobals->params, devID, relayID, &nli ); + if ( 0 != relayDevID || !!relayID ) { + XP_ASSERT( 0 != relayDevID || (!!relayID && !!relayID[0]) ); + relaycon_invite( cGlobals->params, relayDevID, relayID, &nli ); } /* while ( gtkaskm( "Invite how many and how?", infos, VSIZE(infos) ) ) { */ diff --git a/xwords4/linux/gtkinvit.c b/xwords4/linux/gtkinvit.c index d2ca40fc1..c85a85f48 100644 --- a/xwords4/linux/gtkinvit.c +++ b/xwords4/linux/gtkinvit.c @@ -38,7 +38,7 @@ typedef struct _GtkInviteState { GtkGameGlobals* globals; CommsAddrRec* addr; gint* nPlayersP; - XP_U32* devIDp; + XP_U32* relayDevIDp; gint maxPlayers; GtkWidget* nPlayersCombo; @@ -96,7 +96,7 @@ handle_ok( GtkWidget* XP_UNUSED(widget), gpointer closure ) case COMMS_CONN_RELAY: txt = gtk_entry_get_text( GTK_ENTRY(state->devID) ); snprintf( s_devIDBuf, sizeof(s_devIDBuf), "%s", txt ); - *state->devIDp = atoi( txt ); + *state->relayDevIDp = atoi( txt ); break; #endif #ifdef XWFEATURE_BLUETOOTH @@ -275,18 +275,15 @@ onPageChanged( GtkNotebook* XP_UNUSED(notebook), gpointer XP_UNUSED(arg1), XP_Bool gtkInviteDlg( GtkGameGlobals* globals, CommsAddrRec* addr, - gint* nPlayersP, XP_U32* devIDp ) - - + gint* nPlayersP, XP_U32* relayDevIDp ) { - GtkInviteState state; - XP_MEMSET( &state, 0, sizeof(state) ); - - state.globals = globals; - state.addr = addr; - state.nPlayersP = nPlayersP; - state.devIDp = devIDp; - state.maxPlayers = *nPlayersP; + GtkInviteState state = { + .globals = globals, + .addr = addr, + .nPlayersP = nPlayersP, + .relayDevIDp = relayDevIDp, + .maxPlayers = *nPlayersP, + }; GtkWidget* dialog; GtkWidget* hbox; diff --git a/xwords4/linux/gtkinvit.h b/xwords4/linux/gtkinvit.h index 5bb1b02f2..3f5cb960d 100644 --- a/xwords4/linux/gtkinvit.h +++ b/xwords4/linux/gtkinvit.h @@ -24,7 +24,7 @@ /* return true if not cancelled */ XP_Bool gtkInviteDlg( GtkGameGlobals* globals, CommsAddrRec* addr, - /*inout*/ gint* nPlayers, /* out */ XP_U32* devID ); + /*inout*/ gint* nPlayers, /* out */ XP_U32* relayDevID ); #endif diff --git a/xwords4/linux/relaycon.c b/xwords4/linux/relaycon.c index 03b2e69b5..7ffbeab9f 100644 --- a/xwords4/linux/relaycon.c +++ b/xwords4/linux/relaycon.c @@ -313,7 +313,7 @@ relaycon_reg( LaunchParams* params, const XP_UCHAR* rDevID, } void -relaycon_invite( LaunchParams* params, XP_U32 destDevID, +relaycon_invite( LaunchParams* params, XP_U32 destRelayDevID, const XP_UCHAR* relayID, NetLaunchInfo* invit ) { XP_U8 tmpbuf[256]; @@ -326,13 +326,13 @@ relaycon_invite( LaunchParams* params, XP_U32 destDevID, /* write relayID /, or if we have an actual devID write a null byte plus it. */ - if ( 0 == destDevID ) { + if ( 0 == destRelayDevID ) { XP_ASSERT( '\0' != relayID[0] ); indx += writeBytes( &tmpbuf[indx], sizeof(tmpbuf) - indx, (XP_U8*)relayID, 1 + XP_STRLEN( relayID ) ); } else { tmpbuf[indx++] = '\0'; /* null byte: zero-len str */ - indx += writeLong( &tmpbuf[indx], sizeof(tmpbuf) - indx, destDevID ); + indx += writeLong( &tmpbuf[indx], sizeof(tmpbuf) - indx, destRelayDevID ); } XWStreamCtxt* stream = mem_stream_make_raw( MPPARM(params->mpool)