@@ -57,7 +57,7 @@ static void searching_new_clients(server_t *server)
5757 }
5858}
5959
60- static bool client_cmd_handler (const command_t * command , const char * buffer ,
60+ bool client_cmd_handler (const command_t * command , const char * buffer ,
6161 client_t * client )
6262{
6363 if (strncasecmp (command -> name , buffer , strlen (command -> name )) != 0 )
@@ -74,60 +74,15 @@ static bool client_cmd_handler(const command_t *command, const char *buffer,
7474 return true;
7575}
7676
77- static void parse_client_buffer (client_t * client , char * buff_not_read )
78- {
79-
80- const size_t buff_len = strlen (client -> cmd_buffer );
81- size_t idx = 0 ;
82-
83- for (; idx < buff_len ; idx ++ ) {
84- if (client -> cmd_buffer [idx ] == '\r' && idx + 1 < buff_len && client -> cmd_buffer [idx + 1 ] == '\n' ) {
85- idx += 2 ;
86- strncpy (client -> cmd , client -> cmd_buffer , idx - 1 );
87- client -> cmd [idx - 1 ] = '\0' ;
88- client -> cmd [idx - 2 ] = '\0' ;
89- client -> should_be_processed = true;
90- break ;
91- }
92- }
93- if (idx < buff_len )
94- strcat (buff_not_read , & client -> cmd_buffer [idx ]);
95- if (!client -> should_be_processed )
96- strcat (buff_not_read , client -> cmd_buffer );
97- }
98-
99- static void parse_client_input (client_t * client )
100- {
101- char buff_not_read [BUFSIZ ] = {0 };
102-
103- client -> should_be_processed = false;
104- memset (client -> cmd , 0 , BUFSIZ );
105- parse_client_buffer (client , buff_not_read );
106- memset (client -> cmd_buffer , 0 , BUFSIZ );
107- strcpy (client -> cmd_buffer , buff_not_read );
108- client -> cmd_buffer_offset = strlen (buff_not_read );
109- //printf("[INFO] Current command: %s\n", client->cmd);
110- //printf("[INFO] Command buffer: %s\n", client->cmd_buffer);
111- }
112-
11377static void reply_client (client_t * client )
11478{
115- bool cmd_found = false;
116-
117- //printf("Writing in buffer with offset of: %lu\n", client->cmd_buffer_offset);
11879 if (read (client -> control_fd , client -> cmd_buffer +
11980 client -> cmd_buffer_offset , BUFSIZ - client -> cmd_buffer_offset ) < 1 )
12081 return ;
121- printf ("[ <- ] '%s'\n " , client -> cmd_buffer );
82+ printf ("[ <- ] %s " , client -> cmd_buffer );
12283 parse_client_input (client );
123- while (client -> should_be_processed ) {
124- for (size_t i = 0 ; i < COMMANDS_SIZE && !cmd_found ; i ++ )
125- if (client_cmd_handler (& COMMANDS [i ], client -> cmd , client ) == true)
126- cmd_found = true;
127- if (!cmd_found )
128- write_msg_to_client (client -> control_fd , "500 Syntax Error" );
129- parse_client_input (client );
130- }
84+ while (client -> should_be_processed )
85+ process_client (client );
13186}
13287
13388void events_loop (server_t * server )
0 commit comments