[Swan-dev] xauth_send_request has a comment that confuses me

Antony Antony antony at phenome.org
Mon Oct 2 17:13:01 UTC 2017


On Mon, Oct 02, 2017 at 12:43:51PM -0400, Paul Wouters wrote:
> On Sun, 1 Oct 2017, D. Hugh Redelmeier wrote:
> 
> > At the end of xauth_send_request:
> > 
> >        /* RETRANSMIT if Main, SA_REPLACE if Aggressive */
> > 	/* ??? the actual code seems to force EVENT_v1_RETRANSMIT */
> > 	if (st->st_event->ev_type != EVENT_v1_RETRANSMIT) {
> > 		delete_event(st);
> >                event_schedule_ms(EVENT_v1_RETRANSMIT,
> >                  		st->st_connection->r_interval, st);
> >        }
> > 
> > I don't understand how the comment matches the code.  Is the comment
> > correct?  Is the code?  If both are correct, I suggest the comment
> > needs expansion to make this clear.
> 
> The comments go back to the initial import of openswan 2.0.0.
> 
> I don't understand the comment and I'm happy the code doesn't follow it.
> 
> I've removed the comments.

well if the comment was true I could avoid double sending in server.c
resend_ike_v1_msg see the comment 0cab34e4e
if (st->st_state == STATE_XAUTH_R0) {
	       /* may cause double in aggrmode=yes, it is not fatal, fixme 
		event_schedule_ms(EVENT_v1_SEND_XAUTH, EVENT_v1_SEND_XAUTH_DELAY, st);
}

Paul, do you know how to check in resend_ike_v1_msg wheater a st is Main 
mode or Aggressive mode? Both cases current state is STATE_XAUTH_R0. I want 
to know the previous one, STATE_AGGR_R2 or STATE_MAIN_R3. 

> > Bonus issue:
> > 
> > - The same comment and code appear in modecfg_send_request.
> > 
> > - The same comment and almost the same code appear in
> >  modecfg_send_set.
> > 
> > Should this be turned into a function?
> 
> It's 3 lines, so I'm not worried. But I don't mind either.
> 
> > Is the difference in the code in modecfg_send_set important?
> 
> Are talking about the order of record_and_send_ike_msg() and
> the event rescheduling? Or the fact that it does not check
> the existing event and just always replaces it?
> 
> The first cause has a comment clarifying it:
> 
>         /* Schedule retransmit before sending, to avoid race with master thread */
> 
> I don't understand the comment, because I'm pretty sure this is the main thread?
> The comment comes from openswan 2.1.4 when xauth was added.
> 
> Maybe Antony can tell why we check for EVENT_v1_RETRANSMIT and
> EVENT_NULL before setting it to EVENT_v1_RETRANSMIT? My guess is
> that checking for EVENT_v1_RETRANSMIT just ensures the old timer
> remains, but I'm unsure why. I also don't understand why not
> having an event would be reason to still not schedule one?

my guess, this is happening in a thread. And the main thread event may occur 
while xauth is working.

Currently, I would suggest delete_event(st) at the begining. May be for 
another day to look at, I had enough fun with ikev1 xauth in the past couple 
of weeks:) 



More information about the Swan-dev mailing list