|  | @@ -168,6 +168,7 @@ typedef struct{
 | 
											
												
													
														|  |  	uint8_t num_connect;
 |  |  	uint8_t num_connect;
 | 
											
												
													
														|  |  	bool active_conn;
 |  |  	bool active_conn;
 | 
											
												
													
														|  |  	bool flagWhiteListTelnet;
 |  |  	bool flagWhiteListTelnet;
 | 
											
												
													
														|  | 
 |  | +	bool flag_telnet_ip_option;
 | 
											
												
													
														|  |  }telnetd_state_t;
 |  |  }telnetd_state_t;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  static portBASE_TYPE FreeRTOS_CLIAuthProcess( int8_t * pcWriteBuffer, telnetd_state_t *s  );
 |  |  static portBASE_TYPE FreeRTOS_CLIAuthProcess( int8_t * pcWriteBuffer, telnetd_state_t *s  );
 | 
											
										
											
												
													
														|  | @@ -254,7 +255,13 @@ static void telnetd_input(telnetd_state_t *s)
 | 
											
												
													
														|  |  				to be executed again. */
 |  |  				to be executed again. */
 | 
											
												
													
														|  |  				if( s->bufptr == 0 )
 |  |  				if( s->bufptr == 0 )
 | 
											
												
													
														|  |  				{
 |  |  				{
 | 
											
												
													
														|  | -					strcpy( s->buf, s->prev_cmd );
 |  | 
 | 
											
												
													
														|  | 
 |  | +					if(s->flag_telnet_ip_option ){
 | 
											
												
													
														|  | 
 |  | +						s->flag_telnet_ip_option = false;
 | 
											
												
													
														|  | 
 |  | +						return;
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +					else{
 | 
											
												
													
														|  | 
 |  | +						strcpy( s->buf, s->prev_cmd );
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  |  				}
 |  |  				}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  				/* Transmit a line separator, just to make the
 |  |  				/* Transmit a line separator, just to make the
 | 
											
										
											
												
													
														|  | @@ -394,8 +401,8 @@ void parseopt(telnetd_state_t *ts, uint8_t code, uint8_t option)
 | 
											
												
													
														|  |        break;
 |  |        break;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      case TELOPT_TIMING_MARK:
 |  |      case TELOPT_TIMING_MARK:
 | 
											
												
													
														|  | -    	memset(ts->prev_cmd, 0, cmdMAX_INPUT_SIZE );
 |  | 
 | 
											
												
													
														|  |      	xTimerStop(ts->RepeatSensorInfoTimer, 0);
 |  |      	xTimerStop(ts->RepeatSensorInfoTimer, 0);
 | 
											
												
													
														|  | 
 |  | +    	ts->flag_telnet_ip_option = true;
 | 
											
												
													
														|  |  		sendopt(ts, TELNET_WILL, TELOPT_TIMING_MARK);
 |  |  		sendopt(ts, TELNET_WILL, TELOPT_TIMING_MARK);
 | 
											
												
													
														|  |  		sendopt(ts, TELNET_MARK, 0);
 |  |  		sendopt(ts, TELNET_MARK, 0);
 | 
											
												
													
														|  |  		if(ts->telnetState != TELNET_CHANGE_PWD && ts->telnetState != TELNET_CHANGE_PWD_ACK)
 |  |  		if(ts->telnetState != TELNET_CHANGE_PWD && ts->telnetState != TELNET_CHANGE_PWD_ACK)
 | 
											
										
											
												
													
														|  | @@ -850,6 +857,7 @@ void vBasicSocketsCommandInterpreterTask( void *pvParameters )
 | 
											
												
													
														|  |  						auth_tlnt_srvr_param[cur_cnt].active_conn = false;
 |  |  						auth_tlnt_srvr_param[cur_cnt].active_conn = false;
 | 
											
												
													
														|  |  						auth_tlnt_srvr_param[cur_cnt].telnetState = TELNET_AUTH;
 |  |  						auth_tlnt_srvr_param[cur_cnt].telnetState = TELNET_AUTH;
 | 
											
												
													
														|  |  						auth_tlnt_srvr_param[cur_cnt].telnet_code_auth = USER;
 |  |  						auth_tlnt_srvr_param[cur_cnt].telnet_code_auth = USER;
 | 
											
												
													
														|  | 
 |  | +						auth_tlnt_srvr_param[cur_cnt].flag_telnet_ip_option = false;
 | 
											
												
													
														|  |  						xTimerStop(auth_tlnt_srvr_param[cur_cnt].RepeatSensorInfoTimer, 0);
 |  |  						xTimerStop(auth_tlnt_srvr_param[cur_cnt].RepeatSensorInfoTimer, 0);
 | 
											
												
													
														|  |  						cnt_conn -= 1;
 |  |  						cnt_conn -= 1;
 | 
											
												
													
														|  |  						closesocket(i);
 |  |  						closesocket(i);
 | 
											
										
											
												
													
														|  | @@ -876,6 +884,7 @@ void telnet_server_init(void) {
 | 
											
												
													
														|  |  		auth_tlnt_srvr_param[i].active_conn = false;
 |  |  		auth_tlnt_srvr_param[i].active_conn = false;
 | 
											
												
													
														|  |  		auth_tlnt_srvr_param[i].telnetState = TELNET_AUTH;
 |  |  		auth_tlnt_srvr_param[i].telnetState = TELNET_AUTH;
 | 
											
												
													
														|  |  		auth_tlnt_srvr_param[i].telnet_code_auth = USER;
 |  |  		auth_tlnt_srvr_param[i].telnet_code_auth = USER;
 | 
											
												
													
														|  | 
 |  | +		auth_tlnt_srvr_param[i].flag_telnet_ip_option = false;
 | 
											
												
													
														|  |  		auth_tlnt_srvr_param[i].RepeatSensorInfoTimer = xTimerCreate("SensorInfoTmr", REPEAT_SENSOR_INFO_TIME, pdFALSE, ( void * ) i, SensorInfoTimerCallback);
 |  |  		auth_tlnt_srvr_param[i].RepeatSensorInfoTimer = xTimerCreate("SensorInfoTmr", REPEAT_SENSOR_INFO_TIME, pdFALSE, ( void * ) i, SensorInfoTimerCallback);
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  	vRegisterCLICommands();
 |  |  	vRegisterCLICommands();
 |