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:
Sun Jan 12 23:03:03 2020 +0000
Revision:
9:13e4749ddfa2
Parent:
4:5da66fab599c
Minor changes for debug only.

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 4:5da66fab599c 12 extern int Server_Port;
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 switch (type) {
WiredHome 0:de1dfa2ab813 192 case HTTPServer::SEND_PAGE:
WiredHome 0:de1dfa2ab813 193 svr->header(HTTPServer::OK, "OK", hdrTypeHTML_NoCache);
WiredHome 0:de1dfa2ab813 194 sprintf(BigBuffer, SETUP_TEMPLATE,
WiredHome 0:de1dfa2ab813 195 My_Name, eth.getMACAddress(), My_SerialNum,
WiredHome 0:de1dfa2ab813 196 eth.getIPAddress(), Server_Port);
WiredHome 0:de1dfa2ab813 197 svr->send(BigBuffer);
WiredHome 0:de1dfa2ab813 198 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 199 break;
WiredHome 0:de1dfa2ab813 200 case HTTPServer::CONTENT_LENGTH_REQUEST:
WiredHome 0:de1dfa2ab813 201 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 202 break;
WiredHome 0:de1dfa2ab813 203 case HTTPServer::DATA_TRANSFER:
WiredHome 0:de1dfa2ab813 204 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 205 break;
WiredHome 0:de1dfa2ab813 206 default:
WiredHome 0:de1dfa2ab813 207 ret = HTTPServer::ACCEPT_ERROR;
WiredHome 0:de1dfa2ab813 208 break;
WiredHome 0:de1dfa2ab813 209 }
WiredHome 0:de1dfa2ab813 210 return ret;
WiredHome 0:de1dfa2ab813 211 }
WiredHome 0:de1dfa2ab813 212
WiredHome 0:de1dfa2ab813 213
WiredHome 0:de1dfa2ab813 214
WiredHome 0:de1dfa2ab813 215 HTTPServer::CallBackResults RootPage(HTTPServer *svr, HTTPServer::CallBackType type, char * path,
WiredHome 0:de1dfa2ab813 216 const HTTPServer::namevalue *queryParams, int queryParamCount)
WiredHome 0:de1dfa2ab813 217 {
WiredHome 1:016d4400254b 218 #define bufSize (sizeof(ROOTPAGE) + 100)
WiredHome 1:016d4400254b 219 char * BigBuffer = (char *)malloc(bufSize);
WiredHome 0:de1dfa2ab813 220 HTTPServer::CallBackResults ret = HTTPServer::ACCEPT_ERROR;
WiredHome 1:016d4400254b 221 if (!BigBuffer) {
WiredHome 1:016d4400254b 222 printf("cannot allocate %d bytes\n", bufSize);
WiredHome 1:016d4400254b 223 return ret;
WiredHome 1:016d4400254b 224 }
WiredHome 0:de1dfa2ab813 225
WiredHome 0:de1dfa2ab813 226 int led, cmd;
WiredHome 0:de1dfa2ab813 227 int mask = 0;
WiredHome 0:de1dfa2ab813 228 for (int i=0; i<queryParamCount; i++) {
WiredHome 0:de1dfa2ab813 229 if (strcmp(queryParams[i].name, "LED") == 0) {
WiredHome 0:de1dfa2ab813 230 led = atoi(queryParams[i].value);
WiredHome 0:de1dfa2ab813 231 mask |= 1;
WiredHome 0:de1dfa2ab813 232 } else if (strcmp(queryParams[i].name, "CMD") == 0) {
WiredHome 0:de1dfa2ab813 233 cmd = atoi(queryParams[i].value);
WiredHome 0:de1dfa2ab813 234 mask |= 2;
WiredHome 0:de1dfa2ab813 235 }
WiredHome 0:de1dfa2ab813 236 }
WiredHome 0:de1dfa2ab813 237 if (mask == 3) {
WiredHome 0:de1dfa2ab813 238 switch (led) {
WiredHome 0:de1dfa2ab813 239 case 1:
WiredHome 0:de1dfa2ab813 240 case 2:
WiredHome 0:de1dfa2ab813 241 case 3:
WiredHome 0:de1dfa2ab813 242 case 4:
WiredHome 0:de1dfa2ab813 243 leds[led - 1] = cmd;
WiredHome 0:de1dfa2ab813 244 break;
WiredHome 0:de1dfa2ab813 245 default:
WiredHome 0:de1dfa2ab813 246 break;
WiredHome 0:de1dfa2ab813 247 }
WiredHome 0:de1dfa2ab813 248 }
WiredHome 0:de1dfa2ab813 249
WiredHome 0:de1dfa2ab813 250 switch (type) {
WiredHome 0:de1dfa2ab813 251 case HTTPServer::SEND_PAGE:
WiredHome 0:de1dfa2ab813 252 svr->header(HTTPServer::OK, "OK", hdrTypeHTML_NoCache);
WiredHome 1:016d4400254b 253 snprintf(BigBuffer, bufSize, ROOTPAGE, PROG_NAME, PROG_NAME, BUILD_DATE);
WiredHome 0:de1dfa2ab813 254 svr->send(BigBuffer);
WiredHome 0:de1dfa2ab813 255 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 256 break;
WiredHome 0:de1dfa2ab813 257 case HTTPServer::CONTENT_LENGTH_REQUEST:
WiredHome 0:de1dfa2ab813 258 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 259 break;
WiredHome 0:de1dfa2ab813 260 case HTTPServer::DATA_TRANSFER:
WiredHome 0:de1dfa2ab813 261 ret = HTTPServer::ACCEPT_COMPLETE;
WiredHome 0:de1dfa2ab813 262 break;
WiredHome 0:de1dfa2ab813 263 default:
WiredHome 0:de1dfa2ab813 264 ret = HTTPServer::ACCEPT_ERROR;
WiredHome 0:de1dfa2ab813 265 break;
WiredHome 0:de1dfa2ab813 266 }
WiredHome 1:016d4400254b 267 if (BigBuffer)
WiredHome 1:016d4400254b 268 free(BigBuffer);
WiredHome 0:de1dfa2ab813 269 return ret;
WiredHome 0:de1dfa2ab813 270 }