diff options
Diffstat (limited to 'nuttx/netutils')
-rw-r--r-- | nuttx/netutils/telnetd/telnetd.c | 25 | ||||
-rw-r--r-- | nuttx/netutils/webclient/webclient.c | 53 | ||||
-rw-r--r-- | nuttx/netutils/webserver/httpd.c | 18 |
3 files changed, 50 insertions, 46 deletions
diff --git a/nuttx/netutils/telnetd/telnetd.c b/nuttx/netutils/telnetd/telnetd.c index 075393484..8efeac5cd 100644 --- a/nuttx/netutils/telnetd/telnetd.c +++ b/nuttx/netutils/telnetd/telnetd.c @@ -138,7 +138,7 @@ static void acked(void) } } -static void senddata(struct uip_driver_s *dev) +static void senddata(struct uip_driver_s *dev, struct uip_conn *conn) { char *bufptr, *lineptr; int buflen, linelen; @@ -155,7 +155,7 @@ static void senddata(struct uip_driver_s *dev) { linelen = TELNETD_CONF_LINELEN; } - if (buflen + linelen < uip_mss()) + if (buflen + linelen < uip_mss(conn)) { memcpy(bufptr, lineptr, linelen); bufptr += linelen; @@ -302,11 +302,12 @@ static void newdata(struct uip_driver_s *dev) * event of interest occurs. */ -void uip_interrupt_event(struct uip_driver_s *dev, void *private) +uint8 uip_interrupt_event(struct uip_driver_s *dev, struct uip_conn *conn, uint8 flags) { #warning OBSOLETE -- needs to be redesigned unsigned int i; - if (uip_connected_event()) + + if (uip_connected_event(flags)) { for (i = 0; i < TELNETD_CONF_NUMLINES; ++i) { @@ -321,28 +322,28 @@ void uip_interrupt_event(struct uip_driver_s *dev, void *private) if (s.state == STATE_CLOSE) { s.state = STATE_NORMAL; - uip_close(); - return; + return UIP_CLOSE; } - if (uip_close_event() || uip_abort_event() || uip_timeout_event()) + if (uip_close_event(flags) || uip_abort_event(flags) || uip_timeout_event(flags)) { closed(); } - if (uip_ack_event()) + if (uip_ack_event(flags)) { acked(); } - if (uip_newdata_event()) + if (uip_newdata_event(flags)) { newdata(dev); } - if (uip_rexmit_event() || uip_newdata_event() || uip_ack_event() || - uip_connected_event() || uip_poll_event()) + if (uip_rexmit_event(flags) || uip_newdata_event(flags) || uip_ack_event(flags) || + uip_connected_event(flags) || uip_poll_event(flags)) { - senddata(dev); + senddata(dev, conn); } + return 0; } diff --git a/nuttx/netutils/webclient/webclient.c b/nuttx/netutils/webclient/webclient.c index f285c3f41..0c13c6c62 100644 --- a/nuttx/netutils/webclient/webclient.c +++ b/nuttx/netutils/webclient/webclient.c @@ -78,6 +78,8 @@ #define ISO_cr 0x0d #define ISO_space 0x20 +static uint8 g_return; /* Kludge for now */ + static struct webclient_state s; @@ -180,7 +182,7 @@ static char *copy_string(char *dest, const char *src, int len) return dest + len; } -static void senddata(struct uip_driver_s *dev) +static void senddata(struct uip_driver_s *dev, struct uip_conn *conn) { uint16 len; char *getrequest; @@ -203,20 +205,20 @@ static void senddata(struct uip_driver_s *dev) cptr = copy_string(cptr, http_user_agent_fields, strlen(http_user_agent_fields)); - len = s.getrequestleft > uip_mss()? - uip_mss(): + len = s.getrequestleft > uip_mss(conn)? + uip_mss(conn): s.getrequestleft; uip_send(dev, &(getrequest[s.getrequestptr]), len); } } -static void acked(void) +static void acked(struct uip_conn *conn) { uint16 len; if (s.getrequestleft > 0) { - len = s.getrequestleft > uip_mss()? - uip_mss(): + len = s.getrequestleft > uip_mss(conn)? + uip_mss(conn): s.getrequestleft; s.getrequestleft -= len; s.getrequestptr += len; @@ -262,7 +264,7 @@ static uint16 parse_statusline(struct uip_driver_s *dev, uint16 len) } else { - uip_abort(); + g_return = UIP_ABORT; webclient_aborted(); return 0; } @@ -404,63 +406,63 @@ static void newdata(struct uip_driver_s *dev) * event of interest occurs. */ -void uip_interrupt_event(struct uip_driver_s *dev) +uint8 uip_interrupt_event(struct uip_driver_s *dev, struct uip_conn *conn, uint8 flags) { #warning OBSOLETE -- needs to be redesigned - if (uip_connected_event()) + g_return = 0; + + if (uip_connected_event(flags)) { s.timer = 0; s.state = WEBCLIENT_STATE_STATUSLINE; - senddata(dev); + senddata(dev, conn); webclient_connected(); - return; + return g_return; } if (s.state == WEBCLIENT_STATE_CLOSE) { webclient_closed(); - uip_abort(); - return; + return UIP_ABORT; } - if (uip_abort_event()) + if (uip_abort_event(flags)) { webclient_aborted(); } - if (uip_timeout_event()) + if (uip_timeout_event(flags)) { webclient_timedout(); } - if (uip_ack_event()) + if (uip_ack_event(flags)) { s.timer = 0; - acked(); + acked(conn); } - if (uip_newdata_event()) + if (uip_newdata_event(flags)) { s.timer = 0; newdata(dev); } - if (uip_rexmit_event() || uip_newdata_event() || uip_ack_event()) + if (uip_rexmit_event(flags) || uip_newdata_event(flags) || uip_ack_event(flags)) { - senddata(dev); + senddata(dev, conn); } - else if (uip_poll_event()) + else if (uip_poll_event(flags)) { ++s.timer; if (s.timer == WEBCLIENT_TIMEOUT) { webclient_timedout(); - uip_abort(); - return; + return UIP_ABORT; } } - if (uip_close_event()) + if (uip_close_event(flags)) { if (s.httpflag != HTTPFLAG_MOVED) { @@ -476,9 +478,10 @@ void uip_interrupt_event(struct uip_driver_s *dev) #endif if (resolv_query(s.host, &addr) < 0) { - return; + return g_return; } webclient_get(s.host, s.port, s.file); } } + return g_return; } diff --git a/nuttx/netutils/webserver/httpd.c b/nuttx/netutils/webserver/httpd.c index 1f6f58df8..57e60f872 100644 --- a/nuttx/netutils/webserver/httpd.c +++ b/nuttx/netutils/webserver/httpd.c @@ -95,7 +95,7 @@ static void next_scriptstate(struct httpd_state *pstate) pstate->scriptptr = p; } -static void handle_script(struct httpd_state *pstate) +static void handle_script(struct httpd_state *pstate, struct uip_conn *conn) { char *ptr; @@ -122,8 +122,8 @@ static void handle_script(struct httpd_state *pstate) /* See if we find the start of script marker in the block of HTML to be sent. */ - if (pstate->file.len > uip_mss()) { - pstate->len = uip_mss(); + if (pstate->file.len > uip_mss(conn)) { + pstate->len = uip_mss(conn); } else { pstate->len = pstate->file.len; } @@ -136,8 +136,8 @@ static void handle_script(struct httpd_state *pstate) if (ptr != NULL && ptr != pstate->file.data) { pstate->len = (int)(ptr - pstate->file.data); - if (pstate->len >= uip_mss()) { - pstate->len = uip_mss(); + if (pstate->len >= uip_mss(conn)) { + pstate->len = uip_mss(conn); } } send_part_of_file(pstate); @@ -186,7 +186,7 @@ static int send_headers(struct httpd_state *pstate, const char *statushdr) return ret; } -static void handle_output(struct httpd_state *pstate) +static void handle_output(struct httpd_state *pstate, struct uip_conn *conn) { char *ptr; @@ -203,7 +203,7 @@ static void handle_output(struct httpd_state *pstate) ptr = strchr(pstate->filename, ISO_period); if (ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) { - handle_script(pstate); + handle_script(pstate, conn); } else { @@ -266,11 +266,11 @@ static int handle_input(struct httpd_state *pstate) return OK; } -static void handle_connection(struct httpd_state *pstate) +static void handle_connection(struct httpd_state *pstate, struct uip_conn *conn) { handle_input(pstate); if (pstate->state == STATE_OUTPUT) { - handle_output(pstate); + handle_output(pstate, conn); } } |