63 lines
1.1 KiB
C
63 lines
1.1 KiB
C
#ifndef _GPXE_HTTP_H
|
|
#define _GPXE_HTTP_H
|
|
|
|
/** @file
|
|
*
|
|
* Hyper Text Transport Protocol
|
|
*
|
|
*/
|
|
|
|
#include <stdint.h>
|
|
#include <gpxe/stream.h>
|
|
#include <gpxe/async.h>
|
|
#include <gpxe/linebuf.h>
|
|
#include <gpxe/uri.h>
|
|
|
|
/** HTTP default port */
|
|
#define HTTP_PORT 80
|
|
|
|
/** HTTPS default port */
|
|
#define HTTPS_PORT 443
|
|
|
|
/** HTTP receive state */
|
|
enum http_rx_state {
|
|
HTTP_RX_RESPONSE = 0,
|
|
HTTP_RX_HEADER,
|
|
HTTP_RX_DATA,
|
|
HTTP_RX_DEAD,
|
|
};
|
|
|
|
/**
|
|
* An HTTP request
|
|
*
|
|
*/
|
|
struct http_request {
|
|
/** URI being fetched */
|
|
struct uri *uri;
|
|
/** Data buffer to fill */
|
|
struct buffer *buffer;
|
|
/** Asynchronous operation */
|
|
struct async async;
|
|
|
|
/** HTTP response code */
|
|
unsigned int response;
|
|
/** HTTP Content-Length */
|
|
size_t content_length;
|
|
|
|
/** Server address */
|
|
struct sockaddr server;
|
|
/** Stream application for this request */
|
|
struct stream_application stream;
|
|
/** Number of bytes already sent */
|
|
size_t tx_offset;
|
|
/** RX state */
|
|
enum http_rx_state rx_state;
|
|
/** Line buffer for received header lines */
|
|
struct line_buffer linebuf;
|
|
};
|
|
|
|
extern int http_get ( struct uri *uri, struct buffer *buffer,
|
|
struct async *parent );
|
|
|
|
#endif /* _GPXE_HTTP_H */
|