X10 Server - IOT device to leverage a collection of old X10 devices for home automation and lighting control.

Dependencies:   IniManager mbed HTTPClient SWUpdate mbed-rtos Watchdog X10 SW_HTTPServer SW_String EthernetInterface TimeInterface SSDP

X10 Server

See the X10 Server Nodebook page

Committer:
WiredHome
Date:
Tue Jul 10 03:09:19 2018 +0000
Revision:
2:ca5d12560ff7
Parent:
1:016d4400254b
Child:
4:5da66fab599c
Improvements to be more reliable - make the SSDP detection more precise and make the socket i/f blocking to not overrun the transmit.

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 2:ca5d12560ff7 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 2:ca5d12560ff7 189 char BigBuffer[sizeof(SETUP_TEMPLATE) + 150];
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 }