void HTTPCustomCallback( ) { uint16_t i, bytestoread; struct HTTPConnection * h = curhttp; if( h->isdone ) { HTTPClose( h->socket ); return; } if( h->isfirst ) { TCPs[h->socket].sendtype = ACKBIT | PSHBIT; StartTCPWrite( h->socket ); //TODO: Content Length? MIME-Type? PushStr( "HTTP/1.1 200 Ok\r\nConnection: close\r\n\r\n" ); if( strncmp( h->pathbuffer, "/d/r1?", 6 ) == 0 ) { char outb[3] = {0, 0, 0}; char * bp = h->pathbuffer + 6; unsigned char address = 0; address += hex2val( *(bp++) )<<4; address += hex2val( *(bp++) ); unsigned char * cc = (unsigned char*)address; int8tohex( *cc, outb ); PushStr( outb ); } else if( strncmp( h->pathbuffer, "/d/w1?", 6 ) == 0 ) { char * bp = h->pathbuffer + 6; unsigned char address = 0; address += hex2val( *(bp++) )<<4; address += hex2val( *(bp++) ); unsigned char value = 0; value += hex2val( *(bp++) )<<4; value += hex2val( *(bp++) ); unsigned char * cc = (unsigned char*)address; *cc = value; } else if( strncmp( h->pathbuffer, "/d/r2?", 6 ) == 0 ) { char outb[3] = {0, 0, 0}; char * bp = h->pathbuffer + 6; unsigned char address = 0; address += hex2val( *(bp++) )<<4; address += hex2val( *(bp++) ); unsigned short * cc = (unsigned char*)address; unsigned short vo = *cc; int8tohex( vo>>8, outb ); PushStr( outb ); int8tohex( vo&0xff, outb ); PushStr( outb ); }
int GetUrl(REC_INFO* pRec, void* pVal) { REC_INFO* pCurRec = pRec; unsigned int recCount = 0; char** ppUrl = pVal; char* pTemp = NULL; unsigned int urlMaxLen = 32; pTemp = (char*)malloc(urlMaxLen); if(pTemp == NULL) { return -1; } memset(pTemp, 0, urlMaxLen); while(pCurRec) { if(pCurRec->type == ELE_SEPERATOR) { if(pCurRec->sep == SEP_COMMA) { *ppUrl = pTemp; return recCount; } else { if(PushChar(&pTemp,&urlMaxLen, seperator[pCurRec->sep]) != 0) { break; } } } else if(pCurRec->type == ELE_TEXT) { if(PushStr(&pTemp, &urlMaxLen, pCurRec->pContent) != 0) { break; } } else { break; } ++recCount; pCurRec = goaheadRec(pCurRec, 1); } if(pTemp) { free(pTemp); } return -1; }
int PushChar(char** ppDstStr, unsigned int* pDstMaxLen, char ch) { char cha[2] = {ch,'\0'}; return PushStr(ppDstStr, pDstMaxLen, cha); }