File nut/pro/httpd.c


Included Files


Preprocessor definitions

#define HTTP_MAJOR_VERSION 1

#define HTTP_MINOR_VERSION 1

#define HTTP_KEEP_ALIVE_REQ 0

#define HTTP_MAX_REQUEST_SIZE 256

#define HTTP_FILE_CHUNK_SIZE 512

#define HTTPD_SUPPORT_GZIP 0

#define NUM_REQUEST_LOOKUP

#define MAX_REQUEST_NAME_SIZE 17

#define GZIP_ID 0x8b1f


Typedef REQUEST_LOOKUP

typedef struct _REQUEST_LOOKUP REQUEST_LOOKUP
struct _REQUEST_LOOKUP  
   {  
      uint_fast8_t rlu_len;  
      char* rlu_str;  
   }  

Global Variable mimeTypes

MIMETYPES mimeTypes[]
Visible in:   nut/pro/httpd.c
Used in: GetMimeEntry() nut/pro/httpd.c

Local Variables

req_lookup
static const REQUEST_LOOKUP req_lookup[]
Used in: NextHeaderName()  
  ParserHeaderLines()  

http_optflags
static uint32_t http_optflags

Used in: NutHttpGetOptionFlags()  
  NutHttpProcessFileRequest()  
  NutHttpSendHeaderTop()  
  NutHttpSetOptionFlags()  

Global Function NutGetMimeHandler()

void* NutGetMimeHandler ( char* name )
Prototyped in: nut/include/pro/httpd.h
Calls: GetMimeEntry() nut/pro/httpd.c
Called by: NutHttpProcessFileRequest() nut/pro/httpd.c

Global Function NutGetMimeType()

char* NutGetMimeType ( char* name )
Prototyped in: nut/include/pro/httpd.h
Calls: GetMimeEntry() nut/pro/httpd.c
Called by: NutHttpProcessFileRequest() nut/pro/httpd.c

Global Function NutHttpGetOptionFlags()

uint32_t NutHttpGetOptionFlags ( void )
Prototyped in: nut/include/pro/httpd.h
References Variables: http_optflags nut/pro/httpd.c

Global Function NutHttpProcessQueryString()

void NutHttpProcessQueryString ( REQUEST* req )
Prototyped in: nut/include/pro/httpd.h
Calls: NutHttpURLDecode() nut/pro/httpd.c
  malloc() nut/crt/malloc.c
Called by: NutHttpProcessRequest() nut/pro/httpd.c

Global Function NutHttpProcessRequest()

void NutHttpProcessRequest ( FILE* stream )
Prototyped in: nut/include/pro/httpd.h
Calls: CreateRequestInfo() nut/pro/httpd.c
  NextWord() nut/pro/httpd.c
  NutDecodePath() nut/pro/dencode.c
  NutHttpProcessFileRequest() nut/pro/httpd.c
  NutHttpProcessQueryString() nut/pro/httpd.c
  NutHttpSendError() nut/pro/httpd.c
  ParserHeaderLines() nut/pro/httpd.c
  fflush() nut/crt/fflush.c
  fgets() nut/crt/fgets.c
  free() nut/crt/malloc.c
  malloc() nut/crt/malloc.c
  strchr() nut/c/string/strchr.c
  strdup() nut/crt/strdup.c
  DestroyRequestInfo(), strcasecmp()
Called by: NutAppMain() nut/app/httpd_simple/httpd_simple.c
  Service() nut/app/httpd_upnp/httpserv.c
  WebDemo() nut/hwtest/avr/basemon/webdemo.c

Global Function NutHttpSendError()

void NutHttpSendError ( FILE* stream, REQUEST* req, int status )
Prototyped in: nut/include/pro/httpd.h
Calls: NutHttpSendHeaderBottom() nut/pro/httpd.c
  NutHttpSendHeaderTop() nut/pro/httpd.c
  fprintf_P() nut/crt/fprintf_p.c
  strrchr() nut/c/string/strrchr.c
Called by: NutCgiProcessRequest() nut/pro/cgi.c
  NutHttpProcessFileRequest() nut/pro/httpd.c
  NutHttpProcessRequest() nut/pro/httpd.c

Global Function NutHttpSendHeaderBot()

void NutHttpSendHeaderBot ( FILE* stream, char* mime_type, long bytes )
Prototyped in: nut/include/pro/httpd.h
Calls: NutHttpSendHeaderBottom() nut/pro/httpd.c

Global Function NutHttpSendHeaderBottom()

void NutHttpSendHeaderBottom ( FILE* stream, REQUEST* req, char* mime_type, long bytes )
Prototyped in: nut/include/pro/httpd.h
Calls: NutHttpSendHeaderBottomEx() nut/pro/httpd.c
Called by: LocationCGIHandler() nut/app/httpd_upnp/upnp.c
  NutHttpProcessFileRequest() nut/pro/httpd.c
  NutHttpSendError() nut/pro/httpd.c
  NutHttpSendHeaderBot() nut/pro/httpd.c
  ShowPorts() nut/hwtest/avr/basemon/webdemo.c
  ShowSockets() nut/hwtest/avr/basemon/webdemo.c
  ShowThreads() nut/hwtest/avr/basemon/webdemo.c
  ShowTimer() nut/hwtest/avr/basemon/webdemo.c
  StartPage() nut/app/httpd/httpserv.c

Global Function NutHttpSendHeaderTop()

void NutHttpSendHeaderTop ( FILE* stream, REQUEST* req, int status, char* title )
Prototyped in: nut/include/pro/httpd.h
Calls: NutVersionString() nut/os/version.c
  fprintf() nut/crt/fprintf.c
  fprintf_P() nut/crt/fprintf_p.c
  gmtime() nut/crt/gmtime.c
  time() nut/crt/time.c
  Rfc1123TimeString()
Called by: LocationCGIHandler() nut/app/httpd_upnp/upnp.c
  NutHttpProcessFileRequest() nut/pro/httpd.c
  NutHttpSendError() nut/pro/httpd.c
  ShowPorts() nut/hwtest/avr/basemon/webdemo.c
  ShowSockets() nut/hwtest/avr/basemon/webdemo.c
  ShowThreads() nut/hwtest/avr/basemon/webdemo.c
  ShowTimer() nut/hwtest/avr/basemon/webdemo.c
  StartPage() nut/app/httpd/httpserv.c
References Variables: http_optflags nut/pro/httpd.c

Global Function NutHttpSetOptionFlags()

void NutHttpSetOptionFlags ( uint32_t flags )
Prototyped in: nut/include/pro/httpd.h
References Variables: http_optflags nut/pro/httpd.c

Global Function NutHttpURLDecode()

void NutHttpURLDecode ( char* str )
Prototyped in: nut/include/pro/httpd.h
Calls: strtol()
Called by: NutHttpProcessQueryString() nut/pro/httpd.c

Global Function NutRegisterHttpRoot()

int NutRegisterHttpRoot ( char* path )
Prototyped in: nut/include/pro/httpd.h
Calls: free() nut/crt/malloc.c
  malloc() nut/crt/malloc.c
  strcpy() nut/c/string/strcpy.c
  strlen() nut/c/string/strlen.c
References Variables: http_root

Local Function CreateRequestInfo()

static REQUEST* CreateRequestInfo ( void )
Calls: calloc()
Called by: NutHttpProcessRequest() nut/pro/httpd.c

Local Function GetMimeEntry()

static MIMETYPES* GetMimeEntry ( char* name )
Calls: strlen() nut/c/string/strlen.c
  strcasecmp()
Called by: NutGetMimeHandler() nut/pro/httpd.c
  NutGetMimeType() nut/pro/httpd.c
References Variables: mimeTypes nut/pro/httpd.c

Local Function HeaderFieldValue()

static int HeaderFieldValue ( char** hfvp, const char* str )
Calls: strdup() nut/crt/strdup.c
Called by: ParserHeaderLines() nut/pro/httpd.c

Local Function NextHeaderName()

static int NextHeaderName ( FILE* stream, uint_fast8_t* idx )
Calls: fgetc() nut/crt/fgetc.c
  tolower()
Called by: ParserHeaderLines() nut/pro/httpd.c
References Variables: req_lookup nut/pro/httpd.c

Local Function NextWord()

static char* NextWord ( char* str )
Called by: NutHttpProcessRequest() nut/pro/httpd.c

Local Function NutHttpProcessFileRequest()

static void NutHttpProcessFileRequest ( FILE* stream, REQUEST* req )
Calls: NutCgiCheckRequest() nut/pro/cgi.c
  NutGetMimeHandler() nut/pro/httpd.c
  NutGetMimeType() nut/pro/httpd.c
  NutHttpAuthValidate() nut/pro/auth.c
  NutHttpSendError() nut/pro/httpd.c
  NutHttpSendHeaderBottom() nut/pro/httpd.c
  NutHttpSendHeaderBottomEx() nut/pro/httpd.c
  NutHttpSendHeaderTop() nut/pro/httpd.c
  _close() nut/crt/close.c
  _filelength() nut/crt/filelength.c
  _open() nut/crt/open.c
  _read() nut/crt/read.c
  fprintf() nut/crt/fprintf.c
  free() nut/crt/malloc.c
  fwrite() nut/crt/fwrite.c
  gmtime() nut/crt/gmtime.c
  malloc() nut/crt/malloc.c
  stat() nut/fs/pathops.c
  strdup() nut/crt/strdup.c
  CreateFilePath(), Rfc1123TimeString(), RfcTimeParse()
Called by: NutHttpProcessRequest() nut/pro/httpd.c
References Variables: http_optflags nut/pro/httpd.c
  default_files

Local Function NutHttpSendHeaderBottomEx()

static void NutHttpSendHeaderBottomEx ( FILE* stream, REQUEST* req, char* mime_type, long bytes, unsigned short first2bytes )
Calls: fprintf_P() nut/crt/fprintf_p.c
  fputs_P() nut/crt/fputs_p.c
Called by: NutHttpProcessFileRequest() nut/pro/httpd.c
  NutHttpSendHeaderBottom() nut/pro/httpd.c

Local Function ParserHeaderLines()

static int ParserHeaderLines ( FILE* stream, REQUEST* req )
Calls: HeaderFieldValue() nut/pro/httpd.c
  NextHeaderName() nut/pro/httpd.c
  SkipLine() nut/pro/httpd.c
  atol() nut/c/stdlib/atol.c
  fgets() nut/crt/fgets.c
  free() nut/crt/malloc.c
  malloc() nut/crt/malloc.c
  strchr() nut/c/string/strchr.c
  RfcTimeParse()
Called by: NutHttpProcessRequest() nut/pro/httpd.c
References Variables: req_lookup nut/pro/httpd.c

Local Function SkipLine()

static void SkipLine ( FILE* stream )
Calls: fgetc() nut/crt/fgetc.c
Called by: ParserHeaderLines() nut/pro/httpd.c