Changeset 4d907c9406499a7931676e0e5162280025cd1cd6
- Timestamp:
- 11/08/03 22:18:02
(5 years ago)
- Author:
- Laurent Aimar <fenrir@videolan.org>
- git-committer:
- Laurent Aimar <fenrir@videolan.org> 1060633082 +0000
- git-parent:
[5e422b1ff9247e46387798e43076f9c185cde6f2]
- git-author:
- Laurent Aimar <fenrir@videolan.org> 1060633082 +0000
- Message:
- httpd: added HEAD command support.
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| raf3dd2c |
r4d907c9 |
|
| 3 | 3 | ***************************************************************************** |
|---|
| 4 | 4 | * Copyright (C) 2001-2003 VideoLAN |
|---|
| 5 | | * $Id: httpd.c,v 1.24 2003/07/10 22:37:02 fenrir Exp $ |
|---|
| | 5 | * $Id: httpd.c,v 1.25 2003/08/11 20:18:02 fenrir Exp $ |
|---|
| 6 | 6 | * |
|---|
| 7 | 7 | * Authors: Laurent Aimar <fenrir@via.ecp.fr> |
|---|
| … | … | |
| 24 | 24 | /***************************************************************************** |
|---|
| 25 | 25 | * Preamble |
|---|
| | 26 | * |
|---|
| | 27 | * TODO: |
|---|
| | 28 | * - make that two distinct host:port use different daemon |
|---|
| 26 | 29 | *****************************************************************************/ |
|---|
| 27 | 30 | #include <stdlib.h> |
|---|
| … | … | |
| 135 | 138 | }; |
|---|
| 136 | 139 | |
|---|
| 137 | | #define HTTPD_AUTHENTICATE_NONE 0 |
|---|
| 138 | | #define HTTPD_AUTHENTICATE_BASIC 1 |
|---|
| | 140 | enum httpd_authenticate_e |
|---|
| | 141 | { |
|---|
| | 142 | HTTPD_AUTHENTICATE_NONE = 0, |
|---|
| | 143 | HTTPD_AUTHENTICATE_BASIC = 1 |
|---|
| | 144 | }; |
|---|
| 139 | 145 | |
|---|
| 140 | 146 | //typedef httpd_file_t httpd_stream_t; |
|---|
| … | … | |
| 172 | 178 | |
|---|
| 173 | 179 | |
|---|
| 174 | | #define HTTPD_CONNECTION_RECEIVING_REQUEST 1 |
|---|
| 175 | | #define HTTPD_CONNECTION_SENDING_HEADER 2 |
|---|
| 176 | | #define HTTPD_CONNECTION_SENDING_FILE 3 |
|---|
| 177 | | #define HTTPD_CONNECTION_SENDING_STREAM 4 |
|---|
| 178 | | #define HTTPD_CONNECTION_TO_BE_CLOSED 5 |
|---|
| 179 | | |
|---|
| 180 | | #define HTTPD_CONNECTION_METHOD_GET 1 |
|---|
| 181 | | #define HTTPD_CONNECTION_METHOD_POST 2 |
|---|
| | 180 | enum httpd_connection_state_e |
|---|
| | 181 | { |
|---|
| | 182 | HTTPD_CONNECTION_RECEIVING_REQUEST = 1, |
|---|
| | 183 | HTTPD_CONNECTION_SENDING_HEADER = 2, |
|---|
| | 184 | HTTPD_CONNECTION_SENDING_FILE = 3, |
|---|
| | 185 | HTTPD_CONNECTION_SENDING_STREAM = 4, |
|---|
| | 186 | HTTPD_CONNECTION_TO_BE_CLOSED = 5 |
|---|
| | 187 | }; |
|---|
| | 188 | |
|---|
| | 189 | enum httpd_connection_method_e |
|---|
| | 190 | { |
|---|
| | 191 | HTTPD_CONNECTION_METHOD_GET = 1, |
|---|
| | 192 | HTTPD_CONNECTION_METHOD_POST = 2, |
|---|
| | 193 | HTTPD_CONNECTION_METHOD_HEAD =3 |
|---|
| | 194 | }; |
|---|
| | 195 | |
|---|
| 182 | 196 | typedef struct httpd_connection_s |
|---|
| 183 | 197 | { |
|---|
| … | … | |
| 248 | 262 | static void httpd_ConnnectionClose( httpd_sys_t *, httpd_connection_t * ); |
|---|
| 249 | 263 | static int httpd_UnbanIP( httpd_sys_t *, httpd_banned_ip_t *); |
|---|
| | 264 | #if 0 |
|---|
| 250 | 265 | static int httpd_BanIP( httpd_sys_t *, char *); |
|---|
| | 266 | #endif |
|---|
| 251 | 267 | static httpd_banned_ip_t *httpd_GetbannedIP( httpd_sys_t *, char * ); |
|---|
| 252 | 268 | |
|---|
| … | … | |
| 1124 | 1140 | } |
|---|
| 1125 | 1141 | |
|---|
| 1126 | | |
|---|
| | 1142 | #if 0 |
|---|
| 1127 | 1143 | static int httpd_BanIP( httpd_sys_t *p_httpt, char * psz_new_banned_ip) |
|---|
| 1128 | 1144 | { |
|---|
| … | … | |
| 1168 | 1184 | return 0; |
|---|
| 1169 | 1185 | } |
|---|
| 1170 | | |
|---|
| | 1186 | #endif |
|---|
| 1171 | 1187 | static httpd_banned_ip_t *httpd_GetbannedIP( httpd_sys_t *p_httpt, char *psz_ip ) |
|---|
| 1172 | 1188 | { |
|---|
| … | … | |
| 1445 | 1461 | p_con->i_method = HTTPD_CONNECTION_METHOD_POST; |
|---|
| 1446 | 1462 | } |
|---|
| | 1463 | else if( !strcmp( command, "HEAD" )) |
|---|
| | 1464 | { |
|---|
| | 1465 | p_con->i_method = HTTPD_CONNECTION_METHOD_HEAD; |
|---|
| | 1466 | } |
|---|
| 1447 | 1467 | else |
|---|
| 1448 | 1468 | { |
|---|
| … | … | |
| 1564 | 1584 | { |
|---|
| 1565 | 1585 | if( p_httpt->file[i]->b_stream || |
|---|
| | 1586 | p_con->i_method == HTTPD_CONNECTION_METHOD_HEAD || |
|---|
| 1566 | 1587 | ( p_con->i_method == HTTPD_CONNECTION_METHOD_GET && p_httpt->file[i]->pf_get ) || |
|---|
| 1567 | 1588 | ( p_con->i_method == HTTPD_CONNECTION_METHOD_POST && p_httpt->file[i]->pf_post ) ) |
|---|
| … | … | |
| 1872 | 1893 | FREE( p_con->p_buffer ); |
|---|
| 1873 | 1894 | |
|---|
| 1874 | | if( !p_con->p_file->b_stream ) |
|---|
| | 1895 | if( !p_con->p_file->b_stream || p_con->i_method == HTTPD_CONNECTION_METHOD_HEAD ) |
|---|
| 1875 | 1896 | { |
|---|
| 1876 | 1897 | p_con->i_state = HTTPD_CONNECTION_SENDING_FILE; // be sure to out from HTTPD_CONNECTION_SENDING_HEADER |
|---|
| … | … | |
| 1889 | 1910 | else |
|---|
| 1890 | 1911 | { |
|---|
| | 1912 | /* HTTPD_CONNECTION_METHOD_HEAD for example */ |
|---|
| 1891 | 1913 | p_con->p_buffer = NULL; |
|---|
| 1892 | 1914 | p_con->i_buffer_size = 0; |
|---|