Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: oldheating gps motorhome heating
Revision 125:772948168e4f, committed 2019-05-17
- Comitter:
- andrewboyson
- Date:
- Fri May 17 15:02:00 2019 +0000
- Parent:
- 124:a2de6c22f85e
- Child:
- 126:6b547c86da6e
- Commit message:
- Updated net library
Changed in this revision
| web.c | Show annotated file Show diff for this revision Revisions of this file |
--- a/web.c Tue May 14 19:19:52 2019 +0000
+++ b/web.c Fri May 17 15:02:00 2019 +0000
@@ -56,7 +56,7 @@
if (WebServerThisReply(todo)) return;
}
-static void handleRequest(int size, char* pRequestStream, uint32_t positionInRequestStream, char* pStateData)
+static void handleRequest(char* pStateData, int size, char* pRequestStream, uint32_t positionInRequestStream)
{
struct state* pState = (struct state*)pStateData;
@@ -116,13 +116,24 @@
if (!pState->postComplete) handlePost(pState->toDo, contentLength, contentStart, size, pRequestStream, positionInRequestStream, &pState->postComplete);
}
-static bool sendReply(char* pStateData, bool clientFinished)
+static int pollSomethingToSend(char* pStateData, bool clientFinished) //returns 0 no; +1 yes; -1 finished;
{
struct state* pState = (struct state*)pStateData;
- if (!pState->toDo ) return clientFinished; //If the client has never sent anything and has finished then finish
- if (!pState->postComplete ) return false;
- if (!MsTimerAbsolute(pState->delayUntil)) return false;
+ if (!pState->toDo)
+ {
+ if (clientFinished) return -1; //The client hasn't requested anything and never will so finish
+ else return 0; //The client hasn't requested anything yet but still could
+ }
+ if (!pState->postComplete ) return 0; //Wait for the request (usually a POST) to finish
+ if (!MsTimerAbsolute(pState->delayUntil)) return 0; //Wait a while (usually after a LOGIN attempt)
+
+ return 1; //Yep, set up anything (just TSL at the moment) then call sendReply
+}
+
+static bool sendReply(char* pStateData)
+{
+ struct state* pState = (struct state*)pStateData;
int todo = pState->toDo; //Make a copy so that we don't modify todo in the state
@@ -149,7 +160,8 @@
int WebInit()
{
HttpRequestFunction = handleRequest;
- HttpReplyPollFunction = sendReply;
+ HttpPollFunction = pollSomethingToSend;
+ HttpReplyFunction = sendReply;
WebLoginInit();