~ubuntu-branches/ubuntu/jaunty/transmission/jaunty-updates

« back to all changes in this revision

Viewing changes to third-party/shttpd/shttpd.h

  • Committer: Bazaar Package Importer
  • Author(s): Chris Coulson
  • Date: 2008-11-28 15:33:48 UTC
  • mfrom: (1.1.19 upstream)
  • Revision ID: james.westby@ubuntu.com-20081128153348-it70trfnxiroblmc
Tags: 1.40-0ubuntu1
* New upstream release (LP: #302672)
  - Tracker communication uses fewer resources
  - More accurate bandwidth limits
  - Reduce disk fragmentation by preallocating files (LP: #287726)
  - Stability, security and performance improvements to the RPC /
    Web UI server (closes LP: #290423)
  - Support compression when serving Web UI and RPC responses
  - Simplify the RPC whitelist
  - Fix bug that prevented handshakes with encrypted BitComet peers
  - Fix 1.3x bug that could re-download some data unnecessarily
    (LP: #295040)
  - Option to automatically update the blocklist weekly
  - Added off-hour bandwidth scheduling
  - Simplify file/priority selection in the details dialog
  - Fix a couple of crashes
  - New / updated translations
  - Don't inhibit hibernation by default (LP: #292929)
  - Use "close" animation when sending to notification area (LP: #130811)
  - Fix resize problems (LP: #269872)
  - Support "--version" option when launching from command line
    (LP: #292011)
  - Correctly parse announce URLs that have leading or trailing
    spaces (LP: #262411)
  - Display an error when "Open Torrent" fails (LP: #281463)
* Dropped 10_fix_crasher_from_upstream.dpatch: Fix is in this
  upstream release.
* debian/control: Don't just build-depend on libcurl-dev, which is
  a virtual package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (c) 2004-2008 Sergey Lyubka <valenok@gmail.com>
3
 
 * All rights reserved
4
 
 *
5
 
 * "THE BEER-WARE LICENSE" (Revision 42):
6
 
 * Sergey Lyubka wrote this file.  As long as you retain this notice you
7
 
 * can do whatever you want with this stuff. If we meet some day, and you think
8
 
 * this stuff is worth it, you can buy me a beer in return.
9
 
 *
10
 
 * $Id: shttpd.h,v 1.16 2008/05/31 09:02:02 drozd Exp $
11
 
 */
12
 
 
13
 
#ifndef SHTTPD_HEADER_INCLUDED
14
 
#define SHTTPD_HEADER_INCLUDED
15
 
 
16
 
#ifdef __cplusplus
17
 
extern "C" {
18
 
#endif /* __cplusplus */
19
 
 
20
 
struct ubuf {
21
 
        char            *buf;           /* Buffer pointer               */
22
 
        int             len;            /* Size of a buffer             */
23
 
        int             num_bytes;      /* Bytes processed by callback  */
24
 
};
25
 
 
26
 
/*
27
 
 * This structure is passed to the user callback function
28
 
 */
29
 
struct shttpd_arg {
30
 
        void            *priv;          /* Private! Do not touch!       */
31
 
        void            *state;         /* User state                   */
32
 
        void            *user_data;     /* Data from register_uri()     */
33
 
        struct ubuf     in;             /* Input is here, POST data     */
34
 
        struct ubuf     out;            /* Output goes here             */
35
 
 
36
 
        unsigned int    flags;
37
 
#define SHTTPD_END_OF_OUTPUT    1       /* No more data do send         */
38
 
#define SHTTPD_CONNECTION_ERROR 2       /* Server closed the connection */
39
 
#define SHTTPD_MORE_POST_DATA   4       /* arg->in has incomplete data  */
40
 
#define SHTTPD_POST_BUFFER_FULL 8       /* arg->in has max data         */
41
 
#define SHTTPD_SSI_EVAL_TRUE    16      /* SSI eval callback must set it*/
42
 
#define SHTTPD_SUSPEND          32      /* User wants to suspend output */
43
 
};
44
 
 
45
 
/*
46
 
 * User callback function. Called when certain registered URLs have been
47
 
 * requested. These are the requirements to the callback function:
48
 
 *
49
 
 * 1. It must copy data into 'out.buf' buffer, not more than 'out.len' bytes,
50
 
 *      and record how many bytes are copied, into 'out.num_bytes'
51
 
 * 2. It must not call any blocking functions
52
 
 * 3. It must set SHTTPD_END_OF_OUTPUT flag when there is no more data to send
53
 
 * 4. For POST requests, it must process the incoming data (in.buf) of length
54
 
 *      'in.len', and set 'in.num_bytes', which is how many bytes of POST
55
 
 *      data was processed and can be discarded by SHTTPD.
56
 
 * 5. If callback allocates arg->state, to keep state, it must deallocate it
57
 
 *    at the end of coonection SHTTPD_CONNECTION_ERROR or SHTTPD_END_OF_OUTPUT
58
 
 * 6. If callback function wants to suspend until some event, it must store
59
 
 *      arg->priv pointer elsewhere, set SHTTPD_SUSPEND flag and return. When
60
 
 *      the event happens, user code should call shttpd_wakeup(priv).
61
 
 *      It is safe to call shttpd_wakeup() from any thread. User code must
62
 
 *      not call shttpd_wakeup once the connection is closed.
63
 
 */
64
 
typedef void (*shttpd_callback_t)(struct shttpd_arg *);
65
 
 
66
 
/*
67
 
 * shttpd_init          Initialize shttpd context
68
 
 * shttpd_fini          Dealocate the context, close all connections
69
 
 * shttpd_set_option    Set new value for option
70
 
 * shttpd_register_uri  Setup the callback function for specified URL
71
 
 * shttpd_poll          Do connections processing
72
 
 * shttpd_version       return string with SHTTPD version
73
 
 * shttpd_get_var       Fetch POST/GET variable value by name. Return value len
74
 
 * shttpd_get_header    return value of the specified HTTP header
75
 
 * shttpd_get_env       return values for the following pseudo-variables:
76
 
                        "REQUEST_METHOD", "REQUEST_URI",
77
 
 *                      "REMOTE_USER" and "REMOTE_ADDR"
78
 
 * shttpd_printf        helper function to output data
79
 
 * shttpd_handle_error  register custom HTTP error handler
80
 
 * shttpd_wakeup        clear SHTTPD_SUSPEND state for the connection
81
 
 */
82
 
 
83
 
struct shttpd_ctx;
84
 
 
85
 
struct shttpd_ctx *shttpd_init(int argc, char *argv[]);
86
 
void shttpd_set_option(struct shttpd_ctx *, const char *opt, const char *val);
87
 
void shttpd_fini(struct shttpd_ctx *);
88
 
void shttpd_register_uri(struct shttpd_ctx *ctx, const char *uri,
89
 
                shttpd_callback_t callback, void *const user_data);
90
 
void shttpd_poll(struct shttpd_ctx *, int milliseconds);
91
 
const char *shttpd_version(void);
92
 
int shttpd_get_var(const char *var, const char *buf, int buf_len,
93
 
                char *value, int value_len);
94
 
const char *shttpd_get_header(struct shttpd_arg *, const char *header_name);
95
 
const char *shttpd_get_env(struct shttpd_arg *, const char *name);
96
 
void shttpd_get_http_version(struct shttpd_arg *,
97
 
                unsigned long *major, unsigned long *minor);
98
 
size_t shttpd_printf(struct shttpd_arg *, const char *fmt, ...);
99
 
void shttpd_handle_error(struct shttpd_ctx *ctx, int status,
100
 
                shttpd_callback_t func, void *const data);
101
 
void shttpd_register_ssi_func(struct shttpd_ctx *ctx, const char *name,
102
 
                shttpd_callback_t func, void *const user_data);
103
 
void shttpd_wakeup(const void *priv);
104
 
 
105
 
#ifdef __cplusplus
106
 
}
107
 
#endif /* __cplusplus */
108
 
 
109
 
#endif /* SHTTPD_HEADER_INCLUDED */