@@ -128,9 +128,11 @@ static void ntshell_netconn_thread(void *arg)
128128 netconn_listen (nt_netconn -> local_conn );
129129
130130 nt_netconn -> conn_status = CONN_NOTCONNECT ;
131+
131132 while (1 ) {
132133 ercd = netconn_accept (nt_netconn -> local_conn , & temp_conn );
133134 nt_netconn -> conn_status = CONN_NOTCONNECT ;
135+
134136 if (ercd == ERR_OK ) {
135137 if (nt_netconn -> remote_conn != NULL ) { /* kill previous connection */
136138 sys_mbox_trypost (& nt_netconn -> remote_conn -> recvmbox , NULL );
@@ -139,6 +141,7 @@ static void ntshell_netconn_thread(void *arg)
139141 netconn_delete (nt_netconn -> remote_conn );
140142 DBG ("Delete old connection\n" );
141143 }
144+
142145 DBG ("New connection connected\n" );
143146 nt_netconn -> remote_conn = temp_conn ;
144147 nt_netconn -> conn_status = CONN_SUCCESS ;
@@ -160,13 +163,15 @@ static int32_t ntshell_netconn_nt_ioinit(NTSHELL_IO_NETCONN *nt_netconn)
160163 if (nt_netconn -> conn_thread -> thread_arg == NULL ) {
161164 nt_netconn -> conn_thread -> thread_arg = (void * )nt_netconn ;
162165 }
166+
163167 sys_thread_new (nt_netconn -> conn_thread -> thread_name , nt_netconn -> conn_thread -> thread , \
164- nt_netconn -> conn_thread -> thread_arg , nt_netconn -> conn_thread -> thread_stksz , \
165- nt_netconn -> conn_thread -> thread_prio );
168+ nt_netconn -> conn_thread -> thread_arg , nt_netconn -> conn_thread -> thread_stksz , \
169+ nt_netconn -> conn_thread -> thread_prio );
166170
167171 while (nt_netconn -> conn_status != CONN_SUCCESS ) {
168172 sys_msleep (100 );
169173 }
174+
170175 ercd = E_OK ;
171176error_exit :
172177 return ercd ;
@@ -176,12 +181,15 @@ static int32_t netconn_nt_read_chr_raw(NTSHELL_IO_NETCONN *nt_netconn)
176181{
177182 int8_t rcv_chr ;
178183 int ercd ;
184+
179185 if (nt_netconn -> conn_status == CONN_SUCCESS ) {
180186 if (nt_netconn -> rcv_ofs >= nt_netconn -> rcv_len ) {
181187 if (nt_netconn -> pbuf_rcv != NULL ) { /* free it when valid */
182188 pbuf_free (nt_netconn -> pbuf_rcv );
183189 }
190+
184191 ercd = netconn_recv_tcp_pbuf (nt_netconn -> remote_conn , & nt_netconn -> pbuf_rcv );
192+
185193 if (ercd == ERR_OK ) {
186194 nt_netconn -> rcv_ofs = 0 ;
187195 nt_netconn -> rcv_len = nt_netconn -> pbuf_rcv -> tot_len ;
@@ -190,17 +198,21 @@ static int32_t netconn_nt_read_chr_raw(NTSHELL_IO_NETCONN *nt_netconn)
190198 return E_OBJ ;
191199 }
192200 }
201+
193202 if (nt_netconn -> pbuf_rcv == NULL ) {
194203 return E_OBJ ;
195204 }
205+
196206 pbuf_copy_partial (nt_netconn -> pbuf_rcv , & rcv_chr , 1 , nt_netconn -> rcv_ofs );
197207 nt_netconn -> rcv_ofs ++ ;
198208 return ((int32_t )rcv_chr ) & 0xff ;
199209 }
210+
200211 /** error handling */
201212 if (nt_netconn -> pbuf_rcv != NULL ) { /* free it when valid */
202213 pbuf_free (nt_netconn -> pbuf_rcv );
203214 }
215+
204216 nt_netconn -> rcv_ofs = 0 ;
205217 nt_netconn -> rcv_len = 0 ;
206218 return E_OBJ ;
@@ -210,27 +222,32 @@ static int32_t netconn_nt_read_chr(NTSHELL_IO_NETCONN *nt_netconn)
210222 int32_t ch , req ;
211223
212224 while ( (ch = netconn_nt_read_chr_raw (nt_netconn )) == TELNET_OPT_IAC \
213- || ch == '\0' && ch != E_OBJ ) {
225+ || ch == '\0' && ch != E_OBJ ) {
214226 if (ch != '\0' ) {
215227 switch (ch = netconn_nt_read_chr_raw (nt_netconn )) {
216228 case TELNET_OPT_WILL :
217229 case TELNET_OPT_WONT :
218230 case TELNET_OPT_DO :
219231 case TELNET_OPT_DONT :
220232 req = netconn_nt_read_chr_raw (nt_netconn );
233+
221234 if (req != E_OBJ ) {
222235 DBG ("Telnet Request:%x\n\r" , req );
223236 } else {
224237 return req ;
225238 }
239+
226240 break ;
241+
227242 case TELNET_OPT_SB :
228243 while ((ch = netconn_nt_read_chr_raw (nt_netconn )) != E_OBJ && ch != TELNET_OPT_IAC ) {
229244 if ((ch = netconn_nt_read_chr_raw (nt_netconn )) == E_OBJ || ch == TELNET_OPT_SE ) {
230245 break ;
231246 }
232247 }
248+
233249 break ;
250+
234251 default :
235252 break ;
236253 }
@@ -251,6 +268,7 @@ static int32_t ntshell_netconn_nt_read(NTSHELL_IO_NETCONN *nt_netconn, void *buf
251268
252269 while (reacnt < cnt ) {
253270 ercd = netconn_nt_read_chr (nt_netconn );
271+
254272 if (ercd == E_OBJ ) {
255273 sys_msleep (10 ); /* yield for other process to run */
256274 break ;
@@ -285,16 +303,20 @@ static int32_t ntshell_netconn_nt_write(NTSHELL_IO_NETCONN *nt_netconn, const vo
285303 while (wricnt < cnt ) {
286304 crlf_snd_save = crlf_snd ;
287305 sndchr = p_charbuf [wricnt ];
306+
288307 if (crlf_snd && sndchr == '\n' && nt_netconn -> conn_ctrl & CONN_CTRL_CRLF ) {
289308 crlf_snd = 0 ;
290309 sndchr = '\r' ;
291310 } else {
292311 crlf_snd = 1 ;
293312 }
313+
294314 netconn_nt_write_chr (nt_netconn , sndchr );
315+
295316 if (nt_netconn -> conn_status != CONN_SUCCESS ) {
296317 break ;
297318 }
319+
298320 wricnt += crlf_snd ;
299321 }
300322
0 commit comments