internal.h File Reference

internal shared structures More...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdarg.h>
#include <errno.h>
#include <fcntl.h>
#include <signal.h>
#include "config.h"
#include "plibc.h"
#include "microhttpd.h"
#include <sys/mman.h>
#include <netdb.h>
#include <netinet/in.h>
#include <pthread.h>

Include dependency graph for internal.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  MHD_HTTP_Header
struct  MHD_Response
struct  MHD_Connection
struct  MHD_Daemon

Defines

#define MAX(a, b)   ((a)<(b)) ? (b) : (a)
#define MIN(a, b)   ((a)<(b)) ? (a) : (b)
#define MHD_BUF_INC_SIZE   2048

Enumerations

enum  MHD_CONNECTION_STATE {
  MHD_CONNECTION_INIT = 0, MHD_CONNECTION_URL_RECEIVED = MHD_CONNECTION_INIT + 1, MHD_CONNECTION_HEADER_PART_RECEIVED = MHD_CONNECTION_URL_RECEIVED + 1, MHD_CONNECTION_HEADERS_RECEIVED = MHD_CONNECTION_HEADER_PART_RECEIVED + 1,
  MHD_CONNECTION_HEADERS_PROCESSED = MHD_CONNECTION_HEADERS_RECEIVED + 1, MHD_CONNECTION_CONTINUE_SENDING = MHD_CONNECTION_HEADERS_PROCESSED + 1, MHD_CONNECTION_CONTINUE_SENT = MHD_CONNECTION_CONTINUE_SENDING + 1, MHD_CONNECTION_BODY_RECEIVED = MHD_CONNECTION_CONTINUE_SENT + 1,
  MHD_CONNECTION_FOOTER_PART_RECEIVED = MHD_CONNECTION_BODY_RECEIVED + 1, MHD_CONNECTION_FOOTERS_RECEIVED = MHD_CONNECTION_FOOTER_PART_RECEIVED + 1, MHD_CONNECTION_HEADERS_SENDING = MHD_CONNECTION_FOOTERS_RECEIVED + 1, MHD_CONNECTION_HEADERS_SENT = MHD_CONNECTION_HEADERS_SENDING + 1,
  MHD_CONNECTION_NORMAL_BODY_READY = MHD_CONNECTION_HEADERS_SENT + 1, MHD_CONNECTION_NORMAL_BODY_UNREADY = MHD_CONNECTION_NORMAL_BODY_READY + 1, MHD_CONNECTION_CHUNKED_BODY_READY = MHD_CONNECTION_NORMAL_BODY_UNREADY + 1, MHD_CONNECTION_CHUNKED_BODY_UNREADY = MHD_CONNECTION_CHUNKED_BODY_READY + 1,
  MHD_CONNECTION_BODY_SENT = MHD_CONNECTION_CHUNKED_BODY_UNREADY + 1, MHD_CONNECTION_FOOTERS_SENDING = MHD_CONNECTION_BODY_SENT + 1, MHD_CONNECTION_FOOTERS_SENT = MHD_CONNECTION_FOOTERS_SENDING + 1, MHD_CONNECTION_CLOSED = MHD_CONNECTION_FOOTERS_SENT + 1
}

Functions

void MHD_http_unescape (char *val)


Detailed Description

internal shared structures

Author:
Daniel Pittman

Christian Grothoff

Definition in file internal.h.


Define Documentation

#define MAX ( a,
 )     ((a)<(b)) ? (b) : (a)

Definition at line 52 of file internal.h.

#define MHD_BUF_INC_SIZE   2048

Size by which MHD usually tries to increment read/write buffers. TODO: we should probably get rid of this magic constant and put in code to automatically determine a good value.

Definition at line 60 of file internal.h.

Referenced by get_next_header_line(), MHD_create_response_from_callback(), and try_grow_read_buffer().

#define MIN ( a,
 )     ((a)<(b)) ? (a) : (b)

Definition at line 53 of file internal.h.

Referenced by try_ready_normal_body().


Enumeration Type Documentation

States in a state machine for a connection.

Transitions are any-state to CLOSED, any state to state+1, FOOTERS_SENT to INIT. CLOSED is the terminal state and INIT the initial state.

Note that transitions for *reading* happen only after the input has been processed; transitions for *writing* happen after the respective data has been put into the write buffer (the write does not have to be completed yet). A transition to CLOSED or INIT requires the write to be complete.

Enumerator:
MHD_CONNECTION_INIT  Connection just started (no headers received). Waiting for the line with the request type, URL and version.
MHD_CONNECTION_URL_RECEIVED  1: We got the URL (and request type and version). Wait for a header line.
MHD_CONNECTION_HEADER_PART_RECEIVED  2: We got part of a multi-line request header. Wait for the rest.
MHD_CONNECTION_HEADERS_RECEIVED  3: We got the request headers. Process them.
MHD_CONNECTION_HEADERS_PROCESSED  4: We have processed the request headers. Send 100 continue.
MHD_CONNECTION_CONTINUE_SENDING  5: We have processed the headers and need to send 100 CONTINUE.
MHD_CONNECTION_CONTINUE_SENT  6: We have sent 100 CONTINUE (or do not need to). Read the message body.
MHD_CONNECTION_BODY_RECEIVED  7: We got the request body. Wait for a line of the footer.
MHD_CONNECTION_FOOTER_PART_RECEIVED  8: We got part of a line of the footer. Wait for the rest.
MHD_CONNECTION_FOOTERS_RECEIVED  9: We received the entire footer. Wait for a response to be queued and prepare the response headers.
MHD_CONNECTION_HEADERS_SENDING  10: We have prepared the response headers in the writ buffer. Send the response headers.
MHD_CONNECTION_HEADERS_SENT  11: We have sent the response headers. Get ready to send the body.
MHD_CONNECTION_NORMAL_BODY_READY  12: We are ready to send a part of a non-chunked body. Send it.
MHD_CONNECTION_NORMAL_BODY_UNREADY  13: We are waiting for the client to provide more data of a non-chunked body.
MHD_CONNECTION_CHUNKED_BODY_READY  14: We are ready to send a chunk.
MHD_CONNECTION_CHUNKED_BODY_UNREADY  15: We are waiting for the client to provide a chunk of the body.
MHD_CONNECTION_BODY_SENT  16: We have sent the response body. Prepare the footers.
MHD_CONNECTION_FOOTERS_SENDING  17: We have prepared the response footer. Send it.
MHD_CONNECTION_FOOTERS_SENT  18: We have sent the response footer. Shutdown or restart.
MHD_CONNECTION_CLOSED  19: This connection is closed (no more activity allowed).

Definition at line 177 of file internal.h.


Function Documentation

void MHD_http_unescape ( char *  val  ) 

Process escape sequences ('+'=space, HH). Updates val in place.

Process escape sequences ('+'=space, HH)

Definition at line 51 of file internal.c.

Referenced by parse_arguments(), and post_process_urlencoded().

Here is the caller graph for this function:


Generated on Fri Oct 3 15:41:35 2008 for GNU libmicrohttpd by  doxygen 1.5.6