Sfoglia il codice sorgente

telnet: removed unnecessary buffers

Sergey Alirzaev 5 anni fa
parent
commit
6fa1b1eb22
1 ha cambiato i file con 9 aggiunte e 15 eliminazioni
  1. 9 15
      modules/Telnet_Server/telnet_server.c

+ 9 - 15
modules/Telnet_Server/telnet_server.c

@@ -160,9 +160,6 @@ typedef enum {
 typedef struct{
 	telnet_state_t state;
 	uint8_t code;
-	char buf[cmdMAX_INPUT_SIZE];
-	uint_fast8_t bufptr;
-	char prev_cmd[cmdMAX_INPUT_SIZE];
 	unsigned char optdata[cmdMAX_INPUT_SIZE];
 	uint8_t optlen;
 	user_level_t telnet_code_auth;
@@ -200,8 +197,6 @@ static void deconfigure_telnet_state(telnetd_state_t *state)
 		free_state(state->cli_state);
 		state->cli_state = NULL;
 	}
-	memset(state->buf, 0, cmdMAX_INPUT_SIZE);
-	memset(state->prev_cmd, 0, cmdMAX_INPUT_SIZE);
 	memset(state->optdata, 0, cmdMAX_INPUT_SIZE);
 	state->optlen = 0;
 	state->state = TELNET_STATE_NORMAL;
@@ -425,11 +420,8 @@ portBASE_TYPE FreeRTOS_CLIAuthProcess( int8_t * pcWriteBuffer, cli_state_t *s)
 }
 
 /*-----------------------------------------------------------------------------------*/
-static void newdata(telnetd_state_t *s)
+static void newdata(telnetd_state_t *s, char c)
 {
-	char c;
-
-	c = s->buf[s->bufptr];
 	switch(s->state) {
 	case TELNET_STATE_IAC:
 		switch (c) {
@@ -711,16 +703,17 @@ void vBasicSocketsCommandInterpreterTask( void *pvParameters )
 									cli_state->state = STATE_NORMAL;
 									auth_tlnt_srvr_param[k].cli_state = cli_state;
 
-									while(recv( new_sd, &auth_tlnt_srvr_param[k].buf[auth_tlnt_srvr_param[k].bufptr], 1,  MSG_DONTWAIT ) > 0){
-										newdata(&auth_tlnt_srvr_param[k]);
+									char c;
+									while (recv(new_sd, &c, 1, MSG_DONTWAIT) > 0) {
+										newdata(&auth_tlnt_srvr_param[k], c);
 										vTaskDelay(10);
 									}
 									sendopt(&auth_tlnt_srvr_param[k], TELNET_DO, TELOPT_SUPPRESS_GO_AHEAD);
 									sendopt(&auth_tlnt_srvr_param[k], TELNET_DO, TELOPT_LINEMODE);
 									sendopt(&auth_tlnt_srvr_param[k], TELNET_DONT, TELOPT_ECHO);
 									vTaskDelay(50);
-									while(recv( new_sd, &auth_tlnt_srvr_param[k].buf[auth_tlnt_srvr_param[k].bufptr], 1,  MSG_DONTWAIT ) > 0){
-										newdata(&auth_tlnt_srvr_param[k]);
+									while (recv(new_sd, &c, 1, MSG_DONTWAIT) > 0) {
+										newdata(&auth_tlnt_srvr_param[k], c);
 										vTaskDelay(5);
 									}
 									send( new_sd, pcWelcomeMessage, strlen( ( const char * ) pcWelcomeMessage ), 0 );
@@ -791,8 +784,9 @@ void vBasicSocketsCommandInterpreterTask( void *pvParameters )
 					/* recv fails with EWOULDBLOCK.  If any other */
 					/* failure occurs, we will close the          */
 					/* connection.                                */
-					if ((lBytes = recv(sock, &auth_tlnt_srvr_param[cur_cnt].buf[auth_tlnt_srvr_param[cur_cnt].bufptr], 1, 0 )) > 0) {
-						newdata(&auth_tlnt_srvr_param[cur_cnt]);
+					char c;
+					if ((lBytes = recv(sock, &c, 1, 0)) > 0) {
+						newdata(&auth_tlnt_srvr_param[cur_cnt], c);
 					}
 
 					if (lBytes < 0) {