summaryrefslogtreecommitdiff
path: root/nuttx/netutils/webclient/webclient.c
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/netutils/webclient/webclient.c')
-rw-r--r--nuttx/netutils/webclient/webclient.c53
1 files changed, 28 insertions, 25 deletions
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;
}