summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2006-03-07 21:37:35 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2006-03-07 21:37:35 +0000
commit79eb6e21ca817628a3e84f2c21bb3630e6457dab (patch)
tree5db624b5c966dedb453d47f907624f960af45484
parent2006-03-07 Till Strauman <strauman@slac.stanford.edu> (diff)
downloadrtems-79eb6e21ca817628a3e84f2c21bb3630e6457dab.tar.bz2
2006-03-07 Paul Whitfield <paulw@omnitronics.com.au>
PR 843/rtems_misc * rtems_webserver/socket.c: There is a memory corruption problem in the selectSocket function in the web server, this only become apparent if you disable the built in memory allocation functions. I have disabled the internal memory management to get file upload working.
-rw-r--r--c/src/libnetworking/ChangeLog8
-rw-r--r--c/src/libnetworking/rtems_webserver/socket.c14
2 files changed, 18 insertions, 4 deletions
diff --git a/c/src/libnetworking/ChangeLog b/c/src/libnetworking/ChangeLog
index 4478ef2d1e..e7b80c1610 100644
--- a/c/src/libnetworking/ChangeLog
+++ b/c/src/libnetworking/ChangeLog
@@ -1,3 +1,11 @@
+2006-03-07 Paul Whitfield <paulw@omnitronics.com.au>
+
+ PR 843/rtems_misc
+ * rtems_webserver/socket.c: There is a memory corruption problem in the
+ selectSocket function in the web server, this only become apparent if
+ you disable the built in memory allocation functions. I have disabled
+ the internal memory management to get file upload working.
+
2006-02-08 Thomas Rauscher <trauscher@loytec.com>
PR 890/networking
diff --git a/c/src/libnetworking/rtems_webserver/socket.c b/c/src/libnetworking/rtems_webserver/socket.c
index 8a145fe520..ec968915af 100644
--- a/c/src/libnetworking/rtems_webserver/socket.c
+++ b/c/src/libnetworking/rtems_webserver/socket.c
@@ -602,7 +602,7 @@ int socketReady(int sid)
* noticed events. Timeout is in milliseconds.
*/
-#if WIN || CE
+#if WIN || CE || __rtems__
int socketSelect(int sid, int timeout)
{
@@ -610,12 +610,16 @@ int socketSelect(int sid, int timeout)
socket_t *sp;
fd_set readFds, writeFds, exceptFds;
int nEvents;
- int all, socketHighestFd; /* Highest socket fd opened */
+ int all;
+#if WIN || CE
+ int socketHighestFd; /* Highest socket fd opened */
+ socketHighestFd = -1;
+#endif
FD_ZERO(&readFds);
FD_ZERO(&writeFds);
FD_ZERO(&exceptFds);
- socketHighestFd = -1;
+
tv.tv_sec = timeout / 1000;
tv.tv_usec = (timeout % 1000) * 1000;
@@ -659,6 +663,7 @@ int socketSelect(int sid, int timeout)
}
}
+#if WIN || CE
/*
* Windows select() fails if no descriptors are set, instead of just sleeping
* like other, nice select() calls. So, if WIN, sleep.
@@ -667,7 +672,8 @@ int socketSelect(int sid, int timeout)
Sleep(timeout);
return 0;
}
-
+#endif
+
/*
* Wait for the event or a timeout.
*/