diff --git a/user/httpdespfs.c b/user/httpdespfs.c index 765726c..b730240 100644 --- a/user/httpdespfs.c +++ b/user/httpdespfs.c @@ -124,8 +124,15 @@ int ICACHE_FLASH_ATTR cgiEspFsTemplate(HttpdConnData *connData) { } } else { if (buff[x]=='%') { - tpd->token[tpd->tokenPos++]=0; //zero-terminate token - ((TplCallback)(connData->cgiArg))(connData, tpd->token, &tpd->tplArg); + if (tpd->tokenPos==0) { + //This is the second % of a %% escape string. + //Send a single % and resume with the normal program flow. + espconn_sent(connData->conn, (uint8 *)"%", 1); + } else { + //This is an actual token. + tpd->token[tpd->tokenPos++]=0; //zero-terminate token + ((TplCallback)(connData->cgiArg))(connData, tpd->token, &tpd->tplArg); + } //Go collect normal chars again. e=&buff[x+1]; tpd->tokenPos=-1;