{
int buff_pos = 0;
- if ( strcmp(search, "Method") == 0 )
+ if ( strcasecmp(search, "Method") == 0 )
{
return httpParseNext(' ', buff, &buff_pos, buff_len);
}
- else if ( strcmp(search, "Path") == 0 )
+ else if ( strcasecmp(search, "Path") == 0 )
{
httpNext(' ', buff, &buff_pos, buff_len);
return httpParseNext(' ', buff, &buff_pos, buff_len);
}
- else if ( strcmp(search, "Version") == 0 )
+ else if ( strcasecmp(search, "Version") == 0 )
{
if (buff[0] == 'H' && buff[1] == 'T' && buff[2] == 'T')
{
return httpParseNext('\n', buff, &buff_pos, buff_len);
}
}
- else if ( strcmp(search, "Content") == 0 )
+ else if ( strcasecmp(search, "Content") == 0 )
{
for (int i = 3; i < buff_len; i++)
- {
+ {
if (buff[i - 3] == '\r' && buff[i - 2] == '\n' && buff[i - 1] == '\r' && buff[i - 0] == '\n')
{
i++;
while (buff_pos < buff_len)
{
char* tmp = httpParseNext(':', buff, &buff_pos, buff_len);
- if ( strcmp(tmp, search) == 0 )
+ if ( strcasecmp(tmp, search) == 0 )
{
free(tmp);
buff_pos++;
void httpError(int session_fd, int error, char *msg)
{
- char headerTemplate[] = "HTTP/1.1 %i %s\n";
+
+ printf("Error: %s\n", msg);
+
+ char headerTemplate[] = "HTTP/1.1 %i %s\r\n";
int headerLen = snprintf(NULL, 0, headerTemplate, error, msg);
- char *header = malloc(headerLen);
+ char *header = malloc(headerLen+1);
sprintf(header, headerTemplate, error, msg);
- char pageTemplate[] = "Error %i: %s\n";
+ char pageTemplate[] = "<!DOCTYPE html><html><body><h3>Error %i: %s</h3></body></html>\r\n";
int pageLen = snprintf(NULL, 0, pageTemplate, error, msg);
- char *page = malloc(pageLen);
+ char *page = malloc(pageLen+1);
sprintf(page, pageTemplate, error, msg);
- char contentLengthTemplate[] = "Content-Length: %i\n\n";
+ char contentLengthTemplate[] = "Access-Control-Allow-Origin: *\r\nContent-Length: %i\r\n\r\n";
int contentLengthLen = snprintf(NULL, 0, contentLengthTemplate, pageLen);
- char *contentLength = malloc(contentLengthLen);
+ char *contentLength = malloc(contentLengthLen+1);
sprintf(contentLength, contentLengthTemplate, pageLen);
httpRespond(session_fd, header);
uint8_t buffer[1024];
int32_t length;
int8_t tries = 3;
-
+
while (tries > 0)
{
while ( (length = read(session_fd, buffer, sizeof(buffer))) > 0 )
usleep(1000);
tries--;
}
-
+
*str = realloc(*str, (*strlen) + 1);
(*str)[*strlen] = 0;
*strlen += 1;
-
+
/*
ioctl(session_fd, FIONREAD, strlen);
if (*strlen > 0)