An example demonstrating SSDP Discovery and a companion Web Server.

Dependencies:   mbed mbed-rtos Watchdog SW_HTTPServer SW_String EthernetInterface TimeInterface SSDP

This example program provides a framework -by- example.

It makes itself discoverable to the network using SSDP. From there, it is easy to access the embedded web server to interact with the embedded node.

The example, built on the LPC1768, provides interaction to turn the LEDs on and off via a web page that is discovered using the SSDP protocol.

It also picks up time via an NTP server.

Committer:
WiredHome
Date:
Tue Jul 03 16:26:21 2018 +0000
Revision:
1:016d4400254b
Parent:
0:de1dfa2ab813
Child:
2:ca5d12560ff7
Minor revisions to publishing the web page, showing different interactions.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WiredHome 0:de1dfa2ab813 1
WiredHome 0:de1dfa2ab813 2 #include "mbed.h"
WiredHome 0:de1dfa2ab813 3
WiredHome 0:de1dfa2ab813 4 #include "EthernetInterface.h"
WiredHome 0:de1dfa2ab813 5 #include "WebPages.h"
WiredHome 0:de1dfa2ab813 6
WiredHome 0:de1dfa2ab813 7 extern EthernetInterface eth;
WiredHome 0:de1dfa2ab813 8 extern const char * BUILD_DATE;
WiredHome 0:de1dfa2ab813 9 extern const char * PROG_NAME;
WiredHome 0:de1dfa2ab813 10 extern const char * My_Name;
WiredHome 0:de1dfa2ab813 11 extern const char * My_SerialNum;
WiredHome 0:de1dfa2ab813 12 const int Server_Port = 80;
WiredHome 0:de1dfa2ab813 13
WiredHome 0:de1dfa2ab813 14
WiredHome 0:de1dfa2ab813 15 // ##########################################
WiredHome 0:de1dfa2ab813 16 // This test version controls the LEDs
WiredHome 0:de1dfa2ab813 17 //
WiredHome 0:de1dfa2ab813 18 DigitalOut leds[4] = { LED1, LED2, LED3, LED4 };
WiredHome 0:de1dfa2ab813 19
WiredHome 0:de1dfa2ab813 20
WiredHome 0:de1dfa2ab813 21 static const char hdrTypeHTML_NoCache[] =
WiredHome 0:de1dfa2ab813 22 "Content-Type: text/html\r\n"
WiredHome 0:de1dfa2ab813 23 "Cache-Control: no-cache\r\n";
WiredHome 0:de1dfa2ab813 24
WiredHome 0:de1dfa2ab813 25
WiredHome 0:de1dfa2ab813 26 // sprintf(buf, ROOTPAGE, "NodeName", "NodeName", "BuildDate",
WiredHome 1:016d4400254b 27 static const char ROOTPAGE[] =
WiredHome 0:de1dfa2ab813 28 "<!DOCTYPE html>\r\n"
WiredHome 0:de1dfa2ab813 29 "<html><head><title>%s</title>\r\n"
WiredHome 0:de1dfa2ab813 30 "</head>\r\n"
WiredHome 0:de1dfa2ab813 31 "<body>\r\n"
WiredHome 0:de1dfa2ab813 32 "<h1>%s</h1>"
WiredHome 0:de1dfa2ab813 33 "This project demonstrates the Smartware web server and the Smartware SSDP discovery server.\n"
WiredHome 0:de1dfa2ab813 34 "You should be able to scan the network (e.g. in Windows Explorer) and find this device.\n"
WiredHome 0:de1dfa2ab813 35 "Then you can click on it to open this web page to interact with it.\n"
WiredHome 1:016d4400254b 36 "<br/><br/>Build %s<br/><br/>\n"
WiredHome 1:016d4400254b 37 "<font size='+5'>\n"
WiredHome 1:016d4400254b 38 "<table><tr>\n"
WiredHome 1:016d4400254b 39 "<td>"
WiredHome 1:016d4400254b 40 "<button onclick=\"window.location.href='/?LED=1&CMD=1'\">LED 1 On</button><br/>\n"
WiredHome 1:016d4400254b 41 "<button onclick=\"window.location.href='/?LED=1&CMD=0'\">LED 1 Off</button><br/>\n"
WiredHome 1:016d4400254b 42 "</td><td>"
WiredHome 1:016d4400254b 43 "<button onclick=\"window.location.href='/?LED=2&CMD=1'\">LED 2 On</button><br/>\n"
WiredHome 1:016d4400254b 44 "<button onclick=\"window.location.href='/?LED=2&CMD=0'\">LED 2 Off</button><br/>\n"
WiredHome 1:016d4400254b 45 "</td><td>"
WiredHome 1:016d4400254b 46 "<button onclick=\"window.location.href='/?LED=3&CMD=1'\">LED 3 On</button><br/>\n"
WiredHome 1:016d4400254b 47 "<button onclick=\"window.location.href='/?LED=3&CMD=0'\">LED 3 Off</button><br/>\n"
WiredHome 1:016d4400254b 48 "</td><td>"
WiredHome 1:016d4400254b 49 "<button onclick=\"window.location.href='/?LED=4&CMD=1'\">LED 4 On</button><br/>\n"
WiredHome 1:016d4400254b 50 "<button onclick=\"window.location.href='/?LED=4&CMD=0'\">LED 4 Off</button><br/>\n"
WiredHome 1:016d4400254b 51 "</td>"
WiredHome 1:016d4400254b 52 "</tr></table>\n"
WiredHome 1:016d4400254b 53 "</font>\n"
WiredHome 0:de1dfa2ab813 54 "<form method='get'>\n"
WiredHome 0:de1dfa2ab813 55 "<table>\n"
WiredHome 0:de1dfa2ab813 56 "<tr><td>Set LED</td>\n"
WiredHome 0:de1dfa2ab813 57 "<td><select name='LED'>\n"
WiredHome 0:de1dfa2ab813 58 " <option value='1'>1</option>\n"
WiredHome 0:de1dfa2ab813 59 " <option value='2'>2</option>\n"
WiredHome 0:de1dfa2ab813 60 " <option value='3'>3</option>\n"
WiredHome 0:de1dfa2ab813 61 " <option value='4'>4</option>\n"
WiredHome 0:de1dfa2ab813 62 " </select>\n"
WiredHome 0:de1dfa2ab813 63 " \n"
WiredHome 0:de1dfa2ab813 64 " <select name='CMD'>\n"
WiredHome 0:de1dfa2ab813 65 " <option value='0'>Off</option>\n"
WiredHome 0:de1dfa2ab813 66 " <option value='1'>On</option>\n"
WiredHome 0:de1dfa2ab813 67 " </select>\n"
WiredHome 0:de1dfa2ab813 68 "</td></tr>\n"
WiredHome 0:de1dfa2ab813 69 "<tr><td>&nbsp;</td><td><input type='submit' value='Apply'></td></tr>\n"
WiredHome 0:de1dfa2ab813 70 "</table>\n"
WiredHome 0:de1dfa2ab813 71 "</form>\n"
WiredHome 0:de1dfa2ab813 72 "</body>\n"
WiredHome 0:de1dfa2ab813 73 "</html>\n"
WiredHome 0:de1dfa2ab813 74 "";
WiredHome 0:de1dfa2ab813 75
WiredHome 0:de1dfa2ab813 76
WiredHome 0:de1dfa2ab813 77 // The /setup.xml file
WiredHome 0:de1dfa2ab813 78 //
WiredHome 0:de1dfa2ab813 79 // sprintf(buf, SETUP_TEMPLATE, "FriendlyName", "udn_hexstring", "serialNum", "ip.ad.dr", portNum);
WiredHome 0:de1dfa2ab813 80 static const char * SETUP_TEMPLATE =
WiredHome 0:de1dfa2ab813 81 "<?xml version=\"1.0\"?>\n"
WiredHome 0:de1dfa2ab813 82 "<root xmlns=\"urn:Belkin:device-1-0\">\n"
WiredHome 0:de1dfa2ab813 83 " <specVersion>\n"
WiredHome 0:de1dfa2ab813 84 " <major>1</major>\n"
WiredHome 0:de1dfa2ab813 85 " <minor>0</minor>\n"
WiredHome 0:de1dfa2ab813 86 " </specVersion>\n"
WiredHome 0:de1dfa2ab813 87 " <device>\n"
WiredHome 0:de1dfa2ab813 88 " <deviceType>urn:Belkin:device:controllee:1</deviceType>\n"
WiredHome 0:de1dfa2ab813 89 " <friendlyName>%s</friendlyName>\n"
WiredHome 0:de1dfa2ab813 90 " <manufacturer>Belkin International Inc.</manufacturer>\n" ///< must be "Belkin..." for Alexa discovery
WiredHome 0:de1dfa2ab813 91 " <manufacturerURL>http://www.smart-family.net</manufacturerURL>\n" ///<
WiredHome 0:de1dfa2ab813 92 " <modelDescription>Special thing</modelDescription>\n" ///<
WiredHome 0:de1dfa2ab813 93 " <modelName>Smart Node</modelName>\n" ///<
WiredHome 0:de1dfa2ab813 94 " <modelNumber>1.0.0</modelNumber>\n"
WiredHome 0:de1dfa2ab813 95 #if 0
WiredHome 0:de1dfa2ab813 96 " <modelURL>http://www.smart-family.net</modelURL>\n" ///< This causes it to fail to send completely
WiredHome 0:de1dfa2ab813 97 #endif
WiredHome 0:de1dfa2ab813 98 " <UDN>uuid:Socket-1_0-%s</UDN>\n"
WiredHome 0:de1dfa2ab813 99 " <serialNumber>%s</serialNumber>\n"
WiredHome 0:de1dfa2ab813 100 " <iconList>\n"
WiredHome 0:de1dfa2ab813 101 " <mimetype>jpg</mimetype>\n"
WiredHome 0:de1dfa2ab813 102 " <width>100</width>\n"
WiredHome 0:de1dfa2ab813 103 " <height>100</height>\n"
WiredHome 0:de1dfa2ab813 104 " <depth>100</depth>\n"
WiredHome 0:de1dfa2ab813 105 " <url>icon.jpg</url>\n"
WiredHome 0:de1dfa2ab813 106 " </iconList>\n"
WiredHome 0:de1dfa2ab813 107 " <presentationURL>http://%s:%d</presentationURL>\n"
WiredHome 0:de1dfa2ab813 108 #if 0
WiredHome 0:de1dfa2ab813 109 " <serviceList>\n"
WiredHome 0:de1dfa2ab813 110 " <service>\n"
WiredHome 0:de1dfa2ab813 111 " <serviceType>urn:Belkin:service:WiFiSetup:1</serviceType>\n"
WiredHome 0:de1dfa2ab813 112 " <serviceId>urn:Belkin:serviceId:WiFiSetup1</serviceId>\n"
WiredHome 0:de1dfa2ab813 113 " <controlURL>/upnp/control/WiFiSetup1</controlURL>\n"
WiredHome 0:de1dfa2ab813 114 " <eventSubURL>/upnp/event/WiFiSetup1</eventSubURL>\n"
WiredHome 0:de1dfa2ab813 115 " <SCPDURL>/setupservice.xml</SCPDURL>\n"
WiredHome 0:de1dfa2ab813 116 " </service>\n"
WiredHome 0:de1dfa2ab813 117 " <service>\n"
WiredHome 0:de1dfa2ab813 118 " <serviceType>urn:Belkin:service:timesync:1</serviceType>\n"
WiredHome 0:de1dfa2ab813 119 " <serviceId>urn:Belkin:serviceId:timesync1</serviceId>\n"
WiredHome 0:de1dfa2ab813 120 " <controlURL>/upnp/control/timesync1</controlURL>\n"
WiredHome 0:de1dfa2ab813 121 " <eventSubURL>/upnp/event/timesync1</eventSubURL>\n"
WiredHome 0:de1dfa2ab813 122 " <SCPDURL>/timesyncservice.xml</SCPDURL>\n"
WiredHome 0:de1dfa2ab813 123 " </service>\n"
WiredHome 0:de1dfa2ab813 124 " <service>\n"
WiredHome 0:de1dfa2ab813 125 " <serviceType>urn:Belkin:service:basicevent:1</serviceType>\n"
WiredHome 0:de1dfa2ab813 126 " <serviceId>urn:Belkin:serviceId:basicevent1</serviceId>\n"
WiredHome 0:de1dfa2ab813 127 " <controlURL>/upnp/control/basicevent1</controlURL>\n"
WiredHome 0:de1dfa2ab813 128 " <eventSubURL>/upnp/event/basicevent1</eventSubURL>\n"
WiredHome 0:de1dfa2ab813 129 " <SCPDURL>/eventservice.xml</SCPDURL>\n"
WiredHome 0:de1dfa2ab813 130 " </service>\n"
WiredHome 0:de1dfa2ab813 131 " <service>\n"
WiredHome 0:de1dfa2ab813 132 " <serviceType>urn:Belkin:service:firmwareupdate:1</serviceType>\n"
WiredHome 0:de1dfa2ab813 133 " <serviceId>urn:Belkin:serviceId:firmwareupdate1</serviceId>\n"
WiredHome 0:de1dfa2ab813 134 " <controlURL>/upnp/control/firmwareupdate1</controlURL>\n"
WiredHome 0:de1dfa2ab813 135 " <eventSubURL>/upnp/event/firmwareupdate1</eventSubURL>\n"
WiredHome 0:de1dfa2ab813 136 " <SCPDURL>/firmwareupdate.xml</SCPDURL>\n"
WiredHome 0:de1dfa2ab813 137 " </service>\n"
WiredHome 0:de1dfa2ab813 138 " <service>\n"
WiredHome 0:de1dfa2ab813 139 " <serviceType>urn:Belkin:service:rules:1</serviceType>\n"
WiredHome 0:de1dfa2ab813 140 " <serviceId>urn:Belkin:serviceId:rules1</serviceId>\n"
WiredHome 0:de1dfa2ab813 141 " <controlURL>/upnp/control/rules1</controlURL>\n"
WiredHome 0:de1dfa2ab813 142 " <eventSubURL>/upnp/event/rules1</eventSubURL>\n"
WiredHome 0:de1dfa2ab813 143 " <SCPDURL>/rulesservice.xml</SCPDURL>\n"
WiredHome 0:de1dfa2ab813 144 " </service>\n"
WiredHome 0:de1dfa2ab813 145 " <service>\n"
WiredHome 0:de1dfa2ab813 146 " <serviceType>urn:Belkin:service:metainfo:1</serviceType>\n"
WiredHome 0:de1dfa2ab813 147 " <serviceId>urn:Belkin:serviceId:metainfo1</serviceId>\n"
WiredHome 0:de1dfa2ab813 148 " <controlURL>/upnp/control/metainfo1</controlURL>\n"
WiredHome 0:de1dfa2ab813 149 " <eventSubURL>/upnp/event/metainfo1</eventSubURL>\n"
WiredHome 0:de1dfa2ab813 150 " <SCPDURL>/metainfoservice.xml</SCPDURL>\n"
WiredHome 0:de1dfa2ab813 151 " </service>\n"
WiredHome 0:de1dfa2ab813 152 " <service>\n"
WiredHome 0:de1dfa2ab813 153 " <serviceType>urn:Belkin:service:remoteaccess:1</serviceType>\n"
WiredHome 0:de1dfa2ab813 154 " <serviceId>urn:Belkin:serviceId:remoteaccess1</serviceId>\n"
WiredHome 0:de1dfa2ab813 155 " <controlURL>/upnp/control/remoteaccess1</controlURL>\n"
WiredHome 0:de1dfa2ab813 156 " <eventSubURL>/upnp/event/remoteaccess1</eventSubURL>\n"
WiredHome 0:de1dfa2ab813 157 " <SCPDURL>/remoteaccess.xml</SCPDURL>\n"
WiredHome 0:de1dfa2ab813 158 " </service>\n"
WiredHome 0:de1dfa2ab813 159 " <service>\n"
WiredHome 0:de1dfa2ab813 160 " <serviceType>urn:Belkin:service:deviceinfo:1</serviceType>\n"
WiredHome 0:de1dfa2ab813 161 " <serviceId>urn:Belkin:serviceId:deviceinfo1</serviceId>\n"
WiredHome 0:de1dfa2ab813 162 " <controlURL>/upnp/control/deviceinfo1</controlURL>\n"
WiredHome 0:de1dfa2ab813 163 " <eventSubURL>/upnp/event/deviceinfo1</eventSubURL>\n"
WiredHome 0:de1dfa2ab813 164 " <SCPDURL>/deviceinfoservice.xml</SCPDURL>\n"
WiredHome 0:de1dfa2ab813 165 " </service>\n"
WiredHome 0:de1dfa2ab813 166 " <service>\n"
WiredHome 0:de1dfa2ab813 167 " <serviceType>urn:Belkin:service:smartsetup:1</serviceType>\n"
WiredHome 0:de1dfa2ab813 168 " <serviceId>urn:Belkin:serviceId:smartsetup1</serviceId>\n"
WiredHome 0:de1dfa2ab813 169 " <controlURL>/upnp/control/smartsetup1</controlURL>\n"
WiredHome 0:de1dfa2ab813 170 " <eventSubURL>/upnp/event/smartsetup1</eventSubURL>\n"
WiredHome 0:de1dfa2ab813 171 " <SCPDURL>/smartsetup.xml</SCPDURL>\n"
WiredHome 0:de1dfa2ab813 172 " </service>\n"
WiredHome 0:de1dfa2ab813 173 " <service>\n"
WiredHome 0:de1dfa2ab813 174 " <serviceType>urn:Belkin:service:manufacture:1</serviceType>\n"
WiredHome 0:de1dfa2ab813 175 " <serviceId>urn:Belkin:serviceId:manufacture1</serviceId>\n"
WiredHome 0:de1dfa2ab813 176 " <controlURL>/upnp/control/manufacture1</controlURL>\n"
WiredHome 0:de1dfa2ab813 177 " <eventSubURL>/upnp/event/manufacture1</eventSubURL>\n"
WiredHome 0:de1dfa2ab813 178 " <SCPDURL>/manufacture.xml</SCPDURL>\n"
WiredHome 0:de1dfa2ab813 179 " </service>\n"
WiredHome 0:de1dfa2ab813 180 " </serviceList>\n"
WiredHome 0:de1dfa2ab813 181 #endif
WiredHome 0:de1dfa2ab813 182 " </device>\n"
WiredHome 0:de1dfa2ab813 183 "</root>\n";
WiredHome 0:de1dfa2ab813 184
WiredHome 0:de1dfa2ab813 185
WiredHome 0:de1dfa2ab813 186 HTTPServer::CallBackResults Setup_xml(HTTPServer *svr, HTTPServer::CallBackType type, char * path,
WiredHome 0:de1dfa2ab813 187 const HTTPServer::namevalue *queryParams, int queryParamCount)
WiredHome 0:de1dfa2ab813 188 {
WiredHome 0:de1dfa2ab813 189 char BigBuffer[1000];
WiredHome 0:de1dfa2ab813 190 HTTPServer::CallBackResults ret = HTTPServer::ACCEPT_ERROR;
WiredHome 0:de1dfa2ab813 191 printf("Setup.xml responder\n");
WiredHome 0:de1dfa2ab813 192 switch (type) {
WiredHome 0:de1dfa2ab813 193 case HTTPServer::SEND_PAGE:
WiredHome 0:de1dfa2ab813 194 svr->header(HTTPServer::OK, "OK", hdrTypeHTML_NoCache);
WiredHome 0:de1dfa2ab813 195 sprintf(BigBuffer, SETUP_TEMPLATE,
WiredHome 0:de1dfa2ab813 196 My_Name, eth.getMACAddress(), My_SerialNum,
WiredHome 0:de1dfa2ab813 197 eth.getIPAddress(), Server_Port);
WiredHome 0:de1dfa2ab813 198 svr->send(BigBuffer);
WiredHome 0:de1dfa2ab813 199 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 200 break;
WiredHome 0:de1dfa2ab813 201 case HTTPServer::CONTENT_LENGTH_REQUEST:
WiredHome 0:de1dfa2ab813 202 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 203 break;
WiredHome 0:de1dfa2ab813 204 case HTTPServer::DATA_TRANSFER:
WiredHome 0:de1dfa2ab813 205 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 206 break;
WiredHome 0:de1dfa2ab813 207 default:
WiredHome 0:de1dfa2ab813 208 ret = HTTPServer::ACCEPT_ERROR;
WiredHome 0:de1dfa2ab813 209 break;
WiredHome 0:de1dfa2ab813 210 }
WiredHome 0:de1dfa2ab813 211 return ret;
WiredHome 0:de1dfa2ab813 212 }
WiredHome 0:de1dfa2ab813 213
WiredHome 0:de1dfa2ab813 214
WiredHome 0:de1dfa2ab813 215
WiredHome 0:de1dfa2ab813 216 HTTPServer::CallBackResults RootPage(HTTPServer *svr, HTTPServer::CallBackType type, char * path,
WiredHome 0:de1dfa2ab813 217 const HTTPServer::namevalue *queryParams, int queryParamCount)
WiredHome 0:de1dfa2ab813 218 {
WiredHome 1:016d4400254b 219 #define bufSize (sizeof(ROOTPAGE) + 100)
WiredHome 1:016d4400254b 220 char * BigBuffer = (char *)malloc(bufSize);
WiredHome 0:de1dfa2ab813 221 HTTPServer::CallBackResults ret = HTTPServer::ACCEPT_ERROR;
WiredHome 0:de1dfa2ab813 222 printf("RootPage responder\n");
WiredHome 1:016d4400254b 223 if (!BigBuffer) {
WiredHome 1:016d4400254b 224 printf("cannot allocate %d bytes\n", bufSize);
WiredHome 1:016d4400254b 225 return ret;
WiredHome 1:016d4400254b 226 }
WiredHome 0:de1dfa2ab813 227
WiredHome 0:de1dfa2ab813 228 int led, cmd;
WiredHome 0:de1dfa2ab813 229 int mask = 0;
WiredHome 0:de1dfa2ab813 230 for (int i=0; i<queryParamCount; i++) {
WiredHome 0:de1dfa2ab813 231 if (strcmp(queryParams[i].name, "LED") == 0) {
WiredHome 0:de1dfa2ab813 232 led = atoi(queryParams[i].value);
WiredHome 0:de1dfa2ab813 233 mask |= 1;
WiredHome 0:de1dfa2ab813 234 } else if (strcmp(queryParams[i].name, "CMD") == 0) {
WiredHome 0:de1dfa2ab813 235 cmd = atoi(queryParams[i].value);
WiredHome 0:de1dfa2ab813 236 mask |= 2;
WiredHome 0:de1dfa2ab813 237 }
WiredHome 0:de1dfa2ab813 238 }
WiredHome 0:de1dfa2ab813 239 if (mask == 3) {
WiredHome 0:de1dfa2ab813 240 switch (led) {
WiredHome 0:de1dfa2ab813 241 case 1:
WiredHome 0:de1dfa2ab813 242 case 2:
WiredHome 0:de1dfa2ab813 243 case 3:
WiredHome 0:de1dfa2ab813 244 case 4:
WiredHome 0:de1dfa2ab813 245 leds[led - 1] = cmd;
WiredHome 0:de1dfa2ab813 246 break;
WiredHome 0:de1dfa2ab813 247 default:
WiredHome 0:de1dfa2ab813 248 break;
WiredHome 0:de1dfa2ab813 249 }
WiredHome 0:de1dfa2ab813 250 }
WiredHome 0:de1dfa2ab813 251
WiredHome 0:de1dfa2ab813 252 switch (type) {
WiredHome 0:de1dfa2ab813 253 case HTTPServer::SEND_PAGE:
WiredHome 0:de1dfa2ab813 254 svr->header(HTTPServer::OK, "OK", hdrTypeHTML_NoCache);
WiredHome 1:016d4400254b 255 snprintf(BigBuffer, bufSize, ROOTPAGE, PROG_NAME, PROG_NAME, BUILD_DATE);
WiredHome 0:de1dfa2ab813 256 svr->send(BigBuffer);
WiredHome 0:de1dfa2ab813 257 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 258 break;
WiredHome 0:de1dfa2ab813 259 case HTTPServer::CONTENT_LENGTH_REQUEST:
WiredHome 0:de1dfa2ab813 260 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 261 break;
WiredHome 0:de1dfa2ab813 262 case HTTPServer::DATA_TRANSFER:
WiredHome 0:de1dfa2ab813 263 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 264 break;
WiredHome 0:de1dfa2ab813 265 default:
WiredHome 0:de1dfa2ab813 266 ret = HTTPServer::ACCEPT_ERROR;
WiredHome 0:de1dfa2ab813 267 break;
WiredHome 0:de1dfa2ab813 268 }
WiredHome 1:016d4400254b 269 if (BigBuffer)
WiredHome 1:016d4400254b 270 free(BigBuffer);
WiredHome 0:de1dfa2ab813 271 return ret;
WiredHome 0:de1dfa2ab813 272 }