summaryrefslogtreecommitdiff
path: root/nuttx/netutils
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-11-08 16:01:18 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-11-08 16:01:18 +0000
commit2239a0abb6976e310df0eb3307f089fdb23a3bbf (patch)
tree4de7080546c2d3472da727766e8d9d9a26db5f53 /nuttx/netutils
parent4bbf891c9446414a9a1641a70bc90d294115bd6f (diff)
downloadpx4-nuttx-2239a0abb6976e310df0eb3307f089fdb23a3bbf.tar.gz
px4-nuttx-2239a0abb6976e310df0eb3307f089fdb23a3bbf.tar.bz2
px4-nuttx-2239a0abb6976e310df0eb3307f089fdb23a3bbf.zip
Eliminate most uIP globals
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@378 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/netutils')
-rw-r--r--nuttx/netutils/telnetd/telnetd.c25
-rw-r--r--nuttx/netutils/webclient/webclient.c53
-rw-r--r--nuttx/netutils/webserver/httpd.c18
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);
}
}