mirror of https://github.com/wb2osz/direwolf.git
				
				
				
			Issue 275 - AGW 'd' would not abort a connect attempt in progress.
This commit is contained in:
		
							parent
							
								
									8000e46c02
								
							
						
					
					
						commit
						8e32286604
					
				| 
						 | 
				
			
			@ -1075,10 +1075,29 @@ void dl_disconnect_request (dlq_item_t *E)
 | 
			
		|||
	  case 	state_1_awaiting_connection:
 | 
			
		||||
	  case 	state_5_awaiting_v22_connection:
 | 
			
		||||
 | 
			
		||||
// TODO: "requeue."  Not sure what to do here.
 | 
			
		||||
// If we put it back in the queue we will get it back again probably still in same state.
 | 
			
		||||
// Need a way to defer it until the next state change.
 | 
			
		||||
// Erratum: The protocol spec says "requeue."  If we put disconnect req back in the
 | 
			
		||||
// queue we will probably get it back again here while still in same state.
 | 
			
		||||
// I don't think we would want to delay it until the next state transition.
 | 
			
		||||
 | 
			
		||||
// Suppose someone tried to connect to another station, which is not responding, and decided to cancel
 | 
			
		||||
// before all of the SABMe retries were used up.  I think we would want to transmit a DISC, send a disc
 | 
			
		||||
// notice to the user, and go directly into disconnected state, rather than into awaiting release.
 | 
			
		||||
 | 
			
		||||
// New code v1.7 dev, May 6 2023
 | 
			
		||||
 | 
			
		||||
	    text_color_set(DW_COLOR_INFO);
 | 
			
		||||
	    dw_printf ("Stream %d: In progress connection attempt to %s terminated by user.\n", S->stream_id, S->addrs[PEERCALL]);
 | 
			
		||||
	    discard_i_queue (S);
 | 
			
		||||
	    SET_RC(0);
 | 
			
		||||
	    int p1 = 1;
 | 
			
		||||
	    int nopid0 = 0;
 | 
			
		||||
	    packet_t pp15 = ax25_u_frame (S->addrs, S->num_addr, cr_cmd, frame_type_U_DISC, p1, nopid0, NULL, 0);
 | 
			
		||||
	    lm_data_request (S->chan, TQ_PRIO_1_LO, pp15);
 | 
			
		||||
 | 
			
		||||
	    STOP_T1;	// started in establish_data_link.
 | 
			
		||||
	    STOP_T3;	// probably don't need.
 | 
			
		||||
	    enter_new_state (S, state_0_disconnected, __func__, __LINE__);
 | 
			
		||||
	    server_link_terminated (S->chan, S->client, S->addrs[PEERCALL], S->addrs[OWNCALL], 0);
 | 
			
		||||
	    break;
 | 
			
		||||
 | 
			
		||||
	  case 	state_2_awaiting_release:
 | 
			
		||||
| 
						 | 
				
			
			@ -1631,7 +1650,7 @@ void dl_outstanding_frames_request (dlq_item_t *E)
 | 
			
		|||
 | 
			
		||||
	S = get_link_handle (E->addrs, E->num_addr, E->chan, E->client, ok_to_create);
 | 
			
		||||
	if (S != NULL) {
 | 
			
		||||
	  int reversed_addrs = 1;
 | 
			
		||||
	  reversed_addrs = 0;
 | 
			
		||||
	}
 | 
			
		||||
	else {
 | 
			
		||||
	  // Try swapping the addresses.
 | 
			
		||||
| 
						 | 
				
			
			@ -1644,7 +1663,7 @@ void dl_outstanding_frames_request (dlq_item_t *E)
 | 
			
		|||
	  strlcpy (swapped[OWNCALL], E->addrs[PEERCALL], sizeof(swapped[OWNCALL]));
 | 
			
		||||
	  S = get_link_handle (swapped, E->num_addr, E->chan, E->client, ok_to_create);
 | 
			
		||||
	  if (S != NULL) {
 | 
			
		||||
	    int reversed_addrs = 1;
 | 
			
		||||
	    reversed_addrs = 1;
 | 
			
		||||
	  }
 | 
			
		||||
	  else {
 | 
			
		||||
	    text_color_set(DW_COLOR_ERROR);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue