Headers diff: 2.1.12 vs current
event.h (2.1.12) | | event.h (current) |
| | |
skipping to change at line 57 ¶ | | skipping to change at line 57 ¶ |
#endif | | #endif |
#ifdef EVENT__HAVE_SYS_TIME_H | | #ifdef EVENT__HAVE_SYS_TIME_H |
#include <sys/time.h> | | #include <sys/time.h> |
#endif | | #endif |
#ifdef EVENT__HAVE_STDINT_H | | #ifdef EVENT__HAVE_STDINT_H |
#include <stdint.h> | | #include <stdint.h> |
#endif | | #endif |
#include <stdarg.h> | | #include <stdarg.h> |
| | |
/* For int types. */ | | /* For int types. */ |
#include <evutil.h> | | #include <event2/util.h> |
| | |
#ifdef _WIN32 | | #ifdef _WIN32 |
#ifndef WIN32_LEAN_AND_MEAN | | #ifndef WIN32_LEAN_AND_MEAN |
#define WIN32_LEAN_AND_MEAN | | #define WIN32_LEAN_AND_MEAN |
#endif | | #endif |
#include <winsock2.h> | | #include <winsock2.h> |
#include <windows.h> | | #include <windows.h> |
#undef WIN32_LEAN_AND_MEAN | | #undef WIN32_LEAN_AND_MEAN |
#endif | | #endif |
| | |
| | |
End of changes. 1 change blocks. |
1 lines changed or deleted | | 1 lines changed or added |
|
buffer.h (2.1.12) | | buffer.h (current) |
| | |
skipping to change at line 31 ¶ | | skipping to change at line 31 ¶ |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ | | */ |
#ifndef EVENT2_BUFFER_H_INCLUDED_ | | #ifndef EVENT2_BUFFER_H_INCLUDED_ |
#define EVENT2_BUFFER_H_INCLUDED_ | | #define EVENT2_BUFFER_H_INCLUDED_ |
| | |
/** @file event2/buffer.h | | /** @file event2/buffer.h |
| | |
Functions for buffering data for network sending or receiving. | | @brief Functions for buffering data for network sending or receiving. |
| | |
An evbuffer can be used for preparing data before sending it to | | An evbuffer can be used for preparing data before sending it to |
the network or conversely for reading data from the network. | | the network or conversely for reading data from the network. |
Evbuffers try to avoid memory copies as much as possible. As a | | Evbuffers try to avoid memory copies as much as possible. As a |
result, evbuffers can be used to pass data around without actually | | result, evbuffers can be used to pass data around without actually |
incurring the overhead of copying the data. | | incurring the overhead of copying the data. |
| | |
A new evbuffer can be allocated with evbuffer_new(), and can be | | A new evbuffer can be allocated with evbuffer_new(), and can be |
freed with evbuffer_free(). Most users will be using evbuffers via | | freed with evbuffer_free(). Most users will be using evbuffers via |
the bufferevent interface. To access a bufferevent's evbuffers, use | | the bufferevent interface. To access a bufferevent's evbuffers, use |
| | |
skipping to change at line 162 ¶ | | skipping to change at line 162 ¶ |
struct evbuffer *evbuffer_new(void); | | struct evbuffer *evbuffer_new(void); |
/** | | /** |
Deallocate storage for an evbuffer. | | Deallocate storage for an evbuffer. |
| | |
@param buf pointer to the evbuffer to be freed | | @param buf pointer to the evbuffer to be freed |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evbuffer_free(struct evbuffer *buf); | | void evbuffer_free(struct evbuffer *buf); |
| | |
/** | | /** |
| | Set maximum read buffer size |
| | |
| | Default is 4096 and it works fine most of time, so before increasing the |
| | default check carefully, since this has some negative effects (like memor |
| | y |
| | fragmentation and unfair resource distribution, i.e. some events will mak |
| | e |
| | less progress than others). |
| | |
| | @param buf pointer to the evbuffer |
| | @param max buffer size |
| | @return 0 on success, -1 on failure (if max > INT_MAX). |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | int evbuffer_set_max_read(struct evbuffer *buf, size_t max); |
| | /** |
| | Get maximum read buffer size |
| | |
| | @param buf pointer to the evbuffer |
| | @return current maximum buffer read |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | size_t evbuffer_get_max_read(struct evbuffer *buf); |
| | |
| | /** |
Enable locking on an evbuffer so that it can safely be used by multiple | | Enable locking on an evbuffer so that it can safely be used by multiple |
threads at the same time. | | threads at the same time. |
| | |
NOTE: when locking is enabled, the lock will be held when callbacks are | | NOTE: when locking is enabled, the lock will be held when callbacks are |
invoked. This could result in deadlock if you aren't careful. Plan | | invoked. This could result in deadlock if you aren't careful. Plan |
accordingly! | | accordingly! |
| | |
@param buf An evbuffer to make lockable. | | @param buf An evbuffer to make lockable. |
@param lock A lock object, or NULL if we should allocate our own. | | @param lock A lock object, or NULL if we should allocate our own. |
@return 0 on success, -1 on failure. | | @return 0 on success, -1 on failure. |
| | |
skipping to change at line 209 ¶ | | skipping to change at line 232 ¶ |
* information. | | * information. |
* | | * |
* This flag is on by default for bufferevents that can take advantage | | * This flag is on by default for bufferevents that can take advantage |
* of it; you should never actually need to set it on a bufferevent's | | * of it; you should never actually need to set it on a bufferevent's |
* output buffer. | | * output buffer. |
*/ | | */ |
#define EVBUFFER_FLAG_DRAINS_TO_FD 1 | | #define EVBUFFER_FLAG_DRAINS_TO_FD 1 |
| | |
/** Change the flags that are set for an evbuffer by adding more. | | /** Change the flags that are set for an evbuffer by adding more. |
* | | * |
* @param buffer the evbuffer that the callback is watching. | | * @param buf the evbuffer that the callback is watching. |
* @param cb the callback whose status we want to change. | | |
* @param flags One or more EVBUFFER_FLAG_* options | | * @param flags One or more EVBUFFER_FLAG_* options |
* @return 0 on success, -1 on failure. | | * @return 0 on success, -1 on failure. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evbuffer_set_flags(struct evbuffer *buf, ev_uint64_t flags); | | int evbuffer_set_flags(struct evbuffer *buf, ev_uint64_t flags); |
/** Change the flags that are set for an evbuffer by removing some. | | /** Change the flags that are set for an evbuffer by removing some. |
* | | * |
* @param buffer the evbuffer that the callback is watching. | | * @param buf the evbuffer that the callback is watching. |
* @param cb the callback whose status we want to change. | | |
* @param flags One or more EVBUFFER_FLAG_* options | | * @param flags One or more EVBUFFER_FLAG_* options |
* @return 0 on success, -1 on failure. | | * @return 0 on success, -1 on failure. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evbuffer_clear_flags(struct evbuffer *buf, ev_uint64_t flags); | | int evbuffer_clear_flags(struct evbuffer *buf, ev_uint64_t flags); |
| | |
/** | | /** |
Returns the total number of bytes stored in the evbuffer | | Returns the total number of bytes stored in the evbuffer |
| | |
@param buf pointer to the evbuffer | | @param buf pointer to the evbuffer |
| | |
skipping to change at line 531 ¶ | | skipping to change at line 552 ¶ |
@return 0 if successful, or -1 if an error occurred | | @return 0 if successful, or -1 if an error occurred |
*/ | | */ |
| | |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evbuffer_add_file(struct evbuffer *outbuf, int fd, ev_off_t offset, | | int evbuffer_add_file(struct evbuffer *outbuf, int fd, ev_off_t offset, |
ev_off_t length); | | ev_off_t length); |
| | |
/** | | /** |
An evbuffer_file_segment holds a reference to a range of a file -- | | An evbuffer_file_segment holds a reference to a range of a file -- |
possibly the whole file! -- for use in writing from an evbuffer to a | | possibly the whole file! -- for use in writing from an evbuffer to a |
socket. It could be implemented with mmap, sendfile, splice, or (if all | | socket. It could be implemented with mmap or sendfile, or (if all else |
else fails) by just pulling all the data into RAM. A single | | fails) by just pulling all the data into RAM. A single evbuffer_file_segm |
evbuffer_file_segment can be added more than once, and to more than one | | ent |
evbuffer. | | can be added more than once, and to more than one evbuffer. |
*/ | | */ |
struct evbuffer_file_segment; | | struct evbuffer_file_segment; |
| | |
/** | | /** |
Flag for creating evbuffer_file_segment: If this flag is set, then when | | Flag for creating evbuffer_file_segment: If this flag is set, then when |
the evbuffer_file_segment is freed and no longer in use by any | | the evbuffer_file_segment is freed and no longer in use by any |
evbuffer, the underlying fd is closed. | | evbuffer, the underlying fd is closed. |
*/ | | */ |
#define EVBUF_FS_CLOSE_ON_FREE 0x01 | | #define EVBUF_FS_CLOSE_ON_FREE 0x01 |
/** | | /** |
Flag for creating evbuffer_file_segment: Disable memory-map based | | Flag for creating evbuffer_file_segment: Disable memory-map based |
implementations. | | implementations. |
*/ | | */ |
#define EVBUF_FS_DISABLE_MMAP 0x02 | | #define EVBUF_FS_DISABLE_MMAP 0x02 |
/** | | /** |
Flag for creating evbuffer_file_segment: Disable direct fd-to-fd | | Flag for creating evbuffer_file_segment: Disable direct fd-to-fd |
implementations (including sendfile and splice). | | implementations (sendfile). |
| | |
You might want to use this option if data needs to be taken from the | | You might want to use this option if data needs to be taken from the |
evbuffer by any means other than writing it to the network: the sendfile | | evbuffer by any means other than writing it to the network: the sendfile |
backend is fast, but it only works for sending files directly to the | | backend is fast, but it only works for sending files directly to the |
network. | | network. |
*/ | | */ |
#define EVBUF_FS_DISABLE_SENDFILE 0x04 | | #define EVBUF_FS_DISABLE_SENDFILE 0x04 |
/** | | /** |
Flag for creating evbuffer_file_segment: Do not allocate a lock for this | | Flag for creating evbuffer_file_segment: Do not allocate a lock for this |
segment. If this option is set, then neither the segment nor any | | segment. If this option is set, then neither the segment nor any |
| | |
skipping to change at line 579 ¶ | | skipping to change at line 599 ¶ |
for reference. | | for reference. |
*/ | | */ |
typedef void (*evbuffer_file_segment_cleanup_cb)( | | typedef void (*evbuffer_file_segment_cleanup_cb)( |
struct evbuffer_file_segment const* seg, int flags, void* arg); | | struct evbuffer_file_segment const* seg, int flags, void* arg); |
| | |
/** | | /** |
Create and return a new evbuffer_file_segment for reading data from a | | Create and return a new evbuffer_file_segment for reading data from a |
file and sending it out via an evbuffer. | | file and sending it out via an evbuffer. |
| | |
This function avoids unnecessary data copies between userland and | | This function avoids unnecessary data copies between userland and |
kernel. Where available, it uses sendfile or splice. | | kernel. Where available, it uses sendfile. |
| | |
The file descriptor must not be closed so long as any evbuffer is using | | The file descriptor must not be closed so long as any evbuffer is using |
this segment. | | this segment. |
| | |
The results of using evbuffer_remove() or evbuffer_pullup() or any other | | The results of using evbuffer_remove() or evbuffer_pullup() or any other |
function that reads bytes from an evbuffer on any evbuffer containing | | function that reads bytes from an evbuffer on any evbuffer containing |
the newly returned segment are undefined, unless you pass the | | the newly returned segment are undefined, unless you pass the |
EVBUF_FS_DISABLE_SENDFILE flag to this function. | | EVBUF_FS_DISABLE_SENDFILE flag to this function. |
| | |
@param fd an open file to read from. | | @param fd an open file to read from. |
| | |
End of changes. 7 change blocks. |
11 lines changed or deleted | | 34 lines changed or added |
|
buffer_compat.h (2.1.12) | | buffer_compat.h (current) |
| | |
skipping to change at line 34 ¶ | | skipping to change at line 34 ¶ |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ | | */ |
| | |
#ifndef EVENT2_BUFFER_COMPAT_H_INCLUDED_ | | #ifndef EVENT2_BUFFER_COMPAT_H_INCLUDED_ |
#define EVENT2_BUFFER_COMPAT_H_INCLUDED_ | | #define EVENT2_BUFFER_COMPAT_H_INCLUDED_ |
| | |
#include <event2/visibility.h> | | #include <event2/visibility.h> |
| | |
/** @file event2/buffer_compat.h | | /** @file event2/buffer_compat.h |
| | |
Obsolete and deprecated versions of the functions in buffer.h: provi
ded | | @brief Obsolete and deprecated versions of the functions in buffer.h
: provided |
only for backward compatibility. | | only for backward compatibility. |
*/ | | */ |
| | |
/** | | /** |
Obsolete alias for evbuffer_readln(buffer, NULL, EVBUFFER_EOL_ANY). | | Obsolete alias for evbuffer_readln(buffer, NULL, EVBUFFER_EOL_ANY). |
| | |
@deprecated This function is deprecated because its behavior is not corr
ect | | @deprecated This function is deprecated because its behavior is not corr
ect |
for almost any protocol, and also because it's wholly subsumed by | | for almost any protocol, and also because it's wholly subsumed by |
evbuffer_readln(). | | evbuffer_readln(). |
| | |
| | |
End of changes. 1 change blocks. |
1 lines changed or deleted | | 1 lines changed or added |
|
bufferevent.h (2.1.12) | | bufferevent.h (current) |
| | |
skipping to change at line 33 ¶ | | skipping to change at line 33 ¶ |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ | | */ |
#ifndef EVENT2_BUFFEREVENT_H_INCLUDED_ | | #ifndef EVENT2_BUFFEREVENT_H_INCLUDED_ |
#define EVENT2_BUFFEREVENT_H_INCLUDED_ | | #define EVENT2_BUFFEREVENT_H_INCLUDED_ |
| | |
/** | | /** |
@file event2/bufferevent.h | | @file event2/bufferevent.h |
| | |
Functions for buffering data for network sending or receiving. Buffereve | | @brief Functions for buffering data for network sending or receiving. |
nts | | |
are higher level than evbuffers: each has an underlying evbuffer for read | | Bufferevents are higher level than evbuffers: each has an underlying evbu |
ing | | ffer for reading |
and one for writing, and callbacks that are invoked under certain | | and one for writing, and callbacks that are invoked under certain |
circumstances. | | circumstances. |
| | |
A bufferevent provides input and output buffers that get filled and | | A bufferevent provides input and output buffers that get filled and |
drained automatically. The user of a bufferevent no longer deals | | drained automatically. The user of a bufferevent no longer deals |
directly with the I/O, but instead is reading from input and writing | | directly with the I/O, but instead is reading from input and writing |
to output buffers. | | to output buffers. |
| | |
Once initialized, the bufferevent structure can be used repeatedly | | Once initialized, the bufferevent structure can be used repeatedly |
with bufferevent_enable() and bufferevent_disable(). | | with bufferevent_enable() and bufferevent_disable(). |
| | |
skipping to change at line 212 ¶ | | skipping to change at line 213 ¶ |
and configure the bufferevent so that a BEV_EVENT_CONNECTED event will b
e | | and configure the bufferevent so that a BEV_EVENT_CONNECTED event will b
e |
yielded when it is done connecting. | | yielded when it is done connecting. |
| | |
@param bufev an existing bufferevent allocated with | | @param bufev an existing bufferevent allocated with |
bufferevent_socket_new(). | | bufferevent_socket_new(). |
@param addr the address we should connect to | | @param addr the address we should connect to |
@param socklen The length of the address | | @param socklen The length of the address |
@return 0 on success, -1 on failure. | | @return 0 on success, -1 on failure. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int bufferevent_socket_connect(struct bufferevent *, const struct sockaddr
*, int); | | int bufferevent_socket_connect(struct bufferevent *bufev, const struct sock
addr *addr, int socklen); |
| | |
struct evdns_base; | | struct evdns_base; |
/** | | /** |
Resolve the hostname 'hostname' and connect to it as with | | Resolve the hostname 'hostname' and connect to it as with |
bufferevent_socket_connect(). | | bufferevent_socket_connect(). |
| | |
@param bufev An existing bufferevent allocated with bufferevent_socket_n
ew() | | @param bufev An existing bufferevent allocated with bufferevent_socket_n
ew() |
@param evdns_base Optionally, an evdns_base to use for resolving hostnam
es | | @param evdns_base Optionally, an evdns_base to use for resolving hostnam
es |
asynchronously. May be set to NULL for a blocking resolve. | | asynchronously. May be set to NULL for a blocking resolve. |
@param family A preferred address family to resolve addresses to, or | | @param family A preferred address family to resolve addresses to, or |
AF_UNSPEC for no preference. Only AF_INET, AF_INET6, and AF_UNSPEC a
re | | AF_UNSPEC for no preference. Only AF_INET, AF_INET6, and AF_UNSPEC a
re |
supported. | | supported. |
@param hostname The hostname to resolve; see below for notes on recogniz
ed | | @param hostname The hostname to resolve; see below for notes on recogniz
ed |
formats | | formats |
@param port The port to connect to on the resolved address. | | @param port The port to connect to on the resolved address. |
@return 0 if successful, -1 on failure. | | @return 0 if successful, -1 on failure. |
| | |
| | @see bufferevent_socket_connect_hostname_hints() |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | int bufferevent_socket_connect_hostname(struct bufferevent *bufev, |
| | struct evdns_base *evdns_base, int family, const char *hostname, int po |
| | rt); |
| | |
| | /** |
| | Resolve the hostname 'hostname' and connect to it as with |
| | bufferevent_socket_connect(). |
| | |
| | @param bufev An existing bufferevent allocated with bufferevent_socket_n |
| | ew() |
| | @param evdns_base Optionally, an evdns_base to use for resolving hostnam |
| | es |
| | asynchronously. May be set to NULL for a blocking resolve. |
| | @param hints_in points to an addrinfo structure that specifies criteria |
| | for |
| | selecting the socket address structures to be used |
| | @param hostname The hostname to resolve; see below for notes on recogniz |
| | ed |
| | formats |
| | @param port The port to connect to on the resolved address. |
| | @return 0 if successful, -1 on failure. |
| | |
Recognized hostname formats are: | | Recognized hostname formats are: |
| | |
www.example.com (hostname) | | www.example.com (hostname) |
1.2.3.4 (ipv4address) | | 1.2.3.4 (ipv4address) |
::1 (ipv6address) | | ::1 (ipv6address) |
[::1] ([ipv6address]) | | [::1] ([ipv6address]) |
| | |
Performance note: If you do not provide an evdns_base, this function | | Performance note: If you do not provide an evdns_base, this function |
may block while it waits for a DNS response. This is probably no
t | | may block while it waits for a DNS response. This is probably no
t |
what you want. | | what you want. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int bufferevent_socket_connect_hostname(struct bufferevent *, | | int bufferevent_socket_connect_hostname_hints(struct bufferevent *bufev, |
struct evdns_base *, int, const char *, int); | | struct evdns_base *evdns_base, const struct evutil_addrinfo *hints_in, |
| | const char *hostname, int port); |
| | |
/** | | /** |
Return the error code for the last failed DNS lookup attempt made by | | Return the error code for the last failed DNS lookup attempt made by |
bufferevent_socket_connect_hostname(). | | bufferevent_socket_connect_hostname(). |
| | |
@param bev The bufferevent object. | | @param bev The bufferevent object. |
@return DNS error code. | | @return DNS error code. |
@see evutil_gai_strerror() | | @see evutil_gai_strerror() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
| | |
skipping to change at line 358 ¶ | | skipping to change at line 379 ¶ |
Changes the file descriptor on which the bufferevent operates. | | Changes the file descriptor on which the bufferevent operates. |
Not supported for all bufferevent types. | | Not supported for all bufferevent types. |
| | |
@param bufev the bufferevent object for which to change the file descript
or | | @param bufev the bufferevent object for which to change the file descript
or |
@param fd the file descriptor to operate on | | @param fd the file descriptor to operate on |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int bufferevent_setfd(struct bufferevent *bufev, evutil_socket_t fd); | | int bufferevent_setfd(struct bufferevent *bufev, evutil_socket_t fd); |
| | |
/** | | /** |
| | Replaces the file descriptor on which the bufferevent operates. |
| | Not supported for all bufferevent types. |
| | |
| | Unlike bufferevent_setfd() it will close previous file descriptor (if any |
| | ). |
| | |
| | @param bufev the bufferevent object for which to change the file descript |
| | or |
| | @param fd the file descriptor to operate on |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | int bufferevent_replacefd(struct bufferevent *bufev, evutil_socket_t fd); |
| | |
| | /** |
Returns the file descriptor associated with a bufferevent, or -1 if | | Returns the file descriptor associated with a bufferevent, or -1 if |
no file descriptor is associated with the bufferevent. | | no file descriptor is associated with the bufferevent. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
evutil_socket_t bufferevent_getfd(struct bufferevent *bufev); | | evutil_socket_t bufferevent_getfd(struct bufferevent *bufev); |
| | |
/** | | /** |
Returns the underlying bufferevent associated with a bufferevent (if | | Returns the underlying bufferevent associated with a bufferevent (if |
the bufferevent is a wrapper), or NULL if there is no underlying buffere
vent. | | the bufferevent is a wrapper), or NULL if there is no underlying buffere
vent. |
*/ | | */ |
| | |
skipping to change at line 408 ¶ | | skipping to change at line 441 ¶ |
int bufferevent_write_buffer(struct bufferevent *bufev, struct evbuffer *bu
f); | | int bufferevent_write_buffer(struct bufferevent *bufev, struct evbuffer *bu
f); |
| | |
/** | | /** |
Read data from a bufferevent buffer. | | Read data from a bufferevent buffer. |
| | |
The bufferevent_read() function is used to read data from the input buffe
r. | | The bufferevent_read() function is used to read data from the input buffe
r. |
| | |
@param bufev the bufferevent to be read from | | @param bufev the bufferevent to be read from |
@param data pointer to a buffer that will store the data | | @param data pointer to a buffer that will store the data |
@param size the size of the data buffer, in bytes | | @param size the size of the data buffer, in bytes |
@return the amount of data read, in bytes. | | @return the amount of data read, in bytes. If 0 is returned, it is possib |
| | le |
| | that there is no data in the buffer or that the read failed. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
size_t bufferevent_read(struct bufferevent *bufev, void *data, size_t size)
; | | size_t bufferevent_read(struct bufferevent *bufev, void *data, size_t size)
; |
| | |
/** | | /** |
Read data from a bufferevent buffer into an evbuffer. This avoids | | Read data from a bufferevent buffer into an evbuffer. This avoids |
memory copies. | | memory copies. |
| | |
@param bufev the bufferevent to be read from | | @param bufev the bufferevent to be read from |
@param buf the evbuffer to which to add data | | @param buf the evbuffer to which to add data |
| | |
skipping to change at line 889 ¶ | | skipping to change at line 923 ¶ |
/** Remove 'bev' from its current rate-limit group (if any). */ | | /** Remove 'bev' from its current rate-limit group (if any). */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int bufferevent_remove_from_rate_limit_group(struct bufferevent *bev); | | int bufferevent_remove_from_rate_limit_group(struct bufferevent *bev); |
| | |
/** | | /** |
Set the size limit for single read operation. | | Set the size limit for single read operation. |
| | |
Set to 0 for a reasonable default. | | Set to 0 for a reasonable default. |
| | |
Return 0 on success and -1 on failure. | | Return 0 on success and -1 on failure. |
| | |
| | @see evbuffer_set_max_read() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int bufferevent_set_max_single_read(struct bufferevent *bev, size_t size); | | int bufferevent_set_max_single_read(struct bufferevent *bev, size_t size); |
| | |
/** | | /** |
Set the size limit for single write operation. | | Set the size limit for single write operation. |
| | |
Set to 0 for a reasonable default. | | Set to 0 for a reasonable default. |
| | |
Return 0 on success and -1 on failure. | | Return 0 on success and -1 on failure. |
| | |
End of changes. 7 change blocks. |
8 lines changed or deleted | | 52 lines changed or added |
|
bufferevent_compat.h (2.1.12) | | bufferevent_compat.h (current) |
| | |
skipping to change at line 31 ¶ | | skipping to change at line 31 ¶ |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE
, | | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE
, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ | | */ |
#ifndef EVENT2_BUFFEREVENT_COMPAT_H_INCLUDED_ | | #ifndef EVENT2_BUFFEREVENT_COMPAT_H_INCLUDED_ |
#define EVENT2_BUFFEREVENT_COMPAT_H_INCLUDED_ | | #define EVENT2_BUFFEREVENT_COMPAT_H_INCLUDED_ |
| | |
| | /** @file event2/bufferevent_compat.h |
| | * |
| | * @brief Deprecated versions of the functions in bufferevent.h: provided |
| | * only for backwards compatibility. |
| | */ |
| | |
#include <event2/visibility.h> | | #include <event2/visibility.h> |
| | |
#define evbuffercb bufferevent_data_cb | | #define evbuffercb bufferevent_data_cb |
#define everrorcb bufferevent_event_cb | | #define everrorcb bufferevent_event_cb |
| | |
/** | | /** |
Create a new bufferevent for an fd. | | Create a new bufferevent for an fd. |
| | |
This function is deprecated. Use bufferevent_socket_new and | | This function is deprecated. Use bufferevent_socket_new and |
bufferevent_set_callbacks instead. | | bufferevent_set_callbacks instead. |
| | |
skipping to change at line 84 ¶ | | skipping to change at line 90 ¶ |
error occurred | | error occurred |
@see bufferevent_base_set(), bufferevent_free() | | @see bufferevent_base_set(), bufferevent_free() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct bufferevent *bufferevent_new(evutil_socket_t fd, | | struct bufferevent *bufferevent_new(evutil_socket_t fd, |
evbuffercb readcb, evbuffercb writecb, everrorcb errorcb, void *cbarg); | | evbuffercb readcb, evbuffercb writecb, everrorcb errorcb, void *cbarg); |
| | |
/** | | /** |
Set the read and write timeout for a buffered event. | | Set the read and write timeout for a buffered event. |
| | |
| | @deprecated Use bufferevent_set_timeouts instead. |
| | |
@param bufev the bufferevent to be modified | | @param bufev the bufferevent to be modified |
@param timeout_read the read timeout | | @param timeout_read the read timeout |
@param timeout_write the write timeout | | @param timeout_write the write timeout |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void bufferevent_settimeout(struct bufferevent *bufev, | | void bufferevent_settimeout(struct bufferevent *bufev, |
int timeout_read, int timeout_write); | | int timeout_read, int timeout_write); |
| | |
#define EVBUFFER_READ BEV_EVENT_READING | | #define EVBUFFER_READ BEV_EVENT_READING |
#define EVBUFFER_WRITE BEV_EVENT_WRITING | | #define EVBUFFER_WRITE BEV_EVENT_WRITING |
| | |
End of changes. 2 change blocks. |
0 lines changed or deleted | | 8 lines changed or added |
|
bufferevent_ssl.h (2.1.12) | | bufferevent_ssl.h (current) |
| | |
skipping to change at line 31 ¶ | | skipping to change at line 31 ¶ |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ | | */ |
#ifndef EVENT2_BUFFEREVENT_SSL_H_INCLUDED_ | | #ifndef EVENT2_BUFFEREVENT_SSL_H_INCLUDED_ |
#define EVENT2_BUFFEREVENT_SSL_H_INCLUDED_ | | #define EVENT2_BUFFEREVENT_SSL_H_INCLUDED_ |
| | |
/** @file event2/bufferevent_ssl.h | | /** @file event2/bufferevent_ssl.h |
| | |
OpenSSL support for bufferevents. | | @brief OpenSSL support for bufferevents. |
*/ | | */ |
#include <event2/visibility.h> | | #include <event2/visibility.h> |
#include <event2/event-config.h> | | #include <event2/event-config.h> |
#include <event2/bufferevent.h> | | #include <event2/bufferevent.h> |
#include <event2/util.h> | | #include <event2/util.h> |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
extern "C" { | | extern "C" { |
#endif | | #endif |
| | |
/* This is what openssl's SSL objects are underneath. */ | | |
struct ssl_st; | | |
| | |
/** | | /** |
The state of an SSL object to be used when creating a new | | The state of an SSL object to be used when creating a new |
SSL bufferevent. | | SSL bufferevent. |
*/ | | */ |
enum bufferevent_ssl_state { | | enum bufferevent_ssl_state { |
BUFFEREVENT_SSL_OPEN = 0, | | BUFFEREVENT_SSL_OPEN = 0, |
BUFFEREVENT_SSL_CONNECTING = 1, | | BUFFEREVENT_SSL_CONNECTING = 1, |
BUFFEREVENT_SSL_ACCEPTING = 2 | | BUFFEREVENT_SSL_ACCEPTING = 2 |
}; | | }; |
| | |
| | /** Control how to report dirty SSL shutdowns. |
| | |
| | If the peer (or the network, or an attacker) closes the TCP |
| | connection before closing the SSL channel, and the protocol is SSL >= v |
| | 3, |
| | this is a "dirty" shutdown. If BUFFEREVENT_SSL_DIRTY_SHUTDOWN is not s |
| | et |
| | (default), this is reported as BEV_EVENT_ERROR. |
| | |
| | If instead BUFFEREVENT_SSL_DIRTY_SHUTDOWN is set, a dirty shutdown is |
| | reported as BEV_EVENT_EOF. |
| | |
| | (Note that if the protocol is < SSLv3, you will always receive |
| | BEV_EVENT_EOF, since SSL 2 and earlier cannot distinguish a secure |
| | connection close from a dirty one. This is one reason (among many) |
| | not to use SSL 2.) |
| | */ |
| | #define BUFFEREVENT_SSL_DIRTY_SHUTDOWN 1 |
| | /** Control writes in the SSL bufferevents. |
| | |
| | By default SSL bufferevent will peek bytes from the buffer as the arriv |
| | ed. |
| | with respect to the segment boundaries in the buffer. |
| | However, by ignoring these segment boundaries number of packets to send |
| | can be decreased. |
| | |
| | This flags will ignore the segment boundaries. |
| | |
| | Useful in conjunction with http layer. |
| | */ |
| | #define BUFFEREVENT_SSL_BATCH_WRITE 2 |
| | |
| | #if defined(EVENT__HAVE_OPENSSL) || defined(EVENT__HAVE_MBEDTLS) |
| | /** |
| | * Get flags of the SSL bufferevent. |
| | * |
| | * @see BUFFEREVENT_SSL_* |
| | * @return flags or SIZE_MAX in case of error (if bufferevent is not SSL). |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | ev_uint64_t bufferevent_ssl_get_flags(struct bufferevent *bev); |
| | /** Change the flags that are set for an ssl bufferevent by adding more. |
| | * |
| | * @param bev the ssl bufferevent. |
| | * @param flags One or more BUFFEREVENT_SSL_* options |
| | * @return old flags success, EV_UINT64_MAX on failure. |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | ev_uint64_t bufferevent_ssl_set_flags(struct bufferevent *bev, ev_uint64_t |
| | flags); |
| | /** Change the flags that are set for an ssl bufferevent by removing some. |
| | * |
| | * @param bev the bufferevent. |
| | * @param flags One or more BUFFEREVENT_SSL_* options |
| | * @return old flags success, EV_UINT64_MAX on failure. |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | ev_uint64_t bufferevent_ssl_clear_flags(struct bufferevent *bev, ev_uint64_ |
| | t flags); |
| | |
| | #endif /* defined(EVENT__HAVE_OPENSSL) || defined(EVENT__HAVE_MBEDTLS) */ |
| | |
#if defined(EVENT__HAVE_OPENSSL) || defined(EVENT_IN_DOXYGEN_) | | #if defined(EVENT__HAVE_OPENSSL) || defined(EVENT_IN_DOXYGEN_) |
| | /* This is what openssl's SSL objects are underneath. */ |
| | struct ssl_st; |
| | |
/** | | /** |
Create a new SSL bufferevent to send its data over another bufferevent. | | Create a new SSL bufferevent to send its data over another bufferevent. |
| | |
@param base An event_base to use to detect reading and writing. It | | @param base An event_base to use to detect reading and writing. It |
must also be the base for the underlying bufferevent. | | must also be the base for the underlying bufferevent. |
@param underlying A socket to use for this SSL | | @param underlying A socket to use for this SSL |
@param ssl A SSL* object from openssl. | | @param ssl A SSL* object from openssl. |
@param state The current state of the SSL connection | | @param state The current state of the SSL connection |
@param options One or more bufferevent_options | | @param options One or more bufferevent_options |
@return A new bufferevent on success, or NULL on failure | | @return A new bufferevent on success, or NULL on failure |
| | |
skipping to change at line 93 ¶ | | skipping to change at line 150 ¶ |
@return A new bufferevent on success, or NULL on failure. | | @return A new bufferevent on success, or NULL on failure. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct bufferevent * | | struct bufferevent * |
bufferevent_openssl_socket_new(struct event_base *base, | | bufferevent_openssl_socket_new(struct event_base *base, |
evutil_socket_t fd, | | evutil_socket_t fd, |
struct ssl_st *ssl, | | struct ssl_st *ssl, |
enum bufferevent_ssl_state state, | | enum bufferevent_ssl_state state, |
int options); | | int options); |
| | |
/** Control how to report dirty SSL shutdowns. | | /** |
| | * Get value of the BUFFEREVENT_SSL_DIRTY_SHUTDOWN flag. |
If the peer (or the network, or an attacker) closes the TCP | | * |
connection before closing the SSL channel, and the protocol is SSL >= v | | * @see BUFFEREVENT_SSL_DIRTY_SHUTDOWN |
3, | | * @deprecated This function is deprecated, use bufferevent_ssl_get_flags() |
this is a "dirty" shutdown. If allow_dirty_shutdown is 0 (default), | | instead. |
this is reported as BEV_EVENT_ERROR. | | * @see bufferevent_ssl_get_flags() |
| | */ |
If instead allow_dirty_shutdown=1, a dirty shutdown is reported as | | |
BEV_EVENT_EOF. | | |
| | |
(Note that if the protocol is < SSLv3, you will always receive | | |
BEV_EVENT_EOF, since SSL 2 and earlier cannot distinguish a secure | | |
connection close from a dirty one. This is one reason (among many) | | |
not to use SSL 2.) | | |
*/ | | |
| | |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int bufferevent_openssl_get_allow_dirty_shutdown(struct bufferevent *bev); | | int bufferevent_openssl_get_allow_dirty_shutdown(struct bufferevent *bev); |
| | /** |
| | * Set value of the BUFFEREVENT_SSL_DIRTY_SHUTDOWN flag. |
| | * |
| | * @see BUFFEREVENT_SSL_DIRTY_SHUTDOWN |
| | * @deprecated This function is deprecated, use bufferevent_ssl_set_flags() |
| | instead. |
| | * @see bufferevent_ssl_set_flags() |
| | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void bufferevent_openssl_set_allow_dirty_shutdown(struct bufferevent *bev, | | void bufferevent_openssl_set_allow_dirty_shutdown(struct bufferevent *bev, |
int allow_dirty_shutdown); | | int allow_dirty_shutdown); |
| | |
/** Return the underlying openssl SSL * object for an SSL bufferevent. */ | | /** Return the underlying openssl SSL * object for an SSL bufferevent. */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct ssl_st * | | struct ssl_st * |
bufferevent_openssl_get_ssl(struct bufferevent *bufev); | | bufferevent_openssl_get_ssl(struct bufferevent *bufev); |
| | |
/** Tells a bufferevent to begin SSL renegotiation. */ | | /** Tells a bufferevent to begin SSL renegotiation. */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int bufferevent_ssl_renegotiate(struct bufferevent *bev); | | int bufferevent_ssl_renegotiate(struct bufferevent *bev); |
| | |
/** Return the most recent OpenSSL error reported on an SSL bufferevent. */ | | /** Return the most recent OpenSSL error reported on an SSL bufferevent. */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
unsigned long bufferevent_get_openssl_error(struct bufferevent *bev); | | unsigned long bufferevent_get_openssl_error(struct bufferevent *bev); |
| | |
#endif | | #endif |
| | #if defined(EVENT__HAVE_MBEDTLS) || defined(EVENT_IN_DOXYGEN_) |
| | struct mbedtls_ssl_context; |
| | struct mbedtls_ssl_config; |
| | typedef struct mbedtls_ssl_context mbedtls_dyncontext; |
| | |
| | /** |
| | Create a new SSL bufferevent to send its data over another bufferevent. |
| | |
| | @param base An event_base to use to detect reading and writing. It |
| | must also be the base for the underlying bufferevent. |
| | @param underlying A socket to use for this SSL |
| | @param ssl A SSL* object from openssl. |
| | @param state The current state of the SSL connection |
| | @param options One or more bufferevent_options |
| | @return A new bufferevent on success, or NULL on failure |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | struct bufferevent * |
| | bufferevent_mbedtls_filter_new(struct event_base *base, |
| | struct bufferevent *underlying, |
| | mbedtls_dyncontext *ssl, |
| | enum bufferevent_ssl_state state, |
| | int options); |
| | |
| | /** |
| | Create a new SSL bufferevent to send its data over an SSL * on a socket. |
| | |
| | @param base An event_base to use to detect reading and writing |
| | @param fd A socket to use for this SSL |
| | @param ssl A SSL* object from mbedtls. |
| | @param state The current state of the SSL connection |
| | @param options One or more bufferevent_options |
| | @return A new bufferevent on success, or NULL on failure. |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | struct bufferevent * |
| | bufferevent_mbedtls_socket_new(struct event_base *base, |
| | evutil_socket_t fd, |
| | mbedtls_dyncontext *ssl, |
| | enum bufferevent_ssl_state state, |
| | int options); |
| | |
| | /** |
| | * Get value of the BUFFEREVENT_SSL_DIRTY_SHUTDOWN flag. |
| | * |
| | * @see BUFFEREVENT_SSL_DIRTY_SHUTDOWN |
| | * @deprecated This function is deprecated, use bufferevent_ssl_get_flags() |
| | instead. |
| | * @see bufferevent_ssl_get_flags() |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | int bufferevent_mbedtls_get_allow_dirty_shutdown(struct bufferevent *bev); |
| | /** |
| | * Set value of the BUFFEREVENT_SSL_DIRTY_SHUTDOWN flag. |
| | * |
| | * @see BUFFEREVENT_SSL_DIRTY_SHUTDOWN |
| | * @deprecated This function is deprecated, use bufferevent_ssl_set_flags() |
| | instead. |
| | * @see bufferevent_ssl_set_flags() |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | void bufferevent_mbedtls_set_allow_dirty_shutdown(struct bufferevent *bev, |
| | int allow_dirty_shutdown); |
| | |
| | /** Return the underlying mbedtls SSL * object for an SSL bufferevent. */ |
| | EVENT2_EXPORT_SYMBOL |
| | struct mbedtls_ssl_context * |
| | bufferevent_mbedtls_get_ssl(struct bufferevent *bufev); |
| | |
| | /** Tells a bufferevent to begin SSL renegotiation. */ |
| | EVENT2_EXPORT_SYMBOL |
| | int bufferevent_mbedtls_renegotiate(struct bufferevent *bev); |
| | |
| | /** Return the most recent MbedTLS error reported on an SSL bufferevent. */ |
| | EVENT2_EXPORT_SYMBOL |
| | unsigned long bufferevent_get_mbedtls_error(struct bufferevent *bev); |
| | |
| | /** Create a new heap-based MbedTLS context for use it in bufferevent_mbedt |
| | ls_* functions */ |
| | EVENT2_EXPORT_SYMBOL |
| | mbedtls_dyncontext * |
| | bufferevent_mbedtls_dyncontext_new(struct mbedtls_ssl_config *conf); |
| | |
| | /** Deallocate heap-based MbedTLS context */ |
| | EVENT2_EXPORT_SYMBOL |
| | void |
| | bufferevent_mbedtls_dyncontext_free(mbedtls_dyncontext *ctx); |
| | |
| | #endif |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
} | | } |
#endif | | #endif |
| | |
#endif /* EVENT2_BUFFEREVENT_SSL_H_INCLUDED_ */ | | #endif /* EVENT2_BUFFEREVENT_SSL_H_INCLUDED_ */ |
| | |
End of changes. 7 change blocks. |
21 lines changed or deleted | | 171 lines changed or added |
|
bufferevent_struct.h (2.1.12) | | bufferevent_struct.h (current) |
| | |
skipping to change at line 90 ¶ | | skipping to change at line 90 ¶ |
struct event ev_read; | | struct event ev_read; |
/** A write event that triggers when a timeout has happened or a soc
ket | | /** A write event that triggers when a timeout has happened or a soc
ket |
is ready to write data. Only used by some subtypes of | | is ready to write data. Only used by some subtypes of |
bufferevent. */ | | bufferevent. */ |
struct event ev_write; | | struct event ev_write; |
| | |
/** An input buffer. Only the bufferevent is allowed to add data to | | /** An input buffer. Only the bufferevent is allowed to add data to |
this buffer, though the user is allowed to drain it. */ | | this buffer, though the user is allowed to drain it. */ |
struct evbuffer *input; | | struct evbuffer *input; |
| | |
/** An input buffer. Only the bufferevent is allowed to drain data | | /** An output buffer. Only the bufferevent is allowed to drain data |
from this buffer, though the user is allowed to add it. */ | | from this buffer, though the user is allowed to add it. */ |
struct evbuffer *output; | | struct evbuffer *output; |
| | |
struct event_watermark wm_read; | | struct event_watermark wm_read; |
struct event_watermark wm_write; | | struct event_watermark wm_write; |
| | |
bufferevent_data_cb readcb; | | bufferevent_data_cb readcb; |
bufferevent_data_cb writecb; | | bufferevent_data_cb writecb; |
/* This should be called 'eventcb', but renaming it would break | | /* This should be called 'eventcb', but renaming it would break |
* backward compatibility */ | | * backward compatibility */ |
| | |
End of changes. 1 change blocks. |
1 lines changed or deleted | | 1 lines changed or added |
|
dns.h (2.1.12) | | dns.h (current) |
| | |
skipping to change at line 52 ¶ | | skipping to change at line 52 ¶ |
* | | * |
* You may wish to replace the word "Parts" with something else depending o
n | | * You may wish to replace the word "Parts" with something else depending o
n |
* the amount of original code. | | * the amount of original code. |
* | | * |
* (Derivative works does not include programs which link against, run or i
nclude | | * (Derivative works does not include programs which link against, run or i
nclude |
* the source verbatim in their source distributions) | | * the source verbatim in their source distributions) |
*/ | | */ |
| | |
/** @file event2/dns.h | | /** @file event2/dns.h |
* | | * |
| | * @brief Provides a few APIs to use for resolving DNS names, and a facilit |
| | y |
| | * for implementing simple DNS servers. |
| | * |
* Welcome, gentle reader | | * Welcome, gentle reader |
* | | * |
* Async DNS lookups are really a whole lot harder than they should be, | | * Async DNS lookups are really a whole lot harder than they should be, |
* mostly stemming from the fact that the libc resolver has never been | | * mostly stemming from the fact that the libc resolver has never been |
* very good at them. Before you use this library you should see if libc | | * very good at them. Before you use this library you should see if libc |
* can do the job for you with the modern async call getaddrinfo_a | | * can do the job for you with the modern async call getaddrinfo_a |
* (see http://www.imperialviolet.org/page25.html#e498). Otherwise, | | * (see http://www.imperialviolet.org/page25.html#e498). Otherwise, |
* please continue. | | * please continue. |
* | | * |
* The library keeps track of the state of nameservers and will avoid | | * The library keeps track of the state of nameservers and will avoid |
* them when they go down. Otherwise it will round robin between them. | | * them when they go down. Otherwise it will round robin between them. |
* | | * |
* Quick start guide: | | * Quick start guide: |
| | * @code |
* #include "evdns.h" | | * #include "evdns.h" |
* void callback(int result, char type, int count, int ttl, | | * void callback(int result, char type, int count, int ttl, |
* void *addresses, void *arg); | | * void *addresses, void *arg); |
* evdns_resolv_conf_parse(DNS_OPTIONS_ALL, "/etc/resolv.conf"); | | * evdns_resolv_conf_parse(DNS_OPTIONS_ALL, "/etc/resolv.conf"); |
* evdns_resolve("www.hostname.com", 0, callback, NULL); | | * evdns_resolve("www.hostname.com", 0, callback, NULL); |
* | | *@endcode |
* When the lookup is complete the callback function is called. The | | * When the lookup is complete the callback function is called. The |
* first argument will be one of the DNS_ERR_* defines in evdns.h. | | * first argument will be one of the DNS_ERR_* defines in evdns.h. |
* Hopefully it will be DNS_ERR_NONE, in which case type will be | | * Hopefully it will be DNS_ERR_NONE, in which case type will be |
* DNS_IPv4_A, count will be the number of IP addresses, ttl is the time | | * DNS_IPv4_A, count will be the number of IP addresses, ttl is the time |
* which the data can be cached for (in seconds), addresses will point | | * which the data can be cached for (in seconds), addresses will point |
* to an array of uint32_t's and arg will be whatever you passed to | | * to an array of uint32_t's and arg will be whatever you passed to |
* evdns_resolve. | | * evdns_resolve. |
* | | * |
* Searching: | | * Searching: |
* | | * |
| | |
skipping to change at line 109 ¶ | | skipping to change at line 113 ¶ |
* | | * |
* The order of searches depends on the number of dots in the name. If the | | * The order of searches depends on the number of dots in the name. If the |
* number is greater than the ndots setting then the names is first tried | | * number is greater than the ndots setting then the names is first tried |
* globally. Otherwise each search domain is appended in turn. | | * globally. Otherwise each search domain is appended in turn. |
* | | * |
* The ndots setting can either be set from a resolv.conf, or by calling | | * The ndots setting can either be set from a resolv.conf, or by calling |
* evdns_search_ndots_set. | | * evdns_search_ndots_set. |
* | | * |
* For example, with ndots set to 1 (the default) and a search domain list
of | | * For example, with ndots set to 1 (the default) and a search domain list
of |
* ["myhome.net"]: | | * ["myhome.net"]: |
| | * |
| | * <pre> |
* Query: www | | * Query: www |
* Order: www.myhome.net, www. | | * Order: www.myhome.net, www. |
* | | * |
* Query: www.abc | | * Query: www.abc |
* Order: www.abc., www.abc.myhome.net | | * Order: www.abc., www.abc.myhome.net |
* | | * </pre> |
* Internals: | | * Internals: |
* | | * |
* Requests are kept in two queues. The first is the inflight queue. In | | * Requests are kept in two queues. The first is the inflight queue. In |
* this queue requests have an allocated transaction id and nameserver. | | * this queue requests have an allocated transaction id and nameserver. |
* They will soon be transmitted if they haven't already been. | | * They will soon be transmitted if they haven't already been. |
* | | * |
* The second is the waiting queue. The size of the inflight ring is | | * The second is the waiting queue. The size of the inflight ring is |
* limited and all other requests wait in waiting queue for space. This | | * limited and all other requests wait in waiting queue for space. This |
* bounds the number of concurrent requests so that we don't flood the | | * bounds the number of concurrent requests so that we don't flood the |
* nameserver. Several algorithms require a full walk of the inflight | | * nameserver. Several algorithms require a full walk of the inflight |
| | |
skipping to change at line 179 ¶ | | skipping to change at line 185 ¶ |
/** The request was canceled via a call to evdns_cancel_request */ | | /** The request was canceled via a call to evdns_cancel_request */ |
#define DNS_ERR_CANCEL 69 | | #define DNS_ERR_CANCEL 69 |
/** There were no answers and no error condition in the DNS packet. | | /** There were no answers and no error condition in the DNS packet. |
* This can happen when you ask for an address that exists, but a record | | * This can happen when you ask for an address that exists, but a record |
* type that doesn't. */ | | * type that doesn't. */ |
#define DNS_ERR_NODATA 70 | | #define DNS_ERR_NODATA 70 |
| | |
#define DNS_IPv4_A 1 | | #define DNS_IPv4_A 1 |
#define DNS_PTR 2 | | #define DNS_PTR 2 |
#define DNS_IPv6_AAAA 3 | | #define DNS_IPv6_AAAA 3 |
| | #define DNS_CNAME 4 |
| | |
#define DNS_QUERY_NO_SEARCH 1 | | /** Disable searching for the query. */ |
| | #define DNS_QUERY_NO_SEARCH 0x01 |
| | /** Use TCP connections ("virtual circuits") for queries rather than UDP da |
| | tagrams. */ |
| | #define DNS_QUERY_USEVC 0x02 |
| | /** Ignore trancation flag in responses (don't fallback to TCP connections) |
| | . */ |
| | #define DNS_QUERY_IGNTC 0x04 |
| | /** Make a separate callback for CNAME in answer */ |
| | #define DNS_CNAME_CALLBACK 0x80 |
| | |
/* Allow searching */ | | /* Allow searching */ |
#define DNS_OPTION_SEARCH 1 | | #define DNS_OPTION_SEARCH 1 |
/* Parse "nameserver" and add default if no such section */ | | /* Parse "nameserver" and add default if no such section */ |
#define DNS_OPTION_NAMESERVERS 2 | | #define DNS_OPTION_NAMESERVERS 2 |
/* Parse additional options like: | | /* Parse additional options like: |
* - timeout: | | * - timeout: |
* - getaddrinfo-allow-skew: | | * - getaddrinfo-allow-skew: |
* - max-timeouts: | | * - max-timeouts: |
* - max-inflight: | | * - max-inflight: |
* - attempts: | | * - attempts: |
* - randomize-case: | | * - randomize-case: |
* - initial-probe-timeout: | | * - initial-probe-timeout: |
| | * - max-probe-timeout: |
| | * - probe-backoff-factor: |
| | * - tcp-idle-timeout: |
| | * - edns-udp-size: |
| | * - use-vc |
| | * - ignore-tc |
*/ | | */ |
#define DNS_OPTION_MISC 4 | | #define DNS_OPTION_MISC 4 |
/* Load hosts file (i.e. "/etc/hosts") */ | | /* Load hosts file (i.e. "/etc/hosts") */ |
#define DNS_OPTION_HOSTSFILE 8 | | #define DNS_OPTION_HOSTSFILE 8 |
/** | | /** |
* All above: | | * All above: |
* - DNS_OPTION_SEARCH | | * - DNS_OPTION_SEARCH |
* - DNS_OPTION_NAMESERVERS | | * - DNS_OPTION_NAMESERVERS |
* - DNS_OPTION_MISC | | * - DNS_OPTION_MISC |
* - DNS_OPTION_HOSTSFILE | | * - DNS_OPTION_HOSTSFILE |
| | |
skipping to change at line 244 ¶ | | skipping to change at line 264 ¶ |
/** Flag for evdns_base_new: process resolv.conf. */ | | /** Flag for evdns_base_new: process resolv.conf. */ |
#define EVDNS_BASE_INITIALIZE_NAMESERVERS 1 | | #define EVDNS_BASE_INITIALIZE_NAMESERVERS 1 |
/** Flag for evdns_base_new: Do not prevent the libevent event loop from | | /** Flag for evdns_base_new: Do not prevent the libevent event loop from |
* exiting when we have no active dns requests. */ | | * exiting when we have no active dns requests. */ |
#define EVDNS_BASE_DISABLE_WHEN_INACTIVE 0x8000 | | #define EVDNS_BASE_DISABLE_WHEN_INACTIVE 0x8000 |
/** Flag for evdns_base_new: If EVDNS_BASE_INITIALIZE_NAMESERVERS isset, do
not | | /** Flag for evdns_base_new: If EVDNS_BASE_INITIALIZE_NAMESERVERS isset, do
not |
* add default nameserver if there are no nameservers in resolv.conf | | * add default nameserver if there are no nameservers in resolv.conf |
* @see DNS_OPTION_NAMESERVERS_NO_DEFAULT */ | | * @see DNS_OPTION_NAMESERVERS_NO_DEFAULT */ |
#define EVDNS_BASE_NAMESERVERS_NO_DEFAULT 0x10000 | | #define EVDNS_BASE_NAMESERVERS_NO_DEFAULT 0x10000 |
| | |
| | /* No errors */ |
| | #define EVDNS_ERROR_NONE 0 |
| | /* Failed to open file */ |
| | #define EVDNS_ERROR_FAILED_TO_OPEN_FILE 1 |
| | /* Failed to stat file */ |
| | #define EVDNS_ERROR_FAILED_TO_STAT_FILE 2 |
| | /* File too large */ |
| | #define EVDNS_ERROR_FILE_TOO_LARGE 3 |
| | /* Out of memory */ |
| | #define EVDNS_ERROR_OUT_OF_MEMORY 4 |
| | /* Short read from file */ |
| | #define EVDNS_ERROR_SHORT_READ_FROM_FILE 5 |
| | /* No nameservers configured */ |
| | #define EVDNS_ERROR_NO_NAMESERVERS_CONFIGURED 6 |
| | |
/** | | /** |
Initialize the asynchronous DNS library. | | Initialize the asynchronous DNS library. |
| | |
This function initializes support for non-blocking name resolution by | | This function initializes support for non-blocking name resolution by |
calling evdns_resolv_conf_parse() on UNIX and | | calling evdns_resolv_conf_parse() on UNIX and |
evdns_config_windows_nameservers() on Windows. | | evdns_config_windows_nameservers() on Windows. |
| | |
@param event_base the event base to associate the dns client with | | @param event_base the event base to associate the dns client with |
@param flags any of EVDNS_BASE_INITIALIZE_NAMESERVERS| | | @param flags any of EVDNS_BASE_INITIALIZE_NAMESERVERS| |
EVDNS_BASE_DISABLE_WHEN_INACTIVE|EVDNS_BASE_NAMESERVERS_NO_DEFAULT | | EVDNS_BASE_DISABLE_WHEN_INACTIVE|EVDNS_BASE_NAMESERVERS_NO_DEFAULT |
@return evdns_base object if successful, or NULL if an error occurred. | | @return evdns_base object if successful, or NULL if an error occurred. |
@see evdns_base_free() | | @see evdns_base_free() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct evdns_base * evdns_base_new(struct event_base *event_base, int initi
alize_nameservers); | | struct evdns_base * evdns_base_new(struct event_base *event_base, int flags
); |
| | |
/** | | /** |
Shut down the asynchronous DNS resolver and terminate all active requests
. | | Shut down the asynchronous DNS resolver and terminate all active requests
. |
| | |
If the 'fail_requests' option is enabled, all active requests will return | | If the 'fail_requests' option is enabled, all active requests will return |
an empty result with the error flag set to DNS_ERR_SHUTDOWN. Otherwise, | | an empty result with the error flag set to DNS_ERR_SHUTDOWN. Otherwise, |
the requests will be silently discarded. | | the requests will be silently discarded. |
| | |
@param evdns_base the evdns base to free | | @param base the evdns base to free |
@param fail_requests if zero, active requests will be aborted; if non-zer
o, | | @param fail_requests if zero, active requests will be aborted; if non-zer
o, |
active requests will return DNS_ERR_SHUTDOWN. | | active requests will return DNS_ERR_SHUTDOWN. |
@see evdns_base_new() | | @see evdns_base_new() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evdns_base_free(struct evdns_base *base, int fail_requests); | | void evdns_base_free(struct evdns_base *base, int fail_requests); |
| | |
/** | | /** |
Remove all hosts entries that have been loaded into the event_base via | | Remove all hosts entries that have been loaded into the event_base via |
evdns_base_load_hosts or via event_base_resolv_conf_parse. | | evdns_base_load_hosts or via event_base_resolv_conf_parse. |
| | |
@param evdns_base the evdns base to remove outdated host addresses from | | @param base the evdns base to remove outdated host addresses from |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evdns_base_clear_host_addresses(struct evdns_base *base); | | void evdns_base_clear_host_addresses(struct evdns_base *base); |
| | |
/** | | /** |
Convert a DNS error code to a string. | | Convert a DNS error code to a string. |
| | |
@param err the DNS error code | | @param err the DNS error code |
@return a string containing an explanation of the error code | | @return a string containing an explanation of the error code |
*/ | | */ |
| | |
skipping to change at line 384 ¶ | | skipping to change at line 419 ¶ |
evdns_base_nameserver_sockaddr_add(struct evdns_base *base, | | evdns_base_nameserver_sockaddr_add(struct evdns_base *base, |
const struct sockaddr *sa, ev_socklen_t len, unsigned flags); | | const struct sockaddr *sa, ev_socklen_t len, unsigned flags); |
| | |
struct evdns_request; | | struct evdns_request; |
| | |
/** | | /** |
Lookup an A record for a given name. | | Lookup an A record for a given name. |
| | |
@param base the evdns_base to which to apply this operation | | @param base the evdns_base to which to apply this operation |
@param name a DNS hostname | | @param name a DNS hostname |
@param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for th
is query. | | @param flags either 0, or combination of DNS_QUERY_* flags. |
@param callback a callback function to invoke when the request is complet
ed | | @param callback a callback function to invoke when the request is complet
ed |
@param ptr an argument to pass to the callback function | | @param ptr an argument to pass to the callback function |
@return an evdns_request object if successful, or NULL if an error occurr
ed. | | @return an evdns_request object if successful, or NULL if an error occurr
ed. |
@see evdns_resolve_ipv6(), evdns_resolve_reverse(), evdns_resolve_reverse
_ipv6(), evdns_cancel_request() | | @see evdns_resolve_ipv6(), evdns_resolve_reverse(), evdns_resolve_reverse
_ipv6(), evdns_cancel_request() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct evdns_request *evdns_base_resolve_ipv4(struct evdns_base *base, cons
t char *name, int flags, evdns_callback_type callback, void *ptr); | | struct evdns_request *evdns_base_resolve_ipv4(struct evdns_base *base, cons
t char *name, int flags, evdns_callback_type callback, void *ptr); |
| | |
/** | | /** |
Lookup an AAAA record for a given name. | | Lookup an AAAA record for a given name. |
| | |
@param base the evdns_base to which to apply this operation | | @param base the evdns_base to which to apply this operation |
@param name a DNS hostname | | @param name a DNS hostname |
@param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for th
is query. | | @param flags either 0, or combination of DNS_QUERY_* flags. |
@param callback a callback function to invoke when the request is complet
ed | | @param callback a callback function to invoke when the request is complet
ed |
@param ptr an argument to pass to the callback function | | @param ptr an argument to pass to the callback function |
@return an evdns_request object if successful, or NULL if an error occurr
ed. | | @return an evdns_request object if successful, or NULL if an error occurr
ed. |
@see evdns_resolve_ipv4(), evdns_resolve_reverse(), evdns_resolve_reverse
_ipv6(), evdns_cancel_request() | | @see evdns_resolve_ipv4(), evdns_resolve_reverse(), evdns_resolve_reverse
_ipv6(), evdns_cancel_request() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct evdns_request *evdns_base_resolve_ipv6(struct evdns_base *base, cons
t char *name, int flags, evdns_callback_type callback, void *ptr); | | struct evdns_request *evdns_base_resolve_ipv6(struct evdns_base *base, cons
t char *name, int flags, evdns_callback_type callback, void *ptr); |
| | |
struct in_addr; | | struct in_addr; |
struct in6_addr; | | struct in6_addr; |
| | |
/** | | /** |
Lookup a PTR record for a given IP address. | | Lookup a PTR record for a given IP address. |
| | |
@param base the evdns_base to which to apply this operation | | @param base the evdns_base to which to apply this operation |
@param in an IPv4 address | | @param in an IPv4 address |
@param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for th
is query. | | @param flags either 0, or combination of DNS_QUERY_* flags. |
@param callback a callback function to invoke when the request is complet
ed | | @param callback a callback function to invoke when the request is complet
ed |
@param ptr an argument to pass to the callback function | | @param ptr an argument to pass to the callback function |
@return an evdns_request object if successful, or NULL if an error occurr
ed. | | @return an evdns_request object if successful, or NULL if an error occurr
ed. |
@see evdns_resolve_reverse_ipv6(), evdns_cancel_request() | | @see evdns_resolve_reverse_ipv6(), evdns_cancel_request() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct evdns_request *evdns_base_resolve_reverse(struct evdns_base *base, c
onst struct in_addr *in, int flags, evdns_callback_type callback, void *ptr
); | | struct evdns_request *evdns_base_resolve_reverse(struct evdns_base *base, c
onst struct in_addr *in, int flags, evdns_callback_type callback, void *ptr
); |
| | |
/** | | /** |
Lookup a PTR record for a given IPv6 address. | | Lookup a PTR record for a given IPv6 address. |
| | |
@param base the evdns_base to which to apply this operation | | @param base the evdns_base to which to apply this operation |
@param in an IPv6 address | | @param in an IPv6 address |
@param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for th
is query. | | @param flags either 0, or combination of DNS_QUERY_* flags. |
@param callback a callback function to invoke when the request is complet
ed | | @param callback a callback function to invoke when the request is complet
ed |
@param ptr an argument to pass to the callback function | | @param ptr an argument to pass to the callback function |
@return an evdns_request object if successful, or NULL if an error occurr
ed. | | @return an evdns_request object if successful, or NULL if an error occurr
ed. |
@see evdns_resolve_reverse_ipv6(), evdns_cancel_request() | | @see evdns_resolve_reverse_ipv6(), evdns_cancel_request() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct evdns_request *evdns_base_resolve_reverse_ipv6(struct evdns_base *ba
se, const struct in6_addr *in, int flags, evdns_callback_type callback, voi
d *ptr); | | struct evdns_request *evdns_base_resolve_reverse_ipv6(struct evdns_base *ba
se, const struct in6_addr *in, int flags, evdns_callback_type callback, voi
d *ptr); |
| | |
/** | | /** |
Cancels a pending DNS resolution request. | | Cancels a pending DNS resolution request. |
| | |
skipping to change at line 454 ¶ | | skipping to change at line 489 ¶ |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evdns_cancel_request(struct evdns_base *base, struct evdns_request *re
q); | | void evdns_cancel_request(struct evdns_base *base, struct evdns_request *re
q); |
| | |
/** | | /** |
Set the value of a configuration option. | | Set the value of a configuration option. |
| | |
The currently available configuration options are: | | The currently available configuration options are: |
| | |
ndots, timeout, max-timeouts, max-inflight, attempts, randomize-case, | | ndots, timeout, max-timeouts, max-inflight, attempts, randomize-case, |
bind-to, initial-probe-timeout, getaddrinfo-allow-skew, | | bind-to, initial-probe-timeout, max-probe-timeout, probe-backoff-factor |
so-rcvbuf, so-sndbuf. | | , |
| | getaddrinfo-allow-skew, so-rcvbuf, so-sndbuf, tcp-idle-timeout, use-vc, |
| | ignore-tc, edns-udp-size. |
| | |
| | - probe-backoff-factor |
| | Backoff factor of probe timeout |
| | |
| | - max-probe-timeout |
| | Maximum timeout between two probe packets will change initial-probe-tim |
| | eout |
| | when this value is smaller |
| | |
In versions before Libevent 2.0.3-alpha, the option name needed to end wi
th | | In versions before Libevent 2.0.3-alpha, the option name needed to end wi
th |
a colon. | | a colon. |
| | |
| | In case of options without values (use-vc, ingore-tc) val should be an em |
| | pty |
| | string or NULL. |
| | |
@param base the evdns_base to which to apply this operation | | @param base the evdns_base to which to apply this operation |
@param option the name of the configuration option to be modified | | @param option the name of the configuration option to be modified |
@param val the value to be set | | @param val the value to be set |
@return 0 if successful, or -1 if an error occurred | | @return 0 if successful, or -1 if an error occurred |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evdns_base_set_option(struct evdns_base *base, const char *option, cons
t char *val); | | int evdns_base_set_option(struct evdns_base *base, const char *option, cons
t char *val); |
| | |
/** | | /** |
Parse a resolv.conf file. | | Parse a resolv.conf file. |
| | |
The 'flags' parameter determines what information is parsed from the | | The 'flags' parameter determines what information is parsed from the |
resolv.conf file. See the man page for resolv.conf for the format of this | | resolv.conf file. See the man page for resolv.conf for the format of this |
file. | | file. |
| | |
The following directives are not parsed from the file: sortlist, rotate, | | The following directives are not parsed from the file: sortlist, rotate, |
no-check-names, inet6, debug. | | no-check-names, inet6, debug. |
| | |
If this function encounters an error, the possible return values are: 1 = | | If this function encounters an error, the possible return values are: |
failed to open file, 2 = failed to stat file, 3 = file too large, 4 = out | | EVDNS_ERROR_FAILED_TO_OPEN_FILE (1) - failed to open file |
of | | EVDNS_ERROR_FAILED_TO_STAT_FILE (2) - failed to stat file |
memory, 5 = short read from file, 6 = no nameservers listed in the file | | EVDNS_ERROR_FILE_TOO_LARGE (3) - file too large |
| | EVDNS_ERROR_OUT_OF_MEMORY (4) - out of memory |
| | EVDNS_ERROR_SHORT_READ_FROM_FILE (5) - short read from file |
| | EVDNS_ERROR_NO_NAMESERVERS_CONFIGURED (6) - no nameservers configured. |
| | |
@param base the evdns_base to which to apply this operation | | @param base the evdns_base to which to apply this operation |
@param flags any of DNS_OPTION_NAMESERVERS|DNS_OPTION_SEARCH|DNS_OPTION_M
ISC| | | @param flags any of DNS_OPTION_NAMESERVERS|DNS_OPTION_SEARCH|DNS_OPTION_M
ISC| |
DNS_OPTION_HOSTSFILE|DNS_OPTIONS_ALL|DNS_OPTION_NAMESERVERS_NO_DEFAULT | | DNS_OPTION_HOSTSFILE|DNS_OPTIONS_ALL|DNS_OPTION_NAMESERVERS_NO_DEFAULT |
@param filename the path to the resolv.conf file | | @param filename the path to the resolv.conf file |
@return 0 if successful, or various positive error codes if an error | | @return 0 if successful, or various positive error codes if an error |
occurred (see above) | | occurred (see above) |
@see resolv.conf(3), evdns_config_windows_nameservers() | | @see resolv.conf(3), evdns_config_windows_nameservers() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
| | |
skipping to change at line 568 ¶ | | skipping to change at line 618 ¶ |
/** | | /** |
Set the callback function to handle DNS log messages. If this | | Set the callback function to handle DNS log messages. If this |
callback is not set, evdns log messages are handled with the regular | | callback is not set, evdns log messages are handled with the regular |
Libevent logging system. | | Libevent logging system. |
| | |
@param fn the callback to be invoked when a log message is generated | | @param fn the callback to be invoked when a log message is generated |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evdns_set_log_fn(evdns_debug_log_fn_type fn); | | void evdns_set_log_fn(evdns_debug_log_fn_type fn); |
| | |
/** | | |
Set a callback that will be invoked to generate transaction IDs. By | | |
default, we pick transaction IDs based on the current clock time, which | | |
is bad for security. | | |
| | |
@param fn the new callback, or NULL to use the default. | | |
| | |
NOTE: This function has no effect in Libevent 2.0.4-alpha and later, | | |
since Libevent now provides its own secure RNG. | | |
*/ | | |
EVENT2_EXPORT_SYMBOL | | |
void evdns_set_transaction_id_fn(ev_uint16_t (*fn)(void)); | | |
| | |
/** | | |
Set a callback used to generate random bytes. By default, we use | | |
the same function as passed to evdns_set_transaction_id_fn to generate | | |
bytes two at a time. If a function is provided here, it's also used | | |
to generate transaction IDs. | | |
| | |
NOTE: This function has no effect in Libevent 2.0.4-alpha and later, | | |
since Libevent now provides its own secure RNG. | | |
*/ | | |
EVENT2_EXPORT_SYMBOL | | |
void evdns_set_random_bytes_fn(void (*fn)(char *, size_t)); | | |
| | |
/* | | /* |
* Functions used to implement a DNS server. | | * Functions used to implement a DNS server. |
*/ | | */ |
| | |
struct evdns_server_request; | | struct evdns_server_request; |
struct evdns_server_question; | | struct evdns_server_question; |
| | |
/** | | /** |
A callback to implement a DNS server. The callback function receives a
DNS | | A callback to implement a DNS server. The callback function receives a
DNS |
request. It should then optionally add a number of answers to the reply | | request. It should then optionally add a number of answers to the reply |
| | |
skipping to change at line 634 ¶ | | skipping to change at line 659 ¶ |
| | |
#define EVDNS_QTYPE_AXFR 252 | | #define EVDNS_QTYPE_AXFR 252 |
#define EVDNS_QTYPE_ALL 255 | | #define EVDNS_QTYPE_ALL 255 |
| | |
#define EVDNS_CLASS_INET 1 | | #define EVDNS_CLASS_INET 1 |
| | |
/* flags that can be set in answers; as part of the err parameter */ | | /* flags that can be set in answers; as part of the err parameter */ |
#define EVDNS_FLAGS_AA 0x400 | | #define EVDNS_FLAGS_AA 0x400 |
#define EVDNS_FLAGS_RD 0x080 | | #define EVDNS_FLAGS_RD 0x080 |
| | |
/** Create a new DNS server port. | | /** Create a new UDP DNS server port. |
| | |
@param base The event base to handle events for the server port. | | @param base The event base to handle events for the server port. |
@param socket A UDP socket to accept DNS requests. | | @param socket A UDP socket to accept DNS requests. |
@param flags Always 0 for now. | | @param flags Always 0 for now. |
@param callback A function to invoke whenever we get a DNS request | | @param callback A function to invoke whenever we get a DNS request |
on the socket. | | on the socket. |
@param user_data Data to pass to the callback. | | @param user_data Data to pass to the callback. |
@return an evdns_server_port structure for this server port or NULL if | | @return an evdns_server_port structure for this server port or NULL if |
an error occurred. | | an error occurred. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct evdns_server_port *evdns_add_server_port_with_base(struct event_base
*base, evutil_socket_t socket, int flags, evdns_request_callback_fn_type c
allback, void *user_data); | | struct evdns_server_port *evdns_add_server_port_with_base(struct event_base
*base, evutil_socket_t socket, int flags, evdns_request_callback_fn_type c
allback, void *user_data); |
| | |
| | struct evconnlistener; |
| | |
| | /** Create a new TCP DNS server port. |
| | |
| | @param base The event base to handle events for the server port. |
| | @param listener A TCP listener to accept DNS requests. |
| | @param flags Always 0 for now. |
| | @param callback A function to invoke whenever we get a DNS request |
| | on the socket. |
| | @param user_data Data to pass to the callback. |
| | @return an evdns_server_port structure for this server port or NULL if |
| | an error occurred. |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | struct evdns_server_port *evdns_add_server_port_with_listener( |
| | struct event_base *base, struct evconnlistener *listener, int flags, |
| | evdns_request_callback_fn_type callback, void *user_data); |
| | |
/** Close down a DNS server port, and free associated structures. */ | | /** Close down a DNS server port, and free associated structures. */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evdns_close_server_port(struct evdns_server_port *port); | | void evdns_close_server_port(struct evdns_server_port *port); |
| | |
| | /** |
| | * List of configurable evdns_server_port options. |
| | * |
| | * @see evdns_server_port_set_option() |
| | */ |
| | enum evdns_server_option { |
| | /** |
| | * Maximum number of simultaneous tcp connections (clients) |
| | * that server can hold. Can be set only for TCP DNS servers. |
| | */ |
| | EVDNS_SOPT_TCP_MAX_CLIENTS, |
| | /** |
| | * Idle timeout (in seconds) of incoming TCP connections. |
| | * If client doesn't send any requests via the connection |
| | * during this period connection is closed by the server. |
| | * Can be set only for TCP DNS servers. |
| | */ |
| | EVDNS_SOPT_TCP_IDLE_TIMEOUT, |
| | }; |
| | |
| | /** |
| | Configure DNS server. |
| | |
| | @param port the evdns_server_port to which to apply this operation |
| | @param option @see evdns_server_option for the list of possible options |
| | @param val value of the option |
| | @return 0 if successful, or -1 if an error occurred |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | int evdns_server_port_set_option(struct evdns_server_port *port, enum evdns |
| | _server_option option, size_t value); |
| | |
/** Sets some flags in a reply we're building. | | /** Sets some flags in a reply we're building. |
Allows setting of the AA or RD flags | | Allows setting of the AA or RD flags |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evdns_server_request_set_flags(struct evdns_server_request *req, int f
lags); | | void evdns_server_request_set_flags(struct evdns_server_request *req, int f
lags); |
| | |
/* Functions to add an answer to an in-progress DNS reply. | | /* Functions to add an answer to an in-progress DNS reply. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evdns_server_request_add_reply(struct evdns_server_request *req, int se
ction, const char *name, int type, int dns_class, int ttl, int datalen, int
is_name, const char *data); | | int evdns_server_request_add_reply(struct evdns_server_request *req, int se
ction, const char *name, int type, int dns_class, int ttl, int datalen, int
is_name, const char *data); |
| | |
skipping to change at line 738 ¶ | | skipping to change at line 813 ¶ |
@param len The number of bytes available at sa. | | @param len The number of bytes available at sa. |
| | |
@return the number of bytes written into sa on success. On failure, ret
urns | | @return the number of bytes written into sa on success. On failure, ret
urns |
-1 if idx is greater than the number of configured nameservers, or a | | -1 if idx is greater than the number of configured nameservers, or a |
value greater than 'len' if len was not high enough. | | value greater than 'len' if len was not high enough. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evdns_base_get_nameserver_addr(struct evdns_base *base, int idx, | | int evdns_base_get_nameserver_addr(struct evdns_base *base, int idx, |
struct sockaddr *sa, ev_socklen_t len); | | struct sockaddr *sa, ev_socklen_t len); |
| | |
| | /** |
| | Retrieve the fd of the 'idx'th configured nameserver. |
| | |
| | @param base The evdns_base to examine. |
| | @param idx The index of the nameserver to get the address of. |
| | |
| | @return the fd value. On failure, returns |
| | -1 if idx is greater than the number of configured nameservers |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | int evdns_base_get_nameserver_fd(struct evdns_base *base, int idx); |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
} | | } |
#endif | | #endif |
| | |
#endif /* !EVENT2_DNS_H_INCLUDED_ */ | | #endif /* !EVENT2_DNS_H_INCLUDED_ */ |
| | |
End of changes. 24 change blocks. |
42 lines changed or deleted | | 135 lines changed or added |
|
dns_compat.h (2.1.12) | | dns_compat.h (current) |
| | |
skipping to change at line 32 ¶ | | skipping to change at line 32 ¶ |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ | | */ |
#ifndef EVENT2_DNS_COMPAT_H_INCLUDED_ | | #ifndef EVENT2_DNS_COMPAT_H_INCLUDED_ |
#define EVENT2_DNS_COMPAT_H_INCLUDED_ | | #define EVENT2_DNS_COMPAT_H_INCLUDED_ |
| | |
/** @file event2/dns_compat.h | | /** @file event2/dns_compat.h |
| | |
Potentially non-threadsafe versions of the functions in dns.h: provided | | @brief Potentially non-threadsafe versions of the functions in dns.h: pro
vided |
only for backwards compatibility. | | only for backwards compatibility. |
| | |
*/ | | */ |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
extern "C" { | | extern "C" { |
#endif | | #endif |
| | |
#include <event2/event-config.h> | | #include <event2/event-config.h> |
#ifdef EVENT__HAVE_SYS_TYPES_H | | #ifdef EVENT__HAVE_SYS_TYPES_H |
| | |
End of changes. 1 change blocks. |
1 lines changed or deleted | | 1 lines changed or added |
|
event-config.h (2.1.12) | | event-config.h (current) |
| | |
skipping to change at line 17 ¶ | | skipping to change at line 17 ¶ |
* | | * |
* Do not rely on macros in this file existing in later versions. | | * Do not rely on macros in this file existing in later versions. |
*/ | | */ |
| | |
#ifndef EVENT2_EVENT_CONFIG_H_INCLUDED_ | | #ifndef EVENT2_EVENT_CONFIG_H_INCLUDED_ |
#define EVENT2_EVENT_CONFIG_H_INCLUDED_ | | #define EVENT2_EVENT_CONFIG_H_INCLUDED_ |
| | |
/* config.h. Generated from config.h.in by configure. */ | | /* config.h. Generated from config.h.in by configure. */ |
/* config.h.in. Generated from configure.ac by autoheader. */ | | /* config.h.in. Generated from configure.ac by autoheader. */ |
| | |
| | /* Define if building universal (internal helper macro) */ |
| | /* #undef EVENT__AC_APPLE_UNIVERSAL_BUILD */ |
| | |
/* Define if libevent should build without support for a debug mode */ | | /* Define if libevent should build without support for a debug mode */ |
/* #undef EVENT__DISABLE_DEBUG_MODE */ | | /* #undef EVENT__DISABLE_DEBUG_MODE */ |
| | |
/* Define if libevent should not allow replacing the mm functions */ | | /* Define if libevent should not allow replacing the mm functions */ |
/* #undef EVENT__DISABLE_MM_REPLACEMENT */ | | /* #undef EVENT__DISABLE_MM_REPLACEMENT */ |
| | |
/* Define if libevent should not be compiled with thread support */ | | /* Define if libevent should not be compiled with thread support */ |
/* #undef EVENT__DISABLE_THREAD_SUPPORT */ | | /* #undef EVENT__DISABLE_THREAD_SUPPORT */ |
| | |
/* Define to 1 if you have the `accept4' function. */ | | /* Define to 1 if you have the `accept4' function. */ |
| | |
skipping to change at line 70 ¶ | | skipping to change at line 73 ¶ |
| | |
/* Define if your system supports the epoll system calls */ | | /* Define if your system supports the epoll system calls */ |
#define EVENT__HAVE_EPOLL 1 | | #define EVENT__HAVE_EPOLL 1 |
| | |
/* Define to 1 if you have the `epoll_create1' function. */ | | /* Define to 1 if you have the `epoll_create1' function. */ |
#define EVENT__HAVE_EPOLL_CREATE1 1 | | #define EVENT__HAVE_EPOLL_CREATE1 1 |
| | |
/* Define to 1 if you have the `epoll_ctl' function. */ | | /* Define to 1 if you have the `epoll_ctl' function. */ |
#define EVENT__HAVE_EPOLL_CTL 1 | | #define EVENT__HAVE_EPOLL_CTL 1 |
| | |
| | /* Define to 1 if you have the `epoll_pwait2' function. */ |
| | /* #undef EVENT__HAVE_EPOLL_PWAIT2 */ |
| | |
/* Define to 1 if you have the <errno.h> header file. */ | | /* Define to 1 if you have the <errno.h> header file. */ |
#define EVENT__HAVE_ERRNO_H 1 | | #define EVENT__HAVE_ERRNO_H 1 |
| | |
/* Define to 1 if you have the `eventfd' function. */ | | /* Define to 1 if you have the `eventfd' function. */ |
#define EVENT__HAVE_EVENTFD 1 | | #define EVENT__HAVE_EVENTFD 1 |
| | |
/* Define if your system supports event ports */ | | /* Define if your system supports event ports */ |
/* #undef EVENT__HAVE_EVENT_PORTS */ | | /* #undef EVENT__HAVE_EVENT_PORTS */ |
| | |
/* Define to 1 if you have the `fcntl' function. */ | | /* Define to 1 if you have the `fcntl' function. */ |
| | |
skipping to change at line 160 ¶ | | skipping to change at line 166 ¶ |
| | |
/* Define to 1 if you have the `mach_absolute_time' function. */ | | /* Define to 1 if you have the `mach_absolute_time' function. */ |
/* #undef EVENT__HAVE_MACH_ABSOLUTE_TIME */ | | /* #undef EVENT__HAVE_MACH_ABSOLUTE_TIME */ |
| | |
/* Define to 1 if you have the <mach/mach.h> header file. */ | | /* Define to 1 if you have the <mach/mach.h> header file. */ |
/* #undef EVENT__HAVE_MACH_MACH_H */ | | /* #undef EVENT__HAVE_MACH_MACH_H */ |
| | |
/* Define to 1 if you have the <mach/mach_time.h> header file. */ | | /* Define to 1 if you have the <mach/mach_time.h> header file. */ |
/* #undef EVENT__HAVE_MACH_MACH_TIME_H */ | | /* #undef EVENT__HAVE_MACH_MACH_TIME_H */ |
| | |
| | /* Define if the system has mbedtls */ |
| | /* #undef EVENT__HAVE_MBEDTLS */ |
| | |
| | /* Define to 1 if you have the <mbedtls/ssl.h> header file. */ |
| | /* #undef EVENT__HAVE_MBEDTLS_SSL_H */ |
| | |
/* Define to 1 if you have the <memory.h> header file. */ | | /* Define to 1 if you have the <memory.h> header file. */ |
#define EVENT__HAVE_MEMORY_H 1 | | #define EVENT__HAVE_MEMORY_H 1 |
| | |
/* Define to 1 if you have the `mmap' function. */ | | /* Define to 1 if you have the `mmap' function. */ |
#define EVENT__HAVE_MMAP 1 | | #define EVENT__HAVE_MMAP 1 |
| | |
| | /* Define to 1 if you have the `mmap64' function. */ |
| | #define EVENT__HAVE_MMAP64 1 |
| | |
/* Define to 1 if you have the `nanosleep' function. */ | | /* Define to 1 if you have the `nanosleep' function. */ |
#define EVENT__HAVE_NANOSLEEP 1 | | #define EVENT__HAVE_NANOSLEEP 1 |
| | |
/* Define to 1 if you have the <netdb.h> header file. */ | | /* Define to 1 if you have the <netdb.h> header file. */ |
#define EVENT__HAVE_NETDB_H 1 | | #define EVENT__HAVE_NETDB_H 1 |
| | |
/* Define to 1 if you have the <netinet/in6.h> header file. */ | | /* Define to 1 if you have the <netinet/in6.h> header file. */ |
/* #undef EVENT__HAVE_NETINET_IN6_H */ | | /* #undef EVENT__HAVE_NETINET_IN6_H */ |
| | |
/* Define to 1 if you have the <netinet/in.h> header file. */ | | /* Define to 1 if you have the <netinet/in.h> header file. */ |
| | |
skipping to change at line 205 ¶ | | skipping to change at line 220 ¶ |
| | |
/* Define to 1 if you have the <poll.h> header file. */ | | /* Define to 1 if you have the <poll.h> header file. */ |
#define EVENT__HAVE_POLL_H 1 | | #define EVENT__HAVE_POLL_H 1 |
| | |
/* Define to 1 if you have the `port_create' function. */ | | /* Define to 1 if you have the `port_create' function. */ |
/* #undef EVENT__HAVE_PORT_CREATE */ | | /* #undef EVENT__HAVE_PORT_CREATE */ |
| | |
/* Define to 1 if you have the <port.h> header file. */ | | /* Define to 1 if you have the <port.h> header file. */ |
/* #undef EVENT__HAVE_PORT_H */ | | /* #undef EVENT__HAVE_PORT_H */ |
| | |
/* Define if you have POSIX threads libraries and header files. */ | | /* Define to 1 if you have the `pread' function. */ |
/* #undef EVENT__HAVE_PTHREAD */ | | #define EVENT__HAVE_PREAD 1 |
| | |
/* Define if we have pthreads on this system */ | | /* Define if we have pthreads on this system */ |
#define EVENT__HAVE_PTHREADS 1 | | #define EVENT__HAVE_PTHREADS 1 |
| | |
| | /* Define to 1 if you have the `pthread_mutexattr_setprotocol' function. */ |
| | #define EVENT__HAVE_PTHREAD_MUTEXATTR_SETPROTOCOL 1 |
| | |
| | /* Have PTHREAD_PRIO_INHERIT. */ |
| | #define EVENT__HAVE_PTHREAD_PRIO_INHERIT 1 |
| | |
/* Define to 1 if you have the `putenv' function. */ | | /* Define to 1 if you have the `putenv' function. */ |
#define EVENT__HAVE_PUTENV 1 | | #define EVENT__HAVE_PUTENV 1 |
| | |
/* Define to 1 if the system has the type `sa_family_t'. */ | | /* Define to 1 if the system has the type `sa_family_t'. */ |
#define EVENT__HAVE_SA_FAMILY_T 1 | | #define EVENT__HAVE_SA_FAMILY_T 1 |
| | |
/* Define to 1 if you have the `select' function. */ | | /* Define to 1 if you have the `select' function. */ |
#define EVENT__HAVE_SELECT 1 | | #define EVENT__HAVE_SELECT 1 |
| | |
/* Define to 1 if you have the `sendfile' function. */ | | /* Define to 1 if you have the `sendfile' function. */ |
| | |
skipping to change at line 238 ¶ | | skipping to change at line 259 ¶ |
| | |
/* Define to 1 if you have the `setrlimit' function. */ | | /* Define to 1 if you have the `setrlimit' function. */ |
#define EVENT__HAVE_SETRLIMIT 1 | | #define EVENT__HAVE_SETRLIMIT 1 |
| | |
/* Define to 1 if you have the `sigaction' function. */ | | /* Define to 1 if you have the `sigaction' function. */ |
#define EVENT__HAVE_SIGACTION 1 | | #define EVENT__HAVE_SIGACTION 1 |
| | |
/* Define to 1 if you have the `signal' function. */ | | /* Define to 1 if you have the `signal' function. */ |
#define EVENT__HAVE_SIGNAL 1 | | #define EVENT__HAVE_SIGNAL 1 |
| | |
/* Define to 1 if you have the `splice' function. */ | | |
#define EVENT__HAVE_SPLICE 1 | | |
| | |
/* Define to 1 if you have the <stdarg.h> header file. */ | | /* Define to 1 if you have the <stdarg.h> header file. */ |
#define EVENT__HAVE_STDARG_H 1 | | #define EVENT__HAVE_STDARG_H 1 |
| | |
/* Define to 1 if you have the <stddef.h> header file. */ | | /* Define to 1 if you have the <stddef.h> header file. */ |
#define EVENT__HAVE_STDDEF_H 1 | | #define EVENT__HAVE_STDDEF_H 1 |
| | |
/* Define to 1 if you have the <stdint.h> header file. */ | | /* Define to 1 if you have the <stdint.h> header file. */ |
#define EVENT__HAVE_STDINT_H 1 | | #define EVENT__HAVE_STDINT_H 1 |
| | |
/* Define to 1 if you have the <stdlib.h> header file. */ | | /* Define to 1 if you have the <stdlib.h> header file. */ |
| | |
skipping to change at line 265 ¶ | | skipping to change at line 283 ¶ |
| | |
/* Define to 1 if you have the <string.h> header file. */ | | /* Define to 1 if you have the <string.h> header file. */ |
#define EVENT__HAVE_STRING_H 1 | | #define EVENT__HAVE_STRING_H 1 |
| | |
/* Define to 1 if you have the `strlcpy' function. */ | | /* Define to 1 if you have the `strlcpy' function. */ |
/* #undef EVENT__HAVE_STRLCPY */ | | /* #undef EVENT__HAVE_STRLCPY */ |
| | |
/* Define to 1 if you have the `strsep' function. */ | | /* Define to 1 if you have the `strsep' function. */ |
#define EVENT__HAVE_STRSEP 1 | | #define EVENT__HAVE_STRSEP 1 |
| | |
| | /* Define to 1 if you have the `strsignal' function. */ |
| | #define EVENT__HAVE_STRSIGNAL 1 |
| | |
/* Define to 1 if you have the `strtok_r' function. */ | | /* Define to 1 if you have the `strtok_r' function. */ |
#define EVENT__HAVE_STRTOK_R 1 | | #define EVENT__HAVE_STRTOK_R 1 |
| | |
/* Define to 1 if you have the `strtoll' function. */ | | /* Define to 1 if you have the `strtoll' function. */ |
#define EVENT__HAVE_STRTOLL 1 | | #define EVENT__HAVE_STRTOLL 1 |
| | |
/* Define to 1 if the system has the type `struct addrinfo'. */ | | /* Define to 1 if the system has the type `struct addrinfo'. */ |
#define EVENT__HAVE_STRUCT_ADDRINFO 1 | | #define EVENT__HAVE_STRUCT_ADDRINFO 1 |
| | |
/* Define to 1 if the system has the type `struct in6_addr'. */ | | /* Define to 1 if the system has the type `struct in6_addr'. */ |
| | |
skipping to change at line 346 ¶ | | skipping to change at line 367 ¶ |
| | |
/* Define to 1 if you have the <sys/resource.h> header file. */ | | /* Define to 1 if you have the <sys/resource.h> header file. */ |
#define EVENT__HAVE_SYS_RESOURCE_H 1 | | #define EVENT__HAVE_SYS_RESOURCE_H 1 |
| | |
/* Define to 1 if you have the <sys/select.h> header file. */ | | /* Define to 1 if you have the <sys/select.h> header file. */ |
#define EVENT__HAVE_SYS_SELECT_H 1 | | #define EVENT__HAVE_SYS_SELECT_H 1 |
| | |
/* Define to 1 if you have the <sys/sendfile.h> header file. */ | | /* Define to 1 if you have the <sys/sendfile.h> header file. */ |
#define EVENT__HAVE_SYS_SENDFILE_H 1 | | #define EVENT__HAVE_SYS_SENDFILE_H 1 |
| | |
| | /* Define to 1 if you have the <sys/signalfd.h> header file. */ |
| | #define EVENT__HAVE_SYS_SIGNALFD_H 1 |
| | |
/* Define to 1 if you have the <sys/socket.h> header file. */ | | /* Define to 1 if you have the <sys/socket.h> header file. */ |
#define EVENT__HAVE_SYS_SOCKET_H 1 | | #define EVENT__HAVE_SYS_SOCKET_H 1 |
| | |
/* Define to 1 if you have the <sys/stat.h> header file. */ | | /* Define to 1 if you have the <sys/stat.h> header file. */ |
#define EVENT__HAVE_SYS_STAT_H 1 | | #define EVENT__HAVE_SYS_STAT_H 1 |
| | |
/* Define to 1 if you have the <sys/sysctl.h> header file. */ | | /* Define to 1 if you have the <sys/sysctl.h> header file. */ |
/* #undef EVENT__HAVE_SYS_SYSCTL_H */ | | /* #undef EVENT__HAVE_SYS_SYSCTL_H */ |
| | |
/* Define to 1 if you have the <sys/timerfd.h> header file. */ | | /* Define to 1 if you have the <sys/timerfd.h> header file. */ |
| | |
skipping to change at line 418 ¶ | | skipping to change at line 442 ¶ |
| | |
/* Define to 1 if you have the <unistd.h> header file. */ | | /* Define to 1 if you have the <unistd.h> header file. */ |
#define EVENT__HAVE_UNISTD_H 1 | | #define EVENT__HAVE_UNISTD_H 1 |
| | |
/* Define to 1 if you have the `unsetenv' function. */ | | /* Define to 1 if you have the `unsetenv' function. */ |
#define EVENT__HAVE_UNSETENV 1 | | #define EVENT__HAVE_UNSETENV 1 |
| | |
/* Define to 1 if you have the `usleep' function. */ | | /* Define to 1 if you have the `usleep' function. */ |
#define EVENT__HAVE_USLEEP 1 | | #define EVENT__HAVE_USLEEP 1 |
| | |
/* Define to 1 if you have the `vasprintf' function. */ | | /* Define if your system supports the wepoll module */ |
#define EVENT__HAVE_VASPRINTF 1 | | /* #undef EVENT__HAVE_WEPOLL */ |
| | |
/* Define if kqueue works correctly with pipes */ | | /* Define if kqueue works correctly with pipes */ |
/* #undef EVENT__HAVE_WORKING_KQUEUE */ | | /* #undef EVENT__HAVE_WORKING_KQUEUE */ |
| | |
/* Define to 1 if you have the <zlib.h> header file. */ | | /* Define to 1 if you have the <zlib.h> header file. */ |
#define EVENT__HAVE_ZLIB_H 1 | | #define EVENT__HAVE_ZLIB_H 1 |
| | |
/* Define to 1 if you have the `_gmtime64' function. */ | | /* Define to 1 if you have the `_gmtime64' function. */ |
/* #undef EVENT__HAVE__GMTIME64 */ | | /* #undef EVENT__HAVE__GMTIME64 */ |
| | |
| | |
skipping to change at line 443 ¶ | | skipping to change at line 467 ¶ |
/* Define to 1 if compiler have __FUNCTION__ */ | | /* Define to 1 if compiler have __FUNCTION__ */ |
#define EVENT__HAVE___FUNCTION__ 1 | | #define EVENT__HAVE___FUNCTION__ 1 |
| | |
/* Define to 1 if compiler have __func__ */ | | /* Define to 1 if compiler have __func__ */ |
#define EVENT__HAVE___func__ 1 | | #define EVENT__HAVE___func__ 1 |
| | |
/* Define to the sub-directory where libtool stores uninstalled libraries.
*/ | | /* Define to the sub-directory where libtool stores uninstalled libraries.
*/ |
#define EVENT__LT_OBJDIR ".libs/" | | #define EVENT__LT_OBJDIR ".libs/" |
| | |
/* Numeric representation of the version */ | | /* Numeric representation of the version */ |
#define EVENT__NUMERIC_VERSION 0x02010c00 | | #define EVENT__NUMERIC_VERSION 0x02020001 |
| | |
/* Name of package */ | | /* Name of package */ |
#define EVENT__PACKAGE "libevent" | | #define EVENT__PACKAGE "libevent" |
| | |
/* Define to the address where bug reports for this package should be sent.
*/ | | /* Define to the address where bug reports for this package should be sent.
*/ |
#define EVENT__PACKAGE_BUGREPORT "" | | #define EVENT__PACKAGE_BUGREPORT "" |
| | |
/* Define to the full name of this package. */ | | /* Define to the full name of this package. */ |
#define EVENT__PACKAGE_NAME "libevent" | | #define EVENT__PACKAGE_NAME "libevent" |
| | |
/* Define to the full name and version of this package. */ | | /* Define to the full name and version of this package. */ |
#define EVENT__PACKAGE_STRING "libevent 2.1.12-stable" | | #define EVENT__PACKAGE_STRING "libevent 2.2.0-alpha-dev" |
| | |
/* Define to the one symbol short name of this package. */ | | /* Define to the one symbol short name of this package. */ |
#define EVENT__PACKAGE_TARNAME "libevent" | | #define EVENT__PACKAGE_TARNAME "libevent" |
| | |
/* Define to the home page for this package. */ | | /* Define to the home page for this package. */ |
#define EVENT__PACKAGE_URL "" | | #define EVENT__PACKAGE_URL "" |
| | |
/* Define to the version of this package. */ | | /* Define to the version of this package. */ |
#define EVENT__PACKAGE_VERSION "2.1.12-stable" | | #define EVENT__PACKAGE_VERSION "2.2.0-alpha-dev" |
| | |
/* Define to necessary symbol if this constant uses a non-standard name on | | /* Define to necessary symbol if this constant uses a non-standard name on |
your system. */ | | your system. */ |
/* #undef EVENT__PTHREAD_CREATE_JOINABLE */ | | /* #undef EVENT__PTHREAD_CREATE_JOINABLE */ |
| | |
/* The size of `int', as computed by sizeof. */ | | /* The size of `int', as computed by sizeof. */ |
#define EVENT__SIZEOF_INT 4 | | #define EVENT__SIZEOF_INT 4 |
| | |
/* The size of `long', as computed by sizeof. */ | | /* The size of `long', as computed by sizeof. */ |
#define EVENT__SIZEOF_LONG 8 | | #define EVENT__SIZEOF_LONG 8 |
| | |
skipping to change at line 500 ¶ | | skipping to change at line 524 ¶ |
| | |
/* The size of `time_t', as computed by sizeof. */ | | /* The size of `time_t', as computed by sizeof. */ |
#define EVENT__SIZEOF_TIME_T 8 | | #define EVENT__SIZEOF_TIME_T 8 |
| | |
/* The size of `void *', as computed by sizeof. */ | | /* The size of `void *', as computed by sizeof. */ |
#define EVENT__SIZEOF_VOID_P 8 | | #define EVENT__SIZEOF_VOID_P 8 |
| | |
/* Define to 1 if you have the ANSI C header files. */ | | /* Define to 1 if you have the ANSI C header files. */ |
#define STDC_HEADERS 1 | | #define STDC_HEADERS 1 |
| | |
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ | | |
#define EVENT__TIME_WITH_SYS_TIME 1 | | |
| | |
/* Enable extensions on AIX 3, Interix. */ | | /* Enable extensions on AIX 3, Interix. */ |
#ifndef _ALL_SOURCE | | #ifndef _ALL_SOURCE |
# define _ALL_SOURCE 1 | | # define _ALL_SOURCE 1 |
#endif | | #endif |
/* Enable GNU extensions on systems that have them. */ | | /* Enable GNU extensions on systems that have them. */ |
#ifndef _GNU_SOURCE | | #ifndef _GNU_SOURCE |
# define _GNU_SOURCE 1 | | # define _GNU_SOURCE 1 |
#endif | | #endif |
/* Enable threading extensions on Solaris. */ | | /* Enable threading extensions on Solaris. */ |
#ifndef _POSIX_PTHREAD_SEMANTICS | | #ifndef _POSIX_PTHREAD_SEMANTICS |
| | |
skipping to change at line 525 ¶ | | skipping to change at line 546 ¶ |
/* Enable extensions on HP NonStop. */ | | /* Enable extensions on HP NonStop. */ |
#ifndef _TANDEM_SOURCE | | #ifndef _TANDEM_SOURCE |
# define _TANDEM_SOURCE 1 | | # define _TANDEM_SOURCE 1 |
#endif | | #endif |
/* Enable general extensions on Solaris. */ | | /* Enable general extensions on Solaris. */ |
#ifndef __EXTENSIONS__ | | #ifndef __EXTENSIONS__ |
# define __EXTENSIONS__ 1 | | # define __EXTENSIONS__ 1 |
#endif | | #endif |
| | |
/* Version number of package */ | | /* Version number of package */ |
#define EVENT__VERSION "2.1.12-stable" | | #define EVENT__VERSION "2.2.0-alpha-dev" |
| | |
| | /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most |
| | significant byte first (like Motorola and SPARC, unlike Intel). */ |
| | #if defined AC_APPLE_UNIVERSAL_BUILD |
| | # if defined __BIG_ENDIAN__ |
| | # define EVENT__WORDS_BIGENDIAN 1 |
| | # endif |
| | #else |
| | # ifndef EVENT__nORDS_BIGENDIAN |
| | /* # undef EVENT__WORDS_BIGENDIAN */ |
| | # endif |
| | #endif |
| | |
/* Enable large inode numbers on Mac OS X 10.5. */ | | /* Enable large inode numbers on Mac OS X 10.5. */ |
#ifndef _DARWIN_USE_64_BIT_INODE | | #ifndef _DARWIN_USE_64_BIT_INODE |
# define _DARWIN_USE_64_BIT_INODE 1 | | # define _DARWIN_USE_64_BIT_INODE 1 |
#endif | | #endif |
| | |
/* Number of bits in a file offset, on hosts where this is settable. */ | | /* Number of bits in a file offset, on hosts where this is settable. */ |
/* #undef _FILE_OFFSET_BITS */ | | /* #undef _FILE_OFFSET_BITS */ |
| | |
/* Define for large files, on AIX-style hosts. */ | | /* Define for large files, on AIX-style hosts. */ |
| | |
skipping to change at line 548 ¶ | | skipping to change at line 581 ¶ |
/* Define to 1 if on MINIX. */ | | /* Define to 1 if on MINIX. */ |
/* #undef _MINIX */ | | /* #undef _MINIX */ |
| | |
/* Define to 2 if the system does not provide POSIX.1 features except with | | /* Define to 2 if the system does not provide POSIX.1 features except with |
this defined. */ | | this defined. */ |
/* #undef _POSIX_1_SOURCE */ | | /* #undef _POSIX_1_SOURCE */ |
| | |
/* Define to 1 if you need to in order for `stat' and other things to work.
*/ | | /* Define to 1 if you need to in order for `stat' and other things to work.
*/ |
/* #undef _POSIX_SOURCE */ | | /* #undef _POSIX_SOURCE */ |
| | |
/* Define to empty if `const' does not conform to ANSI C. */ | | |
/* #undef const */ | | |
| | |
/* Define to `__inline__' or `__inline' if that's what the C compiler | | /* Define to `__inline__' or `__inline' if that's what the C compiler |
calls it, or to nothing if 'inline' is not supported under any name. */ | | calls it, or to nothing if 'inline' is not supported under any name. */ |
#ifndef __cplusplus | | #ifndef __cplusplus |
/* #undef inline */ | | /* #undef inline */ |
#endif | | #endif |
| | |
/* Define to `int' if <sys/types.h> does not define. */ | | /* Define to `int' if <sys/types.h> does not define. */ |
/* #undef pid_t */ | | /* #undef pid_t */ |
| | |
/* Define to `unsigned int' if <sys/types.h> does not define. */ | | /* Define to `unsigned int' if <sys/types.h> does not define. */ |
| | |
End of changes. 16 change blocks. |
17 lines changed or deleted | | 47 lines changed or added |
|
event.h (2.1.12) | | event.h (current) |
| | |
skipping to change at line 177 ¶ | | skipping to change at line 177 ¶ |
| | |
event2/dns.h | | event2/dns.h |
Asynchronous DNS resolution | | Asynchronous DNS resolution |
| | |
event2/http.h | | event2/http.h |
An embedded libevent-based HTTP server | | An embedded libevent-based HTTP server |
| | |
event2/rpc.h | | event2/rpc.h |
A framework for creating RPC servers and clients | | A framework for creating RPC servers and clients |
| | |
| | event2/watch.h |
| | "Prepare" and "check" watchers. |
*/ | | */ |
| | |
/** @file event2/event.h | | /** @file event2/event.h |
| | |
Core functions for waiting for and receiving events, and using event base
s. | | @brief Core functions for waiting for and receiving events, and using eve
nt bases. |
*/ | | */ |
| | |
#include <event2/visibility.h> | | #include <event2/visibility.h> |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
extern "C" { | | extern "C" { |
#endif | | #endif |
| | |
#include <event2/event-config.h> | | #include <event2/event-config.h> |
#ifdef EVENT__HAVE_SYS_TYPES_H | | #ifdef EVENT__HAVE_SYS_TYPES_H |
| | |
skipping to change at line 223 ¶ | | skipping to change at line 225 ¶ |
* @see event_base_new(), event_base_free(), event_base_loop(), | | * @see event_base_new(), event_base_free(), event_base_loop(), |
* event_base_new_with_config() | | * event_base_new_with_config() |
*/ | | */ |
struct event_base | | struct event_base |
#ifdef EVENT_IN_DOXYGEN_ | | #ifdef EVENT_IN_DOXYGEN_ |
{/*Empty body so that doxygen will generate documentation here.*/} | | {/*Empty body so that doxygen will generate documentation here.*/} |
#endif | | #endif |
; | | ; |
| | |
/** | | /** |
* @struct event | | |
* | | |
* Structure to represent a single event. | | * Structure to represent a single event. |
* | | * |
* An event can have some underlying condition it represents: a socket | | * An event can have some underlying condition it represents: a socket |
* becoming readable or writeable (or both), or a signal becoming raised. | | * becoming readable or writeable (or both), or a signal becoming raised. |
* (An event that represents no underlying condition is still useful: you | | * (An event that represents no underlying condition is still useful: you |
* can use one to implement a timer, or to communicate between threads.) | | * can use one to implement a timer, or to communicate between threads.) |
* | | * |
* Generally, you can create events with event_new(), then make them | | * Generally, you can create events with event_new(), then make them |
* pending with event_add(). As your event_base runs, it will run the | | * pending with event_add(). As your event_base runs, it will run the |
* callbacks of an events whose conditions are triggered. When you no | | * callbacks of an events whose conditions are triggered. When you no |
| | |
skipping to change at line 372 ¶ | | skipping to change at line 372 ¶ |
active, or until something calls event_base_loopbreak() or | | active, or until something calls event_base_loopbreak() or |
event_base_loopexit(). | | event_base_loopexit(). |
| | |
@param base the event_base structure returned by event_base_new() or | | @param base the event_base structure returned by event_base_new() or |
event_base_new_with_config() | | event_base_new_with_config() |
@return 0 if successful, -1 if an error occurred, or 1 if we exited becau
se | | @return 0 if successful, -1 if an error occurred, or 1 if we exited becau
se |
no events were pending or active. | | no events were pending or active. |
@see event_base_loop() | | @see event_base_loop() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_base_dispatch(struct event_base *); | | int event_base_dispatch(struct event_base *base); |
| | |
/** | | /** |
Get the kernel event notification mechanism used by Libevent. | | Get the kernel event notification mechanism used by Libevent. |
| | |
@param eb the event_base structure returned by event_base_new() | | @param eb the event_base structure returned by event_base_new() |
@return a string identifying the kernel event mechanism (kqueue, epoll, et
c.) | | @return a string identifying the kernel event mechanism (kqueue, epoll, et
c.) |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
const char *event_base_get_method(const struct event_base *); | | const char *event_base_get_method(const struct event_base *eb); |
| | |
| | /** |
| | Get the kernel signal handling mechanism used by Libevent. |
| | |
| | @param eb the event_base structure returned by event_base_new() |
| | @return a string identifying the kernel signal handling mechanism, |
| | which is "signal" for traditional UNIX signal handlers, |
| | "kqueue_signal" for kqueue(2)-based method on *BSD and macOS, |
| | and "signalfd_signal" for Linux-only signalfd(2)-based method. |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | const char *event_base_get_signal_method(const struct event_base *eb); |
| | |
/** | | /** |
Gets all event notification mechanisms supported by Libevent. | | Gets all event notification mechanisms supported by Libevent. |
| | |
This functions returns the event mechanism in order preferred by | | This functions returns the event mechanism in order preferred by |
Libevent. Note that this list will include all backends that | | Libevent. Note that this list will include all backends that |
Libevent has compiled-in support for, and will not necessarily check | | Libevent has compiled-in support for, and will not necessarily check |
your OS to see whether it has the required resources. | | your OS to see whether it has the required resources. |
| | |
@return an array with pointers to the names of support methods. | | @return an array with pointers to the names of support methods. |
The end of the array is indicated by a NULL pointer. If an | | The end of the array is indicated by a NULL pointer. If an |
error is encountered NULL is returned. | | error is encountered NULL is returned. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
const char **event_get_supported_methods(void); | | const char **event_get_supported_methods(void); |
| | |
/** Query the current monotonic time from a the timer for a struct | | /** Query the current monotonic time from the timer for a struct |
* event_base. | | * event_base. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_gettime_monotonic(struct event_base *base, struct timeval *tp); | | int event_gettime_monotonic(struct event_base *base, struct timeval *tp); |
| | |
/** | | /** |
@name event type flag | | @name event type flag |
| | |
Flags to pass to event_base_get_num_events() to specify the kinds of eve
nts | | Flags to pass to event_base_get_num_events() to specify the kinds of eve
nts |
we want to aggregate counts for | | we want to aggregate counts for |
| | |
skipping to change at line 440 ¶ | | skipping to change at line 452 ¶ |
future libevent versions. The return value is an indication of the work | | future libevent versions. The return value is an indication of the work |
load, but the user shouldn't rely on the exact value as this may change
in | | load, but the user shouldn't rely on the exact value as this may change
in |
the future. | | the future. |
| | |
@param eb the event_base structure returned by event_base_new() | | @param eb the event_base structure returned by event_base_new() |
@param flags a bitwise combination of the kinds of events to aggregate | | @param flags a bitwise combination of the kinds of events to aggregate |
counts for | | counts for |
@return the number of events specified in the flags | | @return the number of events specified in the flags |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_base_get_num_events(struct event_base *, unsigned int); | | int event_base_get_num_events(struct event_base *eb, unsigned int flags); |
| | |
/** | | /** |
Get the maximum number of events in a given event_base as specified in th
e | | Get the maximum number of events in a given event_base as specified in th
e |
flags. | | flags. |
| | |
@param eb the event_base structure returned by event_base_new() | | @param eb the event_base structure returned by event_base_new() |
@param flags a bitwise combination of the kinds of events to aggregate | | @param flags a bitwise combination of the kinds of events to aggregate |
counts for | | counts for |
@param clear option used to reset the maximum count. | | @param clear option used to reset the maximum count. |
@return the number of events specified in the flags | | @return the number of events specified in the flags |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_base_get_max_events(struct event_base *, unsigned int, int); | | int event_base_get_max_events(struct event_base *eb, unsigned int flags, in
t clear); |
| | |
/** | | /** |
Allocates a new event configuration object. | | Allocates a new event configuration object. |
| | |
The event configuration object can be used to change the behavior of | | The event configuration object can be used to change the behavior of |
an event base. | | an event base. |
| | |
@return an event_config object that can be used to store configuration,
or | | @return an event_config object that can be used to store configuration,
or |
NULL if an error is encountered. | | NULL if an error is encountered. |
@see event_base_new_with_config(), event_config_free(), event_config | | @see event_base_new_with_config(), event_config_free(), event_config |
| | |
skipping to change at line 544 ¶ | | skipping to change at line 556 ¶ |
*/ | | */ |
EVENT_BASE_FLAG_NOLOCK = 0x01, | | EVENT_BASE_FLAG_NOLOCK = 0x01, |
/** Do not check the EVENT_* environment variables when configuring | | /** Do not check the EVENT_* environment variables when configuring |
an event_base */ | | an event_base */ |
EVENT_BASE_FLAG_IGNORE_ENV = 0x02, | | EVENT_BASE_FLAG_IGNORE_ENV = 0x02, |
/** Windows only: enable the IOCP dispatcher at startup | | /** Windows only: enable the IOCP dispatcher at startup |
| | |
If this flag is set then bufferevent_socket_new() and | | If this flag is set then bufferevent_socket_new() and |
evconn_listener_new() will use IOCP-backed implementations | | evconn_listener_new() will use IOCP-backed implementations |
instead of the usual select-based one on Windows. | | instead of the usual select-based one on Windows. |
| | |
| | Note: it is experimental feature, and has some bugs. |
*/ | | */ |
EVENT_BASE_FLAG_STARTUP_IOCP = 0x04, | | EVENT_BASE_FLAG_STARTUP_IOCP = 0x04, |
/** Instead of checking the current time every time the event loop i
s | | /** Instead of checking the current time every time the event loop i
s |
ready to run timeout callbacks, check after each timeout callbac
k. | | ready to run timeout callbacks, check after each timeout callbac
k. |
*/ | | */ |
EVENT_BASE_FLAG_NO_CACHE_TIME = 0x08, | | EVENT_BASE_FLAG_NO_CACHE_TIME = 0x08, |
| | |
/** If we are using the epoll backend, this flag says that it is | | /** If we are using the epoll backend, this flag says that it is |
safe to use Libevent's internal change-list code to batch up | | safe to use Libevent's internal change-list code to batch up |
adds and deletes in order to try to do as few syscalls as | | adds and deletes in order to try to do as few syscalls as |
| | |
skipping to change at line 572 ¶ | | skipping to change at line 586 ¶ |
This flag has no effect if you wind up using a backend other tha
n | | This flag has no effect if you wind up using a backend other tha
n |
epoll. | | epoll. |
*/ | | */ |
EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST = 0x10, | | EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST = 0x10, |
| | |
/** Ordinarily, Libevent implements its time and timeout code using | | /** Ordinarily, Libevent implements its time and timeout code using |
the fastest monotonic timer that we have. If this flag is set, | | the fastest monotonic timer that we have. If this flag is set, |
however, we use less efficient more precise timer, assuming one
is | | however, we use less efficient more precise timer, assuming one
is |
present. | | present. |
*/ | | */ |
EVENT_BASE_FLAG_PRECISE_TIMER = 0x20 | | EVENT_BASE_FLAG_PRECISE_TIMER = 0x20, |
| | |
| | /** With EVENT_BASE_FLAG_PRECISE_TIMER, |
| | epoll backend will use timerfd for more accurate timers, this wi |
| | ll |
| | allows to disable this. |
| | |
| | That said that this is something in between lack of |
| | (CLOCK_MONOTONIC_COARSE) and enabled EVENT_BASE_FLAG_PRECISE_TIM |
| | ER |
| | (CLOCK_MONOTONIC + timerfd). |
| | |
| | This flag has no effect if you wind up using a backend other tha |
| | n |
| | epoll and if you do not have EVENT_BASE_FLAG_PRECISE_TIMER enabl |
| | ed. |
| | */ |
| | EVENT_BASE_FLAG_EPOLL_DISALLOW_TIMERFD = 0x40, |
| | |
| | /** Do not use signalfd(2) to handle signals even if supported. |
| | */ |
| | EVENT_BASE_FLAG_DISALLOW_SIGNALFD = 0x80, |
}; | | }; |
| | |
/** | | /** |
Return a bitmask of the features implemented by an event base. This | | Return a bitmask of the features implemented by an event base. This |
will be a bitwise OR of one or more of the values of | | will be a bitwise OR of one or more of the values of |
event_method_feature | | event_method_feature |
| | |
@see event_method_feature | | @see event_method_feature |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
| | |
skipping to change at line 677 ¶ | | skipping to change at line 708 ¶ |
Use event_base_new_with_config() to initialize a new event base, taking | | Use event_base_new_with_config() to initialize a new event base, taking |
the specified configuration under consideration. The configuration objec
t | | the specified configuration under consideration. The configuration objec
t |
can currently be used to avoid certain event notification mechanisms. | | can currently be used to avoid certain event notification mechanisms. |
| | |
@param cfg the event configuration object | | @param cfg the event configuration object |
@return an initialized event_base that can be used to registering events, | | @return an initialized event_base that can be used to registering events, |
or NULL if no event base can be created with the requested event_confi
g. | | or NULL if no event base can be created with the requested event_confi
g. |
@see event_base_new(), event_base_free(), event_init(), event_assign() | | @see event_base_new(), event_base_free(), event_init(), event_assign() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct event_base *event_base_new_with_config(const struct event_config *); | | struct event_base *event_base_new_with_config(const struct event_config *cf
g); |
| | |
/** | | /** |
Deallocate all memory associated with an event_base, and free the base. | | Deallocate all memory associated with an event_base, and free the base. |
| | |
Note that this function will not close any fds or free any memory passed | | Note that this function will not close any fds or free any memory passed |
to event_new as the argument to callback. | | to event_new as the argument to callback. |
| | |
If there are any pending finalizer callbacks, this function will invoke | | If there are any pending finalizer callbacks, this function will invoke |
them. | | them. |
| | |
@param eb an event_base to be freed | | @param eb an event_base to be freed |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void event_base_free(struct event_base *); | | void event_base_free(struct event_base *eb); |
| | |
/** | | /** |
As event_base_free, but do not run finalizers. | | As event_base_free, but do not run finalizers. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void event_base_free_nofinalize(struct event_base *); | | void event_base_free_nofinalize(struct event_base *); |
| | |
/** @name Log severities | | /** @name Log severities |
*/ | | */ |
/**@{*/ | | /**@{*/ |
| | |
skipping to change at line 786 ¶ | | skipping to change at line 817 ¶ |
/** | | /** |
Associate a different event base with an event. | | Associate a different event base with an event. |
| | |
The event to be associated must not be currently active or pending. | | The event to be associated must not be currently active or pending. |
| | |
@param eb the event base | | @param eb the event base |
@param ev the event | | @param ev the event |
@return 0 on success, -1 on failure. | | @return 0 on success, -1 on failure. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_base_set(struct event_base *, struct event *); | | int event_base_set(struct event_base *eb, struct event *ev); |
| | |
/** @name Loop flags | | /** @name Loop flags |
| | |
These flags control the behavior of event_base_loop(). | | These flags control the behavior of event_base_loop(). |
*/ | | */ |
/**@{*/ | | /**@{*/ |
/** Block until we have an active event, then exit once all active events | | /** Block until we have an active event, then exit once all active events |
* have had their callbacks run. */ | | * have had their callbacks run. */ |
#define EVLOOP_ONCE 0x01 | | #define EVLOOP_ONCE 0x01 |
/** Do not block: see which events are ready now, run the callbacks | | /** Do not block: see which events are ready now, run the callbacks |
| | |
skipping to change at line 818 ¶ | | skipping to change at line 849 ¶ |
| | |
This is a more flexible version of event_base_dispatch(). | | This is a more flexible version of event_base_dispatch(). |
| | |
By default, this loop will run the event base until either there are no m
ore | | By default, this loop will run the event base until either there are no m
ore |
pending or active events, or until something calls event_base_loopbreak()
or | | pending or active events, or until something calls event_base_loopbreak()
or |
event_base_loopexit(). You can override this behavior with the 'flags' | | event_base_loopexit(). You can override this behavior with the 'flags' |
argument. | | argument. |
| | |
@param eb the event_base structure returned by event_base_new() or | | @param eb the event_base structure returned by event_base_new() or |
event_base_new_with_config() | | event_base_new_with_config() |
@param flags any combination of EVLOOP_ONCE | EVLOOP_NONBLOCK | | @param flags any combination of EVLOOP_ONCE | EVLOOP_NONBLOCK | |
| | EVLOOP_NO_EXIT_ON_EMPTY |
@return 0 if successful, -1 if an error occurred, or 1 if we exited becau
se | | @return 0 if successful, -1 if an error occurred, or 1 if we exited becau
se |
no events were pending or active. | | no events were pending or active. |
@see event_base_loopexit(), event_base_dispatch(), EVLOOP_ONCE, | | @see event_base_loopexit(), event_base_dispatch(), EVLOOP_ONCE, |
EVLOOP_NONBLOCK | | EVLOOP_NONBLOCK |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_base_loop(struct event_base *, int); | | int event_base_loop(struct event_base *eb, int flags); |
| | |
/** | | /** |
Exit the event loop after the specified time | | Exit the event loop after the specified time |
| | |
The next event_base_loop() iteration after the given timer expires will | | The next event_base_loop() iteration after the given timer expires will |
complete normally (handling all queued events) then exit without | | complete normally (handling all queued events) then exit without |
blocking for events again. | | blocking for events again. |
| | |
Subsequent invocations of event_base_loop() will proceed normally. | | Subsequent invocations of event_base_loop() will proceed normally. |
| | |
@param eb the event_base structure returned by event_init() | | @param eb the event_base structure returned by event_init() |
@param tv the amount of time after which the loop should terminate, | | @param tv the amount of time after which the loop should terminate, |
or NULL to exit after running all currently active events. | | or NULL to exit after running all currently active events. |
@return 0 if successful, or -1 if an error occurred | | @return 0 if successful, or -1 if an error occurred |
@see event_base_loopbreak() | | @see event_base_loopbreak() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_base_loopexit(struct event_base *, const struct timeval *); | | int event_base_loopexit(struct event_base *eb, const struct timeval *tv); |
| | |
/** | | /** |
Abort the active event_base_loop() immediately. | | Abort the active event_base_loop() immediately. |
| | |
event_base_loop() will abort the loop after the next event is completed; | | event_base_loop() will abort the loop after the next event is completed; |
event_base_loopbreak() is typically invoked from this event's callback. | | event_base_loopbreak() is typically invoked from this event's callback. |
This behavior is analogous to the "break;" statement. | | This behavior is analogous to the "break;" statement. |
| | |
Subsequent invocations of event_base_loop() will proceed normally. | | Subsequent invocations of event_base_loop() will proceed normally. |
| | |
@param eb the event_base structure returned by event_init() | | @param eb the event_base structure returned by event_init() |
@return 0 if successful, or -1 if an error occurred | | @return 0 if successful, or -1 if an error occurred |
@see event_base_loopexit() | | @see event_base_loopexit() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_base_loopbreak(struct event_base *); | | int event_base_loopbreak(struct event_base *eb); |
| | |
/** | | /** |
Tell the active event_base_loop() to scan for new events immediately. | | Tell the active event_base_loop() to scan for new events immediately. |
| | |
Calling this function makes the currently active event_base_loop() | | Calling this function makes the currently active event_base_loop() |
start the loop over again (scanning for new events) after the current | | start the loop over again (scanning for new events) after the current |
event callback finishes. If the event loop is not running, this | | event callback finishes. If the event loop is not running, this |
function has no effect. | | function has no effect. |
| | |
event_base_loopbreak() is typically invoked from this event's callback. | | event_base_loopbreak() is typically invoked from this event's callback. |
This behavior is analogous to the "continue;" statement. | | This behavior is analogous to the "continue;" statement. |
| | |
Subsequent invocations of event loop will proceed normally. | | Subsequent invocations of event loop will proceed normally. |
| | |
@param eb the event_base structure returned by event_init() | | @param eb the event_base structure returned by event_init() |
@return 0 if successful, or -1 if an error occurred | | @return 0 if successful, or -1 if an error occurred |
@see event_base_loopbreak() | | @see event_base_loopbreak() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_base_loopcontinue(struct event_base *); | | int event_base_loopcontinue(struct event_base *eb); |
| | |
/** | | /** |
Checks if the event loop was told to exit by event_base_loopexit(). | | Checks if the event loop was told to exit by event_base_loopexit(). |
| | |
This function will return true for an event_base at every point after | | This function will return true for an event_base at every point after |
event_loopexit() is called, until the event loop is next entered. | | event_loopexit() is called, until the event loop is next entered. |
| | |
@param eb the event_base structure returned by event_init() | | @param eb the event_base structure returned by event_init() |
@return true if event_base_loopexit() was called on this event base, | | @return true if event_base_loopexit() was called on this event base, |
or 0 otherwise | | or 0 otherwise |
@see event_base_loopexit() | | @see event_base_loopexit() |
@see event_base_got_break() | | @see event_base_got_break() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_base_got_exit(struct event_base *); | | int event_base_got_exit(struct event_base *eb); |
| | |
/** | | /** |
Checks if the event loop was told to abort immediately by event_base_loop
break(). | | Checks if the event loop was told to abort immediately by event_base_loop
break(). |
| | |
This function will return true for an event_base at every point after | | This function will return true for an event_base at every point after |
event_base_loopbreak() is called, until the event loop is next entered. | | event_base_loopbreak() is called, until the event loop is next entered. |
| | |
@param eb the event_base structure returned by event_init() | | @param eb the event_base structure returned by event_init() |
@return true if event_base_loopbreak() was called on this event base, | | @return true if event_base_loopbreak() was called on this event base, |
or 0 otherwise | | or 0 otherwise |
@see event_base_loopbreak() | | @see event_base_loopbreak() |
@see event_base_got_exit() | | @see event_base_got_exit() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_base_got_break(struct event_base *); | | int event_base_got_break(struct event_base *eb); |
| | |
/** | | /** |
* @name event flags | | * @name event flags |
* | | * |
* Flags to pass to event_new(), event_assign(), event_pending(), and | | * Flags to pass to event_new(), event_assign(), event_pending(), and |
* anything else with an argument of the form "short events" | | * anything else with an argument of the form "short events" |
*/ | | */ |
/**@{*/ | | /**@{*/ |
/** Indicates that a timeout has occurred. It's not necessary to pass | | /** Indicates that a timeout has occurred. It's not necessary to pass |
* this flag to event_for new()/event_assign() to get a timeout. */ | | * this flag to event_for new()/event_assign() to get a timeout. */ |
| | |
skipping to change at line 1067 ¶ | | skipping to change at line 1099 ¶ |
The EV_PERSIST flag can also be passed in the events argument: it makes | | The EV_PERSIST flag can also be passed in the events argument: it makes |
event_add() persistent until event_del() is called. | | event_add() persistent until event_del() is called. |
| | |
The EV_ET flag is compatible with EV_READ and EV_WRITE, and supported | | The EV_ET flag is compatible with EV_READ and EV_WRITE, and supported |
only by certain backends. It tells Libevent to use edge-triggered | | only by certain backends. It tells Libevent to use edge-triggered |
events. | | events. |
| | |
The EV_TIMEOUT flag has no effect here. | | The EV_TIMEOUT flag has no effect here. |
| | |
It is okay to have multiple events all listening on the same fds; but | | It is okay to have multiple events all listening on the same fds; but |
they must either all be edge-triggered, or all not be edge triggered. | | they must either all be edge-triggered, or not be edge-triggered at all. |
| | |
When the event becomes active, the event loop will run the provided | | When the event becomes active, the event loop will run the provided |
callback function, with three arguments. The first will be the provided | | callback function, with three arguments. The first will be the provided |
fd value. The second will be a bitfield of the events that triggered: | | fd value. The second will be a bitfield of the events that triggered: |
EV_READ, EV_WRITE, or EV_SIGNAL. Here the EV_TIMEOUT flag indicates | | EV_READ, EV_WRITE, or EV_SIGNAL. Here the EV_TIMEOUT flag indicates |
that a timeout occurred, and EV_ET indicates that an edge-triggered | | that a timeout occurred, and EV_ET indicates that an edge-triggered |
event occurred. The third event will be the callback_arg pointer that | | event occurred. The third event will be the callback_arg pointer that |
you provide. | | you provide. |
| | |
@param base the event base to which the event should be attached. | | @param base the event base to which the event should be attached. |
| | |
skipping to change at line 1089 ¶ | | skipping to change at line 1121 ¶ |
@param events desired events to monitor: bitfield of EV_READ, EV_WRITE, | | @param events desired events to monitor: bitfield of EV_READ, EV_WRITE, |
EV_SIGNAL, EV_PERSIST, EV_ET. | | EV_SIGNAL, EV_PERSIST, EV_ET. |
@param callback callback function to be invoked when the event occurs | | @param callback callback function to be invoked when the event occurs |
@param callback_arg an argument to be passed to the callback function | | @param callback_arg an argument to be passed to the callback function |
| | |
@return a newly allocated struct event that must later be freed with | | @return a newly allocated struct event that must later be freed with |
event_free() or NULL if an error occurred. | | event_free() or NULL if an error occurred. |
@see event_free(), event_add(), event_del(), event_assign() | | @see event_free(), event_add(), event_del(), event_assign() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct event *event_new(struct event_base *, evutil_socket_t, short, event_
callback_fn, void *); | | struct event *event_new(struct event_base *base, evutil_socket_t fd, short
events, event_callback_fn callback, void *callback_arg); |
| | |
/** | | /** |
Prepare a new, already-allocated event structure to be added. | | Prepare a new, already-allocated event structure to be added. |
| | |
The function event_assign() prepares the event structure ev to be used | | The function event_assign() prepares the event structure ev to be used |
in future calls to event_add() and event_del(). Unlike event_new(), it | | in future calls to event_add() and event_del(). Unlike event_new(), it |
doesn't allocate memory itself: it requires that you have already | | doesn't allocate memory itself: it requires that you have already |
allocated a struct event, probably on the heap. Doing this will | | allocated a struct event, probably on the heap. Doing this will |
typically make your code depend on the size of the event structure, and | | typically make your code depend on the size of the event structure, and |
thereby create incompatibility with future versions of Libevent. | | thereby create incompatibility with future versions of Libevent. |
| | |
skipping to change at line 1130 ¶ | | skipping to change at line 1162 ¶ |
@param events desired events to monitor; can be EV_READ and/or EV_WRITE | | @param events desired events to monitor; can be EV_READ and/or EV_WRITE |
@param callback callback function to be invoked when the event occurs | | @param callback callback function to be invoked when the event occurs |
@param callback_arg an argument to be passed to the callback function | | @param callback_arg an argument to be passed to the callback function |
| | |
@return 0 if success, or -1 on invalid arguments. | | @return 0 if success, or -1 on invalid arguments. |
| | |
@see event_new(), event_add(), event_del(), event_base_once(), | | @see event_new(), event_add(), event_del(), event_base_once(), |
event_get_struct_event_size() | | event_get_struct_event_size() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_assign(struct event *, struct event_base *, evutil_socket_t, shor
t, event_callback_fn, void *); | | int event_assign(struct event *ev, struct event_base *base, evutil_socket_t
fd, short events, event_callback_fn callback, void *callback_arg); |
| | |
/** | | /** |
Deallocate a struct event * returned by event_new(). | | Deallocate a struct event * returned by event_new(). |
| | |
If the event is pending or active, this function makes it non-pending | | If the event is pending or active, this function makes it non-pending |
and non-active first. | | and non-active first. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void event_free(struct event *); | | void event_free(struct event *); |
| | |
| | |
skipping to change at line 1207 ¶ | | skipping to change at line 1239 ¶ |
@param events event(s) to monitor; can be any of EV_READ | | | @param events event(s) to monitor; can be any of EV_READ | |
EV_WRITE, or EV_TIMEOUT | | EV_WRITE, or EV_TIMEOUT |
@param callback callback function to be invoked when the event occurs | | @param callback callback function to be invoked when the event occurs |
@param arg an argument to be passed to the callback function | | @param arg an argument to be passed to the callback function |
@param timeout the maximum amount of time to wait for the event. NULL | | @param timeout the maximum amount of time to wait for the event. NULL |
makes an EV_READ/EV_WRITE event make forever; NULL makes an | | makes an EV_READ/EV_WRITE event make forever; NULL makes an |
EV_TIMEOUT event success immediately. | | EV_TIMEOUT event success immediately. |
@return 0 if successful, or -1 if an error occurred | | @return 0 if successful, or -1 if an error occurred |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_base_once(struct event_base *, evutil_socket_t, short, event_call
back_fn, void *, const struct timeval *); | | int event_base_once(struct event_base *base, evutil_socket_t fd, short even
ts, event_callback_fn callback, void *arg, const struct timeval *timeout); |
| | |
/** | | /** |
Add an event to the set of pending events. | | Add an event to the set of pending events. |
| | |
The function event_add() schedules the execution of the event 'ev' when t
he | | The function event_add() schedules the execution of the event 'ev' when t
he |
condition specified by event_assign() or event_new() occurs, or when the
time | | condition specified by event_assign() or event_new() occurs, or when the
time |
specified in timeout has elapsed. If a timeout is NULL, no timeout | | specified in timeout has elapsed. If a timeout is NULL, no timeout |
occurs and the function will only be | | occurs and the function will only be |
called if a matching event occurs. The event in the | | called if a matching event occurs. The event in the |
ev argument must be already initialized by event_assign() or event_new() | | ev argument must be already initialized by event_assign() or event_new() |
| | |
skipping to change at line 1257 ¶ | | skipping to change at line 1289 ¶ |
| | |
The function event_del() will cancel the event in the argument ev. If th
e | | The function event_del() will cancel the event in the argument ev. If th
e |
event has already executed or has never been added the call will have no | | event has already executed or has never been added the call will have no |
effect. | | effect. |
| | |
@param ev an event struct to be removed from the working set | | @param ev an event struct to be removed from the working set |
@return 0 if successful, or -1 if an error occurred | | @return 0 if successful, or -1 if an error occurred |
@see event_add() | | @see event_add() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_del(struct event *); | | int event_del(struct event *ev); |
| | |
/** | | /** |
As event_del(), but never blocks while the event's callback is running | | As event_del(), but never blocks while the event's callback is running |
in another thread, even if the event was constructed without the | | in another thread, even if the event was constructed without the |
EV_FINALIZE flag. | | EV_FINALIZE flag. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_del_noblock(struct event *ev); | | int event_del_noblock(struct event *ev); |
/** | | /** |
As event_del(), but always blocks while the event's callback is running | | As event_del(), but always blocks while the event's callback is running |
| | |
skipping to change at line 1467 ¶ | | skipping to change at line 1499 ¶ |
events again, before running less-urgent events. Less-urgent events | | events again, before running less-urgent events. Less-urgent events |
will not have their callbacks run until there are no events more urgent | | will not have their callbacks run until there are no events more urgent |
than them that want to be active. | | than them that want to be active. |
| | |
@param eb the event_base structure returned by event_base_new() | | @param eb the event_base structure returned by event_base_new() |
@param npriorities the maximum number of priorities | | @param npriorities the maximum number of priorities |
@return 0 if successful, or -1 if an error occurred | | @return 0 if successful, or -1 if an error occurred |
@see event_priority_set() | | @see event_priority_set() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_base_priority_init(struct event_base *, int); | | int event_base_priority_init(struct event_base *eb, int npriorities); |
| | |
/** | | /** |
Get the number of different event priorities. | | Get the number of different event priorities. |
| | |
@param eb the event_base structure returned by event_base_new() | | @param eb the event_base structure returned by event_base_new() |
@return Number of different event priorities | | @return Number of different event priorities |
@see event_base_priority_init() | | @see event_base_priority_init() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_base_get_npriorities(struct event_base *eb); | | int event_base_get_npriorities(struct event_base *eb); |
| | |
/** | | /** |
Assign a priority to an event. | | Assign a priority to an event. |
| | |
@param ev an event struct | | @param ev an event struct |
@param priority the new priority to be assigned | | @param priority the new priority to be assigned |
@return 0 if successful, or -1 if an error occurred | | @return 0 if successful, or -1 if an error occurred |
@see event_priority_init(), event_get_priority() | | @see event_priority_init(), event_get_priority() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int event_priority_set(struct event *, int); | | int event_priority_set(struct event *ev, int priority); |
| | |
/** | | /** |
Prepare an event_base to use a large number of timeouts with the same | | Prepare an event_base to use a large number of timeouts with the same |
duration. | | duration. |
| | |
Libevent's default scheduling algorithm is optimized for having a large | | Libevent's default scheduling algorithm is optimized for having a large |
number of timeouts with their durations more or less randomly | | number of timeouts with their durations more or less randomly |
distributed. But if you have a large number of timeouts that all have | | distributed. But if you have a large number of timeouts that all have |
the same duration (for example, if you have a large number of | | the same duration (for example, if you have a large number of |
connections that all have a 10-second timeout), then you can improve | | connections that all have a 10-second timeout), then you can improve |
| | |
skipping to change at line 1557 ¶ | | skipping to change at line 1589 ¶ |
Writes a human-readable description of all inserted and/or active | | Writes a human-readable description of all inserted and/or active |
events to a provided stdio stream. | | events to a provided stdio stream. |
| | |
This is intended for debugging; its format is not guaranteed to be the s
ame | | This is intended for debugging; its format is not guaranteed to be the s
ame |
between libevent versions. | | between libevent versions. |
| | |
@param base An event_base on which to scan the events. | | @param base An event_base on which to scan the events. |
@param output A stdio file to write on. | | @param output A stdio file to write on. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void event_base_dump_events(struct event_base *, FILE *); | | void event_base_dump_events(struct event_base *base, FILE *output); |
| | |
/** | | /** |
Activates all pending events for the given fd and event mask. | | Activates all pending events for the given fd and event mask. |
| | |
This function activates pending events only. Events which have not been | | This function activates pending events only. Events which have not been |
added will not become active. | | added will not become active. |
| | |
@param base the event_base on which to activate the events. | | @param base the event_base on which to activate the events. |
@param fd An fd to active events on. | | @param fd An fd to active events on. |
@param events One or more of EV_{READ,WRITE,TIMEOUT}. | | @param events One or more of EV_{READ,WRITE,TIMEOUT}. |
| | |
skipping to change at line 1579 ¶ | | skipping to change at line 1611 ¶ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void event_base_active_by_fd(struct event_base *base, evutil_socket_t fd, s
hort events); | | void event_base_active_by_fd(struct event_base *base, evutil_socket_t fd, s
hort events); |
| | |
/** | | /** |
Activates all pending signals with a given signal number | | Activates all pending signals with a given signal number |
| | |
This function activates pending events only. Events which have not been | | This function activates pending events only. Events which have not been |
added will not become active. | | added will not become active. |
| | |
@param base the event_base on which to activate the events. | | @param base the event_base on which to activate the events. |
@param fd The signal to active events on. | | @param sig The signal to active events on. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void event_base_active_by_signal(struct event_base *base, int sig); | | void event_base_active_by_signal(struct event_base *base, int sig); |
| | |
/** | | /** |
* Callback for iterating events in an event base via event_base_foreach_ev
ent | | * Callback for iterating events in an event base via event_base_foreach_ev
ent |
*/ | | */ |
typedef int (*event_base_foreach_event_cb)(const struct event_base *, const
struct event *, void *); | | typedef int (*event_base_foreach_event_cb)(const struct event_base *, const
struct event *, void *); |
| | |
/** | | /** |
| | |
End of changes. 29 change blocks. |
28 lines changed or deleted | | 64 lines changed or added |
|
event_compat.h (2.1.12) | | event_compat.h (current) |
| | |
skipping to change at line 32 ¶ | | skipping to change at line 32 ¶ |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ | | */ |
#ifndef EVENT2_EVENT_COMPAT_H_INCLUDED_ | | #ifndef EVENT2_EVENT_COMPAT_H_INCLUDED_ |
#define EVENT2_EVENT_COMPAT_H_INCLUDED_ | | #define EVENT2_EVENT_COMPAT_H_INCLUDED_ |
| | |
/** @file event2/event_compat.h | | /** @file event2/event_compat.h |
| | |
Potentially non-threadsafe versions of the functions in event.h: provided | | @brief Potentially non-threadsafe versions of the functions in event.h: p
rovided |
only for backwards compatibility. | | only for backwards compatibility. |
| | |
In the oldest versions of Libevent, event_base was not a first-class | | In the oldest versions of Libevent, event_base was not a first-class |
structure. Instead, there was a single event base that every function | | structure. Instead, there was a single event base that every function |
manipulated. Later, when separate event bases were added, the old functi
ons | | manipulated. Later, when separate event bases were added, the old functi
ons |
that didn't take an event_base argument needed to work by manipulating th
e | | that didn't take an event_base argument needed to work by manipulating th
e |
"current" event base. This could lead to thread-safety issues, and obscu
re, | | "current" event base. This could lead to thread-safety issues, and obscu
re, |
hard-to-diagnose bugs. | | hard-to-diagnose bugs. |
| | |
@deprecated All functions in this file are by definition deprecated. | | @deprecated All functions in this file are by definition deprecated. |
| | |
End of changes. 1 change blocks. |
1 lines changed or deleted | | 1 lines changed or added |
|
event_struct.h (2.1.12) | | event_struct.h (current) |
| | |
skipping to change at line 129 ¶ | | skipping to change at line 129 ¶ |
void *evcb_arg; | | void *evcb_arg; |
}; | | }; |
| | |
struct event_base; | | struct event_base; |
struct event { | | struct event { |
struct event_callback ev_evcallback; | | struct event_callback ev_evcallback; |
| | |
/* for managing timeouts */ | | /* for managing timeouts */ |
union { | | union { |
TAILQ_ENTRY(event) ev_next_with_common_timeout; | | TAILQ_ENTRY(event) ev_next_with_common_timeout; |
int min_heap_idx; | | size_t min_heap_idx; |
} ev_timeout_pos; | | } ev_timeout_pos; |
evutil_socket_t ev_fd; | | evutil_socket_t ev_fd; |
| | |
| | short ev_events; |
| | short ev_res; /* result passed to event callback */ |
| | |
struct event_base *ev_base; | | struct event_base *ev_base; |
| | |
union { | | union { |
/* used for io events */ | | /* used for io events */ |
struct { | | struct { |
LIST_ENTRY (event) ev_io_next; | | LIST_ENTRY (event) ev_io_next; |
struct timeval ev_timeout; | | struct timeval ev_timeout; |
} ev_io; | | } ev_io; |
| | |
/* used by signal events */ | | /* used by signal events */ |
struct { | | struct { |
LIST_ENTRY (event) ev_signal_next; | | LIST_ENTRY (event) ev_signal_next; |
short ev_ncalls; | | short ev_ncalls; |
/* Allows deletes in callback */ | | /* Allows deletes in callback */ |
short *ev_pncalls; | | short *ev_pncalls; |
} ev_signal; | | } ev_signal; |
} ev_; | | } ev_; |
| | |
short ev_events; | | |
short ev_res; /* result passed to event callback */ | | |
struct timeval ev_timeout; | | struct timeval ev_timeout; |
}; | | }; |
| | |
TAILQ_HEAD (event_list, event); | | TAILQ_HEAD (event_list, event); |
| | |
#ifdef EVENT_DEFINED_TQENTRY_ | | #ifdef EVENT_DEFINED_TQENTRY_ |
#undef TAILQ_ENTRY | | #undef TAILQ_ENTRY |
#endif | | #endif |
| | |
#ifdef EVENT_DEFINED_TQHEAD_ | | #ifdef EVENT_DEFINED_TQHEAD_ |
| | |
End of changes. 3 change blocks. |
3 lines changed or deleted | | 4 lines changed or added |
|
http.h (2.1.12) | | http.h (current) |
| | |
skipping to change at line 46 ¶ | | skipping to change at line 46 ¶ |
#endif | | #endif |
| | |
/* In case we haven't included the right headers yet. */ | | /* In case we haven't included the right headers yet. */ |
struct evbuffer; | | struct evbuffer; |
struct event_base; | | struct event_base; |
struct bufferevent; | | struct bufferevent; |
struct evhttp_connection; | | struct evhttp_connection; |
| | |
/** @file event2/http.h | | /** @file event2/http.h |
* | | * |
* Basic support for HTTP serving. | | * @brief Basic support for HTTP serving. |
* | | * |
* As Libevent is a library for dealing with event notification and most | | * As Libevent is a library for dealing with event notification and most |
* interesting applications are networked today, I have often found the | | * interesting applications are networked today, I have often found the |
* need to write HTTP code. The following prototypes and definitions provi
de | | * need to write HTTP code. The following prototypes and definitions provi
de |
* an application with a minimal interface for making HTTP requests and for | | * an application with a minimal interface for making HTTP requests and for |
* creating a very simple HTTP server. | | * creating a very simple HTTP server. |
*/ | | */ |
| | |
/* Response codes */ | | /* Response codes */ |
| | #define HTTP_CONTINUE 100 /**< client should proceed to send * |
| | / |
| | #define HTTP_SWITCH_PROTOCOLS 101 /**< switching to another protocol * |
| | / |
| | #define HTTP_PROCESSING 102 /**< processing the request, |
| | but no response is available yet */ |
| | #define HTTP_EARLYHINTS 103 /**< return some response he |
| | aders */ |
#define HTTP_OK 200 /**< request completed ok */ | | #define HTTP_OK 200 /**< request completed ok */ |
| | #define HTTP_CREATED 201 /**< new resource is created */ |
| | #define HTTP_ACCEPTED 202 /**< accepted for processing */ |
| | #define HTTP_NONAUTHORITATIVE 203 /**< returning a modified version of |
| | the origin's response */ |
#define HTTP_NOCONTENT 204 /**< request does not have content *
/ | | #define HTTP_NOCONTENT 204 /**< request does not have content *
/ |
#define HTTP_MOVEPERM 301 /**< the uri moved permanently */ | | #define HTTP_MOVEPERM 301 /**< the uri moved permanently */ |
#define HTTP_MOVETEMP 302 /**< the uri moved temporarily */ | | #define HTTP_MOVETEMP 302 /**< the uri moved temporarily */ |
#define HTTP_NOTMODIFIED 304 /**< page was not modified from last
*/ | | #define HTTP_NOTMODIFIED 304 /**< page was not modified from last
*/ |
#define HTTP_BADREQUEST 400 /**< invalid http request wa
s made */ | | #define HTTP_BADREQUEST 400 /**< invalid http request wa
s made */ |
| | #define HTTP_UNAUTHORIZED 401 /**< authentication is required */ |
| | #define HTTP_PAYMENTREQUIRED 402 /**< user exceeded limit on requests |
| | */ |
| | #define HTTP_FORBIDDEN 403 /**< user not having the necessary p |
| | ermissions */ |
#define HTTP_NOTFOUND 404 /**< could not find content for uri
*/ | | #define HTTP_NOTFOUND 404 /**< could not find content for uri
*/ |
#define HTTP_BADMETHOD 405 /**< method not allowed for this uri
*/ | | #define HTTP_BADMETHOD 405 /**< method not allowed for this uri
*/ |
#define HTTP_ENTITYTOOLARGE 413 /**< */ | | #define HTTP_ENTITYTOOLARGE 413 /**< request is larger than the serv
er is able to process */ |
#define HTTP_EXPECTATIONFAILED 417 /**< we can't handle this expectatio
n */ | | #define HTTP_EXPECTATIONFAILED 417 /**< we can't handle this expectatio
n */ |
#define HTTP_INTERNAL 500 /**< internal error */ | | #define HTTP_INTERNAL 500 /**< internal error */ |
#define HTTP_NOTIMPLEMENTED 501 /**< not implemented */ | | #define HTTP_NOTIMPLEMENTED 501 /**< not implemented */ |
| | #define HTTP_BADGATEWAY 502 /**< received an invalid res
ponse from the upstream */ |
#define HTTP_SERVUNAVAIL 503 /**< the server is not available */ | | #define HTTP_SERVUNAVAIL 503 /**< the server is not available */ |
| | |
struct evhttp; | | struct evhttp; |
struct evhttp_request; | | struct evhttp_request; |
struct evkeyvalq; | | struct evkeyvalq; |
struct evhttp_bound_socket; | | struct evhttp_bound_socket; |
struct evconnlistener; | | struct evconnlistener; |
struct evdns_base; | | struct evdns_base; |
| | struct evhttp_ext_method; |
| | |
/** | | /** |
* Create a new HTTP server. | | * Create a new HTTP server. |
* | | * |
* @param base (optional) the event base to receive the HTTP events | | * @param base (optional) the event base to receive the HTTP events |
* @return a pointer to a newly initialized evhttp server structure or NULL | | * @return a pointer to a newly initialized evhttp server structure or NULL |
* on error | | * on error |
* @see evhttp_free() | | * @see evhttp_free() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
| | |
skipping to change at line 163 ¶ | | skipping to change at line 175 ¶ |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct evhttp_bound_socket *evhttp_bind_listener(struct evhttp *http, struc
t evconnlistener *listener); | | struct evhttp_bound_socket *evhttp_bind_listener(struct evhttp *http, struc
t evconnlistener *listener); |
| | |
/** | | /** |
* Return the listener used to implement a bound socket. | | * Return the listener used to implement a bound socket. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct evconnlistener *evhttp_bound_socket_get_listener(struct evhttp_bound
_socket *bound); | | struct evconnlistener *evhttp_bound_socket_get_listener(struct evhttp_bound
_socket *bound); |
| | |
| | /* |
| | * Like evhttp_set_bevcb. |
| | * If cb returns a non-NULL bufferevent, * the callback supplied through |
| | * evhttp_set_bevcb isn't used. |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | void evhttp_bound_set_bevcb(struct evhttp_bound_socket *bound, struct buffe |
| | revent* (*cb)(struct event_base *, void *), void *cbarg); |
| | |
typedef void evhttp_bound_socket_foreach_fn(struct evhttp_bound_socket *, v
oid *); | | typedef void evhttp_bound_socket_foreach_fn(struct evhttp_bound_socket *, v
oid *); |
/** | | /** |
* Applies the function specified in the first argument to all | | * Applies the function specified in the first argument to all |
* evhttp_bound_sockets associated with "http". The user must not | | * evhttp_bound_sockets associated with "http". The user must not |
* attempt to free or remove any connections, sockets or listeners | | * attempt to free or remove any connections, sockets or listeners |
* in the callback "function". | | * in the callback "function". |
* | | * |
* @param http pointer to an evhttp object | | * @param http pointer to an evhttp object |
* @param function function to apply to every bound socket | | * @param function function to apply to every bound socket |
* @param argument pointer value passed to function for every socket iterat
ed | | * @param argument pointer value passed to function for every socket iterat
ed |
| | |
skipping to change at line 226 ¶ | | skipping to change at line 246 ¶ |
void evhttp_free(struct evhttp* http); | | void evhttp_free(struct evhttp* http); |
| | |
/** XXX Document. */ | | /** XXX Document. */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_set_max_headers_size(struct evhttp* http, ev_ssize_t max_header
s_size); | | void evhttp_set_max_headers_size(struct evhttp* http, ev_ssize_t max_header
s_size); |
/** XXX Document. */ | | /** XXX Document. */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_set_max_body_size(struct evhttp* http, ev_ssize_t max_body_size
); | | void evhttp_set_max_body_size(struct evhttp* http, ev_ssize_t max_body_size
); |
| | |
/** | | /** |
| | * Set the maximum number of simultaneous connections for this server. |
| | * A value of zero or less disables the limit. |
| | * |
| | * @param http the http server on which to set the max connection limit |
| | * @param max_connections the maximum number of simultaneous connections or |
| | 0 |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | void evhttp_set_max_connections(struct evhttp* http, int max_connections); |
| | |
| | /** |
| | * Get the current number of connections. |
| | * |
| | * @return The current number of connections for this server. |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | int evhttp_get_connection_count(struct evhttp* http); |
| | |
| | /** |
Set the value to use for the Content-Type header when none was provided.
If | | Set the value to use for the Content-Type header when none was provided.
If |
the content type string is NULL, the Content-Type header will not be | | the content type string is NULL, the Content-Type header will not be |
automatically added. | | automatically added. |
| | |
@param http the http server on which to set the default content type | | @param http the http server on which to set the default content type |
@param content_type the value for the Content-Type header | | @param content_type the value for the Content-Type header |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_set_default_content_type(struct evhttp *http, | | void evhttp_set_default_content_type(struct evhttp *http, |
const char *content_type); | | const char *content_type); |
| | |
skipping to change at line 249 ¶ | | skipping to change at line 287 ¶ |
server, and passed to user callbacks. | | server, and passed to user callbacks. |
| | |
If not supported they will generate a "405 Method not allowed" response. | | If not supported they will generate a "405 Method not allowed" response. |
| | |
By default this includes the following methods: GET, POST, HEAD, PUT, DEL
ETE | | By default this includes the following methods: GET, POST, HEAD, PUT, DEL
ETE |
| | |
@param http the http server on which to set the methods | | @param http the http server on which to set the methods |
@param methods bit mask constructed from evhttp_cmd_type values | | @param methods bit mask constructed from evhttp_cmd_type values |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_set_allowed_methods(struct evhttp* http, ev_uint16_t methods); | | void evhttp_set_allowed_methods(struct evhttp* http, ev_uint32_t methods); |
| | |
| | typedef int (*evhttp_ext_method_cb)(struct evhttp_ext_method *); |
| | /** |
| | Sets the callback function which allows HTTP extended methods |
| | to be supported by this server. |
| | |
| | The callback should : |
| | - if method field is NULL : set method field according to type field |
| | - else : set type and flags fields according to method string |
| | - return 0 for success (known method / type) |
| | - return -1 for error (unknown method / type) |
| | |
| | evhttp_set_allowed_methods still needs to be called. |
| | |
| | @param http the http server on which to add support to the methods |
| | @param cmp the extended method callback |
| | @see evhttp_ext_method |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | void evhttp_set_ext_method_cmp(struct evhttp *http, evhttp_ext_method_cb cm |
| | p); |
| | |
/** | | /** |
Set a callback for a specified URI | | Set a callback for a specified URI |
| | |
@param http the http sever on which to set the callback | | @param http the http sever on which to set the callback |
@param path the path for which to invoke the callback | | @param path the path for which to invoke the callback |
@param cb the callback function that gets invoked on requesting path | | @param cb the callback function that gets invoked on requesting path |
@param cb_arg an additional context argument for the callback | | @param cb_arg an additional context argument for the callback |
@return 0 on success, -1 if the callback existed already, -2 on failure | | @return 0 on success, -1 if the callback existed already, -2 on failure |
*/ | | */ |
| | |
skipping to change at line 286 ¶ | | skipping to change at line 344 ¶ |
@param cb the callback to invoke for any unmatched requests | | @param cb the callback to invoke for any unmatched requests |
@param arg an context argument for the callback | | @param arg an context argument for the callback |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_set_gencb(struct evhttp *http, | | void evhttp_set_gencb(struct evhttp *http, |
void (*cb)(struct evhttp_request *, void *), void *arg); | | void (*cb)(struct evhttp_request *, void *), void *arg); |
| | |
/** | | /** |
Set a callback used to create new bufferevents for connections | | Set a callback used to create new bufferevents for connections |
to a given evhttp object. | | to a given evhttp object. |
| | cb is not called if a non-NULL bufferevent was supplied by |
| | evhttp_bound_set_bevcb. |
| | |
You can use this to override the default bufferevent type -- for example
, | | You can use this to override the default bufferevent type -- for example
, |
to make this evhttp object use SSL bufferevents rather than unencrypted | | to make this evhttp object use SSL bufferevents rather than unencrypted |
ones. | | ones. |
| | |
New bufferevents must be allocated with no fd set on them. | | New bufferevents must be allocated with no fd set on them. |
| | |
@param http the evhttp server object for which to set the callback | | @param http the evhttp server object for which to set the callback |
@param cb the callback to invoke for incoming connections | | @param cb the callback to invoke for incoming connections |
@param arg an context argument for the callback | | @param arg an context argument for the callback |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_set_bevcb(struct evhttp *http, | | void evhttp_set_bevcb(struct evhttp *http, |
struct bufferevent *(*cb)(struct event_base *, void *), void *arg); | | struct bufferevent *(*cb)(struct event_base *, void *), void *arg); |
| | |
/** | | /** |
| | Set a callback which allows the user to note or throttle incoming reques |
| | ts. |
| | |
| | The requests are not populated with HTTP level information. They |
| | are just associated to a connection. |
| | |
| | If the callback returns -1, the associated connection is terminated |
| | and the request is closed. |
| | |
| | @param http the evhttp server object for which to set the callback |
| | @param cb the callback to invoke for incoming connections |
| | @param arg an context argument for the callback |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | void evhttp_set_newreqcb(struct evhttp *http, |
| | int (*cb)(struct evhttp_request*, void *), void *arg); |
| | |
| | /** |
| | Set a callback to output for any error pages sent for requests of a give |
| | n |
| | evhttp object. |
| | |
| | You can use this to override the default error pages sent, allowing such |
| | things as multi-lingual support or customization to match other pages. |
| | |
| | The callback should use the supplied buffer to output the text for an |
| | error page. If the callback returns a negative value or doesn't output |
| | anything to the buffer, the default error page will be sent instead. The |
| | buffer will be automatically be sent when the callback returns, so the |
| | callback shouldn't do so itself. |
| | |
| | Microsoft Internet Explorer may display its own error pages if ones sent |
| | by |
| | an HTTP server are smaller than certain sizes, depending on the status c |
| | ode. |
| | To reliably suppress this feature an error page should be at least 512 |
| | bytes in size. |
| | |
| | @param http the evhttp server object for which to set the callback |
| | @param cb the callback to invoke to format error pages |
| | @param arg an context argument for the callback |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | void evhttp_set_errorcb(struct evhttp *http, |
| | int (*cb)(struct evhttp_request *req, struct evbuffer *buffer, int erro |
| | r, const char *reason, void *cbarg), |
| | void *cbarg); |
| | |
| | /** |
Adds a virtual host to the http server. | | Adds a virtual host to the http server. |
| | |
A virtual host is a newly initialized evhttp object that has request | | A virtual host is a newly initialized evhttp object that has request |
callbacks set on it via evhttp_set_cb() or evhttp_set_gencb(). It | | callbacks set on it via evhttp_set_cb() or evhttp_set_gencb(). It |
most not have any listing sockets associated with it. | | most not have any listing sockets associated with it. |
| | |
If the virtual host has not been removed by the time that evhttp_free() | | If the virtual host has not been removed by the time that evhttp_free() |
is called on the main http server, it will be automatically freed, too. | | is called on the main http server, it will be automatically freed, too. |
| | |
It is possible to have hierarchical vhosts. For example: A vhost | | It is possible to have hierarchical vhosts. For example: A vhost |
| | |
skipping to change at line 363 ¶ | | skipping to change at line 467 ¶ |
@param alias the alias to remove | | @param alias the alias to remove |
@see evhttp_add_server_alias() | | @see evhttp_add_server_alias() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evhttp_remove_server_alias(struct evhttp *http, const char *alias); | | int evhttp_remove_server_alias(struct evhttp *http, const char *alias); |
| | |
/** | | /** |
* Set the timeout for an HTTP request. | | * Set the timeout for an HTTP request. |
* | | * |
* @param http an evhttp object | | * @param http an evhttp object |
* @param timeout_in_secs the timeout, in seconds | | * @param timeout the timeout, in seconds |
| | * @see evhttp_set_timeout_tv() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_set_timeout(struct evhttp *http, int timeout_in_secs); | | void evhttp_set_timeout(struct evhttp *http, int timeout); |
| | |
/** | | /** |
* Set the timeout for an HTTP request. | | * Set read and write timeout for an HTTP request. |
* | | * |
* @param http an evhttp object | | * @param http an evhttp object |
* @param tv the timeout, or NULL | | * @param tv the timeout, or NULL |
| | * |
| | * For more precise control: |
| | * @see evhttp_set_read_timeout_tv() |
| | * @see evhttp_set_write_timeout_tv() |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_set_timeout_tv(struct evhttp *http, const struct timeval* tv); | | void evhttp_set_timeout_tv(struct evhttp *http, const struct timeval* tv); |
| | |
| | /** |
| | * Set read timeout for an HTTP request. |
| | * |
| | * @param http an evhttp object |
| | * @param tv the timeout, or NULL |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | void evhttp_set_read_timeout_tv(struct evhttp *http, const struct timeval* |
| | tv); |
| | |
| | /** |
| | * Set write timeout for an HTTP request. |
| | * |
| | * @param http an evhttp object |
| | * @param tv the timeout, or NULL |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | void evhttp_set_write_timeout_tv(struct evhttp *http, const struct timeval* |
| | tv); |
| | |
/* Read all the clients body, and only after this respond with an error if
the | | /* Read all the clients body, and only after this respond with an error if
the |
* clients body exceed max_body_size */ | | * clients body exceed max_body_size */ |
#define EVHTTP_SERVER_LINGERING_CLOSE 0x0001 | | #define EVHTTP_SERVER_LINGERING_CLOSE 0x0001 |
/** | | /** |
* Set connection flags for HTTP server. | | * Set connection flags for HTTP server. |
* | | * |
* @see EVHTTP_SERVER_* | | * @see EVHTTP_SERVER_* |
* @return 0 on success, otherwise non zero (for example if flag doesn't | | * @return 0 on success, otherwise non zero (for example if flag doesn't |
* supported). | | * supported). |
*/ | | */ |
| | |
skipping to change at line 467 ¶ | | skipping to change at line 594 ¶ |
Send another data chunk as part of an ongoing chunked reply. | | Send another data chunk as part of an ongoing chunked reply. |
| | |
The reply chunk consists of the data in databuf. After calling | | The reply chunk consists of the data in databuf. After calling |
evhttp_send_reply_chunk() databuf will be empty, but the buffer is | | evhttp_send_reply_chunk() databuf will be empty, but the buffer is |
still owned by the caller and needs to be deallocated by the caller | | still owned by the caller and needs to be deallocated by the caller |
if necessary. | | if necessary. |
| | |
@param req a request object | | @param req a request object |
@param databuf the data chunk to send as part of the reply. | | @param databuf the data chunk to send as part of the reply. |
@param cb callback funcion | | @param cb callback funcion |
@param call back's argument. | | @param arg call back's argument. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_send_reply_chunk_with_cb(struct evhttp_request *, struct evbuff
er *, | | void evhttp_send_reply_chunk_with_cb(struct evhttp_request *req, struct evb
uffer *databuf, |
void (*cb)(struct evhttp_connection *, void *), void *arg); | | void (*cb)(struct evhttp_connection *, void *), void *arg); |
| | |
/** | | /** |
Complete a chunked reply, freeing the request as appropriate. | | Complete a chunked reply, freeing the request as appropriate. |
| | |
@param req a request object | | @param req a request object |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_send_reply_end(struct evhttp_request *req); | | void evhttp_send_reply_end(struct evhttp_request *req); |
| | |
/* | | /* |
* Interfaces for making requests | | * Interfaces for making requests |
*/ | | */ |
| | |
/** The different request types supported by evhttp. These are as specifie
d | | /** The different request types supported by evhttp. These are as specifie
d |
* in RFC2616, except for PATCH which is specified by RFC5789. | | * in RFC2616, except for: |
| | * - PATCH which is specified by RFC5789 |
| | * - PROPFIND, PROPPATCH, MKCOL, LOCK, UNLOCK, COPY, MOVE |
| | * which are specified by RFC4918 |
* | | * |
* By default, only some of these methods are accepted and passed to user | | * By default, only some of these methods are accepted and passed to user |
* callbacks; use evhttp_set_allowed_methods() to change which methods | | * callbacks; use evhttp_set_allowed_methods() to change which methods |
* are allowed. | | * are allowed. |
*/ | | */ |
enum evhttp_cmd_type { | | enum evhttp_cmd_type { |
EVHTTP_REQ_GET = 1 << 0, | | EVHTTP_REQ_GET = 1 << 0, |
EVHTTP_REQ_POST = 1 << 1, | | EVHTTP_REQ_POST = 1 << 1, |
EVHTTP_REQ_HEAD = 1 << 2, | | EVHTTP_REQ_HEAD = 1 << 2, |
EVHTTP_REQ_PUT = 1 << 3, | | EVHTTP_REQ_PUT = 1 << 3, |
EVHTTP_REQ_DELETE = 1 << 4, | | EVHTTP_REQ_DELETE = 1 << 4, |
EVHTTP_REQ_OPTIONS = 1 << 5, | | EVHTTP_REQ_OPTIONS = 1 << 5, |
EVHTTP_REQ_TRACE = 1 << 6, | | EVHTTP_REQ_TRACE = 1 << 6, |
EVHTTP_REQ_CONNECT = 1 << 7, | | EVHTTP_REQ_CONNECT = 1 << 7, |
EVHTTP_REQ_PATCH = 1 << 8 | | EVHTTP_REQ_PATCH = 1 << 8, |
| | EVHTTP_REQ_PROPFIND= 1 << 9, |
| | EVHTTP_REQ_PROPPATCH=1 << 10, |
| | EVHTTP_REQ_MKCOL = 1 << 11, |
| | EVHTTP_REQ_LOCK = 1 << 12, |
| | EVHTTP_REQ_UNLOCK = 1 << 13, |
| | EVHTTP_REQ_COPY = 1 << 14, |
| | EVHTTP_REQ_MOVE = 1 << 15, |
}; | | }; |
| | |
| | #define EVHTTP_REQ_MAX EVHTTP_REQ_MOVE |
| | |
| | /** |
| | * @brief stucture that is passed to (and modified by) the |
| | * extended method callback function |
| | * |
| | * @see evhttp_set_ext_method_cmp |
| | * @see evhttp_connection_set_ext_method_cmp |
| | */ |
| | struct evhttp_ext_method { |
| | const char *method; |
| | ev_uint32_t type; /* @see enum evhttp_cmd_type */ |
| | ev_uint16_t flags; /* Available flag : EVHTTP_METHOD_HAS_BODY * |
| | / |
| | }; |
| | |
| | #define EVHTTP_METHOD_HAS_BODY 0x0001 |
| | |
/** a request object can represent either a request or a reply */ | | /** a request object can represent either a request or a reply */ |
enum evhttp_request_kind { EVHTTP_REQUEST, EVHTTP_RESPONSE }; | | enum evhttp_request_kind { EVHTTP_REQUEST, EVHTTP_RESPONSE }; |
| | |
/** | | /** |
* Create and return a connection object that can be used to for making HTT
P | | * Create and return a connection object that can be used to for making HTT
P |
* requests. The connection object tries to resolve address and establish
the | | * requests. The connection object tries to resolve address and establish
the |
* connection when it is given an http request object. | | * connection when it is given an http request object. |
* | | * |
| | * Connection also has default timeouts for the following events: |
| | * - connect HTTP_CONNECT_TIMEOUT, which is 45 seconds |
| | * - read HTTP_READ_TIMEOUT which is 50 seconds |
| | * - write HTTP_WRITE_TIMEOUT, which is 50 seconds |
| | * |
* @param base the event_base to use for handling the connection | | * @param base the event_base to use for handling the connection |
* @param dnsbase the dns_base to use for resolving host names; if not | | * @param dnsbase the dns_base to use for resolving host names; if not |
* specified host name resolution will block. | | * specified host name resolution will block. |
* @param bev a bufferevent to use for connecting to the server; if NULL, a | | * @param bev a bufferevent to use for connecting to the server; if NULL, a |
* socket-based bufferevent will be created. This buffrevent will be f
reed | | * socket-based bufferevent will be created. This bufferevent will be
freed |
* when the connection closes. It must have no fd set on it. | | * when the connection closes. It must have no fd set on it. |
* @param address the address to which to connect | | * @param address the address to which to connect |
* @param port the port to connect to | | * @param port the port to connect to |
* @return an evhttp_connection object that can be used for making requests
or | | * @return an evhttp_connection object that can be used for making requests
or |
* NULL on error | | * NULL on error |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct evhttp_connection *evhttp_connection_base_bufferevent_new( | | struct evhttp_connection *evhttp_connection_base_bufferevent_new( |
struct event_base *base, struct evdns_base *dnsbase, struct bufferev
ent* bev, const char *address, ev_uint16_t port); | | struct event_base *base, struct evdns_base *dnsbase, struct bufferev
ent* bev, const char *address, ev_uint16_t port); |
| | |
/** | | /** |
| | * Create and return a connection object that can be used to for making HTT |
| | P |
| | * requests over an unix domain socket. |
| | * |
| | * @param base the event_base to use for handling the connection |
| | * @param bev a bufferevent to use for connecting to the server; if NULL, a |
| | * socket-based bufferevent will be created. This bufferevent will be |
| | freed |
| | * when the connection closes. It must have no fd set on it. |
| | * @param path path of unix domain socket |
| | * @return an evhttp_connection object that can be used for making requests |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | struct evhttp_connection *evhttp_connection_base_bufferevent_unix_new( |
| | struct event_base *base, struct bufferevent* bev, const char *path); |
| | |
| | /** |
* Return the bufferevent that an evhttp_connection is using. | | * Return the bufferevent that an evhttp_connection is using. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct bufferevent* evhttp_connection_get_bufferevent(struct evhttp_connect
ion *evcon); | | struct bufferevent* evhttp_connection_get_bufferevent(struct evhttp_connect
ion *evcon); |
| | |
/** | | /** |
* Return the HTTP server associated with this connection, or NULL. | | * Return the HTTP server associated with this connection, or NULL. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct evhttp *evhttp_connection_get_server(struct evhttp_connection *evcon
); | | struct evhttp *evhttp_connection_get_server(struct evhttp_connection *evcon
); |
| | |
skipping to change at line 690 ¶ | | skipping to change at line 864 ¶ |
* evhttp_request_free() is explicitly called by the user. | | * evhttp_request_free() is explicitly called by the user. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_request_own(struct evhttp_request *req); | | void evhttp_request_own(struct evhttp_request *req); |
| | |
/** Returns 1 if the request is owned by the user */ | | /** Returns 1 if the request is owned by the user */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evhttp_request_is_owned(struct evhttp_request *req); | | int evhttp_request_is_owned(struct evhttp_request *req); |
| | |
/** | | /** |
| | * Sets extended method cmp callback for this http connection. |
| | * |
| | * @see evhttp_set_ext_method_cmp |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | void evhttp_connection_set_ext_method_cmp(struct evhttp_connection *evcon, |
| | evhttp_ext_method_cb cmp); |
| | |
| | /** |
* Returns the connection object associated with the request or NULL | | * Returns the connection object associated with the request or NULL |
* | | * |
* The user needs to either free the request explicitly or call | | * The user needs to either free the request explicitly or call |
* evhttp_send_reply_end(). | | * evhttp_send_reply_end(). |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct evhttp_connection *evhttp_request_get_connection(struct evhttp_reque
st *req); | | struct evhttp_connection *evhttp_request_get_connection(struct evhttp_reque
st *req); |
| | |
/** | | /** |
* Returns the underlying event_base for this connection | | * Returns the underlying event_base for this connection |
| | |
skipping to change at line 724 ¶ | | skipping to change at line 907 ¶ |
void evhttp_connection_free(struct evhttp_connection *evcon); | | void evhttp_connection_free(struct evhttp_connection *evcon); |
| | |
/** Disowns a given connection object | | /** Disowns a given connection object |
* | | * |
* Can be used to tell libevent to free the connection object after | | * Can be used to tell libevent to free the connection object after |
* the last request has completed or failed. | | * the last request has completed or failed. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_connection_free_on_completion(struct evhttp_connection *evcon); | | void evhttp_connection_free_on_completion(struct evhttp_connection *evcon); |
| | |
/** sets the ip address from which http connections are made */ | | /** Sets the IP address from which http connections are made |
| | * |
| | * Note this resets internal bufferevent fd, so any options that had been |
| | * installed will be flushed. |
| | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_connection_set_local_address(struct evhttp_connection *evcon, | | void evhttp_connection_set_local_address(struct evhttp_connection *evcon, |
const char *address); | | const char *address); |
| | |
/** sets the local port from which http connections are made */ | | /** sets the local port from which http connections are made */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_connection_set_local_port(struct evhttp_connection *evcon, | | void evhttp_connection_set_local_port(struct evhttp_connection *evcon, |
ev_uint16_t port); | | ev_uint16_t port); |
| | |
/** Sets the timeout in seconds for events related to this connection */ | | /** |
| | * Sets the timeout for this connection. |
| | * |
| | * @see evhttp_connection_set_timeout_tv() |
| | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_connection_set_timeout(struct evhttp_connection *evcon, | | void evhttp_connection_set_timeout(struct evhttp_connection *evcon, |
int timeout_in_secs); | | int timeout); |
| | |
/** Sets the timeout for events related to this connection. Takes a struct | | /** |
* timeval. */ | | * Sets the timeout for this connection for the following events: |
| | * - read, if tv==NULL then it uses default timeout (HTTP_READ_TIMEOUT) |
| | * - write, if tv==NULL then it uses default timeout (HTTP_WRITE_TIMEOUT) |
| | * |
| | * But it does not adjust timeout for the "connect" (for historical reasons |
| | ). |
| | * |
| | * @param tv the timeout, or NULL |
| | * |
| | * For more precise control: |
| | * @see evhttp_connection_set_connect_timeout_tv() |
| | * @see evhttp_connection_set_read_timeout_tv() |
| | * @see evhttp_connection_set_write_timeout_tv() |
| | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_connection_set_timeout_tv(struct evhttp_connection *evcon, | | void evhttp_connection_set_timeout_tv(struct evhttp_connection *evcon, |
const struct timeval *tv); | | const struct timeval *tv); |
| | |
/** Sets the delay before retrying requests on this connection. This is onl | | /** |
y | | * Sets the connect timeout for this connection |
* used if evhttp_connection_set_retries is used to make the number of retr | | * |
ies | | * @param tv the timeout, or NULL |
* at least one. Each retry after the first is twice as long as the one bef | | */ |
ore | | EVENT2_EXPORT_SYMBOL |
* it. */ | | void evhttp_connection_set_connect_timeout_tv(struct evhttp_connection *evc |
| | on, |
| | const struct timeval *tv); |
| | |
| | /** |
| | * Sets the read timeout for this connection |
| | * |
| | * @param tv the timeout, or NULL |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | void evhttp_connection_set_read_timeout_tv(struct evhttp_connection *evcon, |
| | const struct timeval *tv); |
| | |
| | /** |
| | * Sets the write timeout for this connection |
| | * |
| | * @param tv the timeout, or NULL |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | void evhttp_connection_set_write_timeout_tv(struct evhttp_connection *evcon |
| | , |
| | const struct timeval *tv); |
| | |
| | /** |
| | * Sets the delay before retrying requests on this connection. |
| | * |
| | * This is only used if evhttp_connection_set_retries is used to make the |
| | * number of retries at least one. Each retry after the first is twice as l |
| | ong |
| | * as the one before it. |
| | * |
| | * Default delay is HTTP_INITIAL_RETRY_TIMEOUT, which is 2 seconds. |
| | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_connection_set_initial_retry_tv(struct evhttp_connection *evcon
, | | void evhttp_connection_set_initial_retry_tv(struct evhttp_connection *evcon
, |
const struct timeval *tv); | | const struct timeval *tv); |
| | |
/** Sets the retry limit for this connection - -1 repeats indefinitely */ | | /** Sets the retry limit for this connection - -1 repeats indefinitely */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_connection_set_retries(struct evhttp_connection *evcon, | | void evhttp_connection_set_retries(struct evhttp_connection *evcon, |
int retry_max); | | int retry_max); |
| | |
/** Set a callback for connection close. */ | | /** Set a callback for connection close. */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_connection_set_closecb(struct evhttp_connection *evcon, | | void evhttp_connection_set_closecb(struct evhttp_connection *evcon, |
void (*)(struct evhttp_connection *, void *), void *); | | void (*)(struct evhttp_connection *, void *), void *); |
| | |
/** Get the remote address and port associated with this connection. */ | | /** Get the remote address and port associated with this connection. */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evhttp_connection_get_peer(struct evhttp_connection *evcon, | | void evhttp_connection_get_peer(struct evhttp_connection *evcon, |
char **address, ev_uint16_t *port); | | const char **address, ev_uint16_t *port); |
| | |
/** Get the remote address associated with this connection. | | /** Get the remote address associated with this connection. |
* extracted from getpeername() OR from nameserver. | | * extracted from getpeername() OR from nameserver. |
* | | * |
* @return NULL if getpeername() return non success, | | * @return NULL if getpeername() return non success, |
* or connection is not connected, | | * or connection is not connected, |
* otherwise it return pointer to struct sockaddr_storage */ | | * otherwise it return pointer to struct sockaddr_storage */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
const struct sockaddr* | | const struct sockaddr* |
evhttp_connection_get_addr(struct evhttp_connection *evcon); | | evhttp_connection_get_addr(struct evhttp_connection *evcon); |
| | |
skipping to change at line 988 ¶ | | skipping to change at line 1223 ¶ |
@deprecated This function is deprecated as of Libevent 2.0.9. Use | | @deprecated This function is deprecated as of Libevent 2.0.9. Use |
evhttp_uri_parse and evhttp_parse_query_str instead. | | evhttp_uri_parse and evhttp_parse_query_str instead. |
| | |
@param uri the request URI | | @param uri the request URI |
@param headers the head of the evkeyval queue | | @param headers the head of the evkeyval queue |
@return 0 on success, -1 on failure | | @return 0 on success, -1 on failure |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evhttp_parse_query(const char *uri, struct evkeyvalq *headers); | | int evhttp_parse_query(const char *uri, struct evkeyvalq *headers); |
| | |
| | /** @see evhttp_parse_query_str_flags() */ |
| | EVENT2_EXPORT_SYMBOL |
| | int evhttp_parse_query_str(const char *uri, struct evkeyvalq *headers); |
| | |
| | /** Tolerate queries that are not standard conformant. |
| | * |
| | * Here are some examples: |
| | * |
| | * - test=123&test2 |
| | * with with this flag test2 will be present in the output headers |
| | * |
| | * - test=123&&test2=1 |
| | * will parse the query with this flag |
| | * |
| | * - test=123&=456&test2=1 |
| | * will parse the queyr with this flag, however there won't be empty key |
| | * present |
| | */ |
| | #define EVHTTP_URI_QUERY_NONCONFORMANT 0x01 |
| | /** Prefer last value over the first from query args |
| | * |
| | * Example: test=123&test=456 |
| | * Without: test=123 |
| | * With : test=456 |
| | */ |
| | #define EVHTTP_URI_QUERY_LAST_VAL 0x02 |
| | |
/** | | /** |
Helper function to parse out arguments from the query portion of an | | Helper function to parse out arguments from the query portion of an |
HTTP URI. | | HTTP URI. |
| | |
Parsing a query string like | | Parsing a query string like |
| | |
q=test&s=some+thing | | q=test&s=some+thing |
| | |
will result in two entries in the key value queue. | | will result in two entries in the key value queue. |
| | |
The first entry is: key="q", value="test" | | The first entry is: key="q", value="test" |
The second entry is: key="s", value="some thing" | | The second entry is: key="s", value="some thing" |
| | |
@param query_parse the query portion of the URI | | @param uri the query portion of the URI |
@param headers the head of the evkeyval queue | | @param headers the head of the evkeyval queue |
| | @param flags one or more of EVHTTP_URI_QUERY_* |
@return 0 on success, -1 on failure | | @return 0 on success, -1 on failure |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evhttp_parse_query_str(const char *uri, struct evkeyvalq *headers); | | int evhttp_parse_query_str_flags(const char *uri, struct evkeyvalq *headers
, unsigned flags); |
| | |
/** | | /** |
* Escape HTML character entities in a string. | | * Escape HTML character entities in a string. |
* | | * |
* Replaces <, >, ", ' and & with <, >, ", | | * Replaces <, >, ", ' and & with <, >, ", |
* ' and & correspondingly. | | * ' and & correspondingly. |
* | | * |
* The returned string needs to be freed by the caller. | | * The returned string needs to be freed by the caller. |
* | | * |
* @param html an unescaped HTML string | | * @param html an unescaped HTML string |
| | |
skipping to change at line 1059 ¶ | | skipping to change at line 1322 ¶ |
* bracketed IPv6 address, or a bracketed 'IP-Future' address. | | * bracketed IPv6 address, or a bracketed 'IP-Future' address. |
* | | * |
* Note that having a NULL host means that the URI has no authority | | * Note that having a NULL host means that the URI has no authority |
* section, but having an empty-string host means that the URI has an | | * section, but having an empty-string host means that the URI has an |
* authority section with no host part. For example, | | * authority section with no host part. For example, |
* "mailto:user@example.com" has a host of NULL, but "file:///etc/motd" | | * "mailto:user@example.com" has a host of NULL, but "file:///etc/motd" |
* has a host of "". | | * has a host of "". |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
const char *evhttp_uri_get_host(const struct evhttp_uri *uri); | | const char *evhttp_uri_get_host(const struct evhttp_uri *uri); |
| | /** Return the unix socket part of an evhttp_uri, or NULL if there is no un |
| | ix |
| | * socket set */ |
| | EVENT2_EXPORT_SYMBOL |
| | const char *evhttp_uri_get_unixsocket(const struct evhttp_uri *uri); |
/** Return the port part of an evhttp_uri, or -1 if there is no port set. *
/ | | /** Return the port part of an evhttp_uri, or -1 if there is no port set. *
/ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evhttp_uri_get_port(const struct evhttp_uri *uri); | | int evhttp_uri_get_port(const struct evhttp_uri *uri); |
/** Return the path part of an evhttp_uri, or NULL if it has no path set */ | | /** Return the path part of an evhttp_uri, or NULL if it has no path set */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
const char *evhttp_uri_get_path(const struct evhttp_uri *uri); | | const char *evhttp_uri_get_path(const struct evhttp_uri *uri); |
/** Return the query part of an evhttp_uri (excluding the leading "?"), or | | /** Return the query part of an evhttp_uri (excluding the leading "?"), or |
* NULL if it has no query set */ | | * NULL if it has no query set */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
const char *evhttp_uri_get_query(const struct evhttp_uri *uri); | | const char *evhttp_uri_get_query(const struct evhttp_uri *uri); |
| | |
skipping to change at line 1086 ¶ | | skipping to change at line 1353 ¶ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evhttp_uri_set_scheme(struct evhttp_uri *uri, const char *scheme); | | int evhttp_uri_set_scheme(struct evhttp_uri *uri, const char *scheme); |
/** Set the userinfo of an evhttp_uri, or clear the userinfo if userinfo==N
ULL. | | /** Set the userinfo of an evhttp_uri, or clear the userinfo if userinfo==N
ULL. |
* Returns 0 on success, -1 if userinfo is not well-formed. */ | | * Returns 0 on success, -1 if userinfo is not well-formed. */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evhttp_uri_set_userinfo(struct evhttp_uri *uri, const char *userinfo); | | int evhttp_uri_set_userinfo(struct evhttp_uri *uri, const char *userinfo); |
/** Set the host of an evhttp_uri, or clear the host if host==NULL. | | /** Set the host of an evhttp_uri, or clear the host if host==NULL. |
* Returns 0 on success, -1 if host is not well-formed. */ | | * Returns 0 on success, -1 if host is not well-formed. */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evhttp_uri_set_host(struct evhttp_uri *uri, const char *host); | | int evhttp_uri_set_host(struct evhttp_uri *uri, const char *host); |
| | /** Set the unix socket of an evhttp_uri, or clear the unix socket if unixs |
| | ocket==NULL. |
| | * Returns 0 on success, -1 if unixsocket is not well-formed */ |
| | EVENT2_EXPORT_SYMBOL |
| | int evhttp_uri_set_unixsocket(struct evhttp_uri *uri, const char *unixsocke |
| | t); |
| | |
/** Set the port of an evhttp_uri, or clear the port if port==-1. | | /** Set the port of an evhttp_uri, or clear the port if port==-1. |
* Returns 0 on success, -1 if port is not well-formed. */ | | * Returns 0 on success, -1 if port is not well-formed. */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evhttp_uri_set_port(struct evhttp_uri *uri, int port); | | int evhttp_uri_set_port(struct evhttp_uri *uri, int port); |
/** Set the path of an evhttp_uri, or clear the path if path==NULL. | | /** Set the path of an evhttp_uri, or clear the path if path==NULL. |
* Returns 0 on success, -1 if path is not well-formed. */ | | * Returns 0 on success, -1 if path is not well-formed. */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evhttp_uri_set_path(struct evhttp_uri *uri, const char *path); | | int evhttp_uri_set_path(struct evhttp_uri *uri, const char *path); |
/** Set the query of an evhttp_uri, or clear the query if query==NULL. | | /** Set the query of an evhttp_uri, or clear the query if query==NULL. |
* The query should not include a leading "?". | | * The query should not include a leading "?". |
| | |
skipping to change at line 1157 ¶ | | skipping to change at line 1429 ¶ |
* do so by passing this flag to evhttp_uri_parse_with_flags. | | * do so by passing this flag to evhttp_uri_parse_with_flags. |
* | | * |
* Currently, these changes are: | | * Currently, these changes are: |
* <ul> | | * <ul> |
* <li> Nonconformant URIs are allowed to contain otherwise unreasonable | | * <li> Nonconformant URIs are allowed to contain otherwise unreasonable |
* characters in their path, query, and fragment components. | | * characters in their path, query, and fragment components. |
* </ul> | | * </ul> |
*/ | | */ |
#define EVHTTP_URI_NONCONFORMANT 0x01 | | #define EVHTTP_URI_NONCONFORMANT 0x01 |
| | |
| | /** |
| | * Strip brackets from the IPv6 address and only for evhttp_uri_get_host(), |
| | * evhttp_uri_join() returns the host with brackets. |
| | * |
| | * Thus you can use host part of the evhttp_uri for getaddrinfo(). |
| | * |
| | * @see also _EVHTTP_URI_HOST_HAS_BRACKETS |
| | */ |
| | #define EVHTTP_URI_HOST_STRIP_BRACKETS 0x04 |
| | |
| | /** |
| | * Parse unix domain socket URIs, for example: |
| | * |
| | * http://unix:/run/control.sock:/controller |
| | */ |
| | #define EVHTTP_URI_UNIX_SOCKET 0x08 |
| | |
/** Alias for evhttp_uri_parse_with_flags(source_uri, 0) */ | | /** Alias for evhttp_uri_parse_with_flags(source_uri, 0) */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct evhttp_uri *evhttp_uri_parse(const char *source_uri); | | struct evhttp_uri *evhttp_uri_parse(const char *source_uri); |
| | |
/** | | /** |
* Free all memory allocated for a parsed uri. Only use this for URIs | | * Free all memory allocated for a parsed uri. Only use this for URIs |
* generated by evhttp_uri_parse. | | * generated by evhttp_uri_parse. |
* | | * |
* @param uri container with parsed data | | * @param uri container with parsed data |
* @see evhttp_uri_parse() | | * @see evhttp_uri_parse() |
| | |
End of changes. 39 change blocks. |
26 lines changed or deleted | | 339 lines changed or added |
|
http_compat.h (2.1.12) | | http_compat.h (current) |
| | |
skipping to change at line 32 ¶ | | skipping to change at line 32 ¶ |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ | | */ |
#ifndef EVENT2_HTTP_COMPAT_H_INCLUDED_ | | #ifndef EVENT2_HTTP_COMPAT_H_INCLUDED_ |
#define EVENT2_HTTP_COMPAT_H_INCLUDED_ | | #define EVENT2_HTTP_COMPAT_H_INCLUDED_ |
| | |
/** @file event2/http_compat.h | | /** @file event2/http_compat.h |
| | |
Potentially non-threadsafe versions of the functions in http.h: provided | | @brief Potentially non-threadsafe versions of the functions in http.h: pr
ovided |
only for backwards compatibility. | | only for backwards compatibility. |
| | |
*/ | | */ |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
extern "C" { | | extern "C" { |
#endif | | #endif |
| | |
#include <event2/event-config.h> | | #include <event2/event-config.h> |
#ifdef EVENT__HAVE_SYS_TYPES_H | | #ifdef EVENT__HAVE_SYS_TYPES_H |
| | |
End of changes. 1 change blocks. |
1 lines changed or deleted | | 1 lines changed or added |
|
http_struct.h (2.1.12) | | http_struct.h (current) |
| | |
skipping to change at line 132 ¶ | | skipping to change at line 132 ¶ |
void (*chunk_cb)(struct evhttp_request *, void *); | | void (*chunk_cb)(struct evhttp_request *, void *); |
| | |
/* | | /* |
* Callback added for forked-daapd so they can collect ICY | | * Callback added for forked-daapd so they can collect ICY |
* (shoutcast) metadata from the http header. If return | | * (shoutcast) metadata from the http header. If return |
* int is negative the connection will be closed. | | * int is negative the connection will be closed. |
*/ | | */ |
int (*header_cb)(struct evhttp_request *, void *); | | int (*header_cb)(struct evhttp_request *, void *); |
| | |
/* | | /* |
* Error callback - called when error is occured. | | * Error callback - called when error is occurred. |
* @see evhttp_request_error for error types. | | * @see evhttp_request_error for error types. |
* | | * |
* @see evhttp_request_set_error_cb() | | * @see evhttp_request_set_error_cb() |
*/ | | */ |
void (*error_cb)(enum evhttp_request_error, void *); | | void (*error_cb)(enum evhttp_request_error, void *); |
| | |
/* | | /* |
* Send complete callback - called when the request is actually | | * Send complete callback - called when the request is actually |
* sent and completed. | | * sent and completed. |
*/ | | */ |
| | |
End of changes. 1 change blocks. |
1 lines changed or deleted | | 1 lines changed or added |
|
listener.h (2.1.12) | | listener.h (current) |
| | |
skipping to change at line 41 ¶ | | skipping to change at line 41 ¶ |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
extern "C" { | | extern "C" { |
#endif | | #endif |
| | |
#include <event2/event.h> | | #include <event2/event.h> |
| | |
struct sockaddr; | | struct sockaddr; |
struct evconnlistener; | | struct evconnlistener; |
| | |
/** | | /**@file event2/listener.h |
A callback that we invoke when a listener has a new connection. | | |
| | @brief A callback that we invoke when a listener has a new connection. |
| | |
@param listener The evconnlistener | | @param listener The evconnlistener |
@param fd The new file descriptor | | @param fd The new file descriptor |
@param addr The source address of the connection | | @param addr The source address of the connection |
@param socklen The length of addr | | @param socklen The length of addr |
@param user_arg the pointer passed to evconnlistener_new() | | @param user_arg the pointer passed to evconnlistener_new() |
*/ | | */ |
typedef void (*evconnlistener_cb)(struct evconnlistener *, evutil_socket_t,
struct sockaddr *, int socklen, void *); | | typedef void (*evconnlistener_cb)(struct evconnlistener *, evutil_socket_t,
struct sockaddr *, int socklen, void *); |
| | |
/** | | /** |
| | |
skipping to change at line 109 ¶ | | skipping to change at line 110 ¶ |
#define LEV_OPT_REUSEABLE_PORT (1u<<7) | | #define LEV_OPT_REUSEABLE_PORT (1u<<7) |
/** Flag: Indicates that the listener wants to work only in IPv6 socket. | | /** Flag: Indicates that the listener wants to work only in IPv6 socket. |
* | | * |
* According to RFC3493 and most Linux distributions, default value is to | | * According to RFC3493 and most Linux distributions, default value is to |
* work in IPv4-mapped mode. If there is a requirement to bind same port | | * work in IPv4-mapped mode. If there is a requirement to bind same port |
* on same ip addresses but different handlers for both IPv4 and IPv6, | | * on same ip addresses but different handlers for both IPv4 and IPv6, |
* it is required to set IPV6_V6ONLY socket option to be sure that the | | * it is required to set IPV6_V6ONLY socket option to be sure that the |
* code works as expected without affected by bindv6only sysctl setting in | | * code works as expected without affected by bindv6only sysctl setting in |
* system. | | * system. |
* | | * |
* This socket option also supported by Windows. | | * This socket option on Windows is instead enabled by default. |
*/ | | */ |
#define LEV_OPT_BIND_IPV6ONLY (1u<<8) | | #define LEV_OPT_BIND_IPV6ONLY (1u<<8) |
| | /** Flag: Indicates that the listener wants to work only in both IPv4 and |
| | * IPv6 socket. |
| | * |
| | * This flag exists as copmlement to LEV_OPT_BIND_IPV6ONLY to account for |
| | * the different default behaviour on Windows so that the code can |
| | * explicitly request the socket to support both modes without having |
| | * to rely on the default option. |
| | */ |
| | #define LEV_OPT_BIND_IPV4_AND_IPV6 (1u<<9) |
| | |
/** | | /** |
Allocate a new evconnlistener object to listen for incoming TCP connecti
ons | | Allocate a new evconnlistener object to listen for incoming TCP connecti
ons |
on a given file descriptor. | | on a given file descriptor. |
| | |
@param base The event base to associate the listener with. | | @param base The event base to associate the listener with. |
@param cb A callback to be invoked when a new connection arrives. If th
e | | @param cb A callback to be invoked when a new connection arrives. If th
e |
callback is NULL, the listener will be treated as disabled until the | | callback is NULL, the listener will be treated as disabled until the |
callback is set. | | callback is set. |
@param ptr A user-supplied pointer to give to the callback. | | @param ptr A user-supplied pointer to give to the callback. |
| | |
skipping to change at line 146 ¶ | | skipping to change at line 156 ¶ |
on a given address. | | on a given address. |
| | |
@param base The event base to associate the listener with. | | @param base The event base to associate the listener with. |
@param cb A callback to be invoked when a new connection arrives. If the | | @param cb A callback to be invoked when a new connection arrives. If the |
callback is NULL, the listener will be treated as disabled until the | | callback is NULL, the listener will be treated as disabled until the |
callback is set. | | callback is set. |
@param ptr A user-supplied pointer to give to the callback. | | @param ptr A user-supplied pointer to give to the callback. |
@param flags Any number of LEV_OPT_* flags | | @param flags Any number of LEV_OPT_* flags |
@param backlog Passed to the listen() call to determine the length of th
e | | @param backlog Passed to the listen() call to determine the length of th
e |
acceptable connection backlog. Set to -1 for a reasonable default. | | acceptable connection backlog. Set to -1 for a reasonable default. |
@param addr The address to listen for connections on. | | @param sa The address to listen for connections on. |
@param socklen The length of the address. | | @param socklen The length of the address. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
struct evconnlistener *evconnlistener_new_bind(struct event_base *base, | | struct evconnlistener *evconnlistener_new_bind(struct event_base *base, |
evconnlistener_cb cb, void *ptr, unsigned flags, int backlog, | | evconnlistener_cb cb, void *ptr, unsigned flags, int backlog, |
const struct sockaddr *sa, int socklen); | | const struct sockaddr *sa, int socklen); |
/** | | /** |
Disable and deallocate an evconnlistener. | | Disable and deallocate an evconnlistener. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
| | |
End of changes. 4 change blocks. |
4 lines changed or deleted | | 14 lines changed or added |
|
rpc.h (2.1.12) | | rpc.h (current) |
| | |
skipping to change at line 38 ¶ | | skipping to change at line 38 ¶ |
#define EVENT2_RPC_H_INCLUDED_ | | #define EVENT2_RPC_H_INCLUDED_ |
| | |
/* For int types. */ | | /* For int types. */ |
#include <event2/util.h> | | #include <event2/util.h> |
#include <event2/visibility.h> | | #include <event2/visibility.h> |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
extern "C" { | | extern "C" { |
#endif | | #endif |
| | |
/** @file rpc.h | | /** @file event2/rpc.h |
* | | * |
* This header files provides basic support for an RPC server and client. | | * @brief This header files provides basic support for an RPC server and cl
ient. |
* | | * |
* To support RPCs in a server, every supported RPC command needs to be | | * To support RPCs in a server, every supported RPC command needs to be |
* defined and registered. | | * defined and registered. |
* | | * |
* EVRPC_HEADER(SendCommand, Request, Reply); | | * EVRPC_HEADER(SendCommand, Request, Reply); |
* | | * |
* SendCommand is the name of the RPC command. | | * SendCommand is the name of the RPC command. |
* Request is the name of a structure generated by event_rpcgen.py. | | * Request is the name of a structure generated by event_rpcgen.py. |
* It contains all parameters relating to the SendCommand RPC. The | | * It contains all parameters relating to the SendCommand RPC. The |
* server needs to fill in the Reply structure. | | * server needs to fill in the Reply structure. |
| | |
skipping to change at line 172 ¶ | | skipping to change at line 172 ¶ |
struct evrpc_hook_meta; | | struct evrpc_hook_meta; |
| | |
/** Creates the definitions and prototypes for an RPC | | /** Creates the definitions and prototypes for an RPC |
* | | * |
* You need to use EVRPC_HEADER to create structures and function prototype
s | | * You need to use EVRPC_HEADER to create structures and function prototype
s |
* needed by the server and client implementation. The structures have to
be | | * needed by the server and client implementation. The structures have to
be |
* defined in an .rpc file and converted to source code via event_rpcgen.py | | * defined in an .rpc file and converted to source code via event_rpcgen.py |
* | | * |
* @param rpcname the name of the RPC | | * @param rpcname the name of the RPC |
* @param reqstruct the name of the RPC request structure | | * @param reqstruct the name of the RPC request structure |
* @param replystruct the name of the RPC reply structure | | * @param rplystruct the name of the RPC reply structure |
* @see EVRPC_GENERATE() | | * @see EVRPC_GENERATE() |
*/ | | */ |
#define EVRPC_HEADER(rpcname, reqstruct, rplystruct) \ | | #define EVRPC_HEADER(rpcname, reqstruct, rplystruct) \ |
EVRPC_STRUCT(rpcname) { \ | | EVRPC_STRUCT(rpcname) { \ |
struct evrpc_hook_meta *hook_meta; \ | | struct evrpc_hook_meta *hook_meta; \ |
struct reqstruct* request; \ | | struct reqstruct* request; \ |
struct rplystruct* reply; \ | | struct rplystruct* reply; \ |
struct evrpc* rpc; \ | | struct evrpc* rpc; \ |
struct evhttp_request* http_req; \ | | struct evhttp_request* http_req; \ |
struct evbuffer* rpc_data; \ | | struct evbuffer* rpc_data; \ |
| | |
skipping to change at line 211 ¶ | | skipping to change at line 211 ¶ |
void (*cb)(struct evrpc_status *, void *, void *, void *), | | void (*cb)(struct evrpc_status *, void *, void *, void *), |
void *cbarg); | | void *cbarg); |
| | |
/** Creates a context structure that contains rpc specific information. | | /** Creates a context structure that contains rpc specific information. |
* | | * |
* EVRPC_MAKE_CTX is used to populate a RPC specific context that | | * EVRPC_MAKE_CTX is used to populate a RPC specific context that |
* contains information about marshaling the RPC data types. | | * contains information about marshaling the RPC data types. |
* | | * |
* @param rpcname the name of the RPC | | * @param rpcname the name of the RPC |
* @param reqstruct the name of the RPC request structure | | * @param reqstruct the name of the RPC request structure |
* @param replystruct the name of the RPC reply structure | | * @param rplystruct the name of the RPC reply structure |
* @param pool the evrpc_pool over which to make the request | | * @param pool the evrpc_pool over which to make the request |
* @param request a pointer to the RPC request structure object | | * @param request a pointer to the RPC request structure object |
* @param reply a pointer to the RPC reply structure object | | * @param reply a pointer to the RPC reply structure object |
* @param cb the callback function to call when the RPC has completed | | * @param cb the callback function to call when the RPC has completed |
* @param cbarg the argument to supply to the callback | | * @param cbarg the argument to supply to the callback |
*/ | | */ |
#define EVRPC_MAKE_CTX(rpcname, reqstruct, rplystruct, \ | | #define EVRPC_MAKE_CTX(rpcname, reqstruct, rplystruct, \ |
pool, request, reply, cb, cbarg) \ | | pool, request, reply, cb, cbarg) \ |
evrpc_make_request_ctx(pool, request, reply, \ | | evrpc_make_request_ctx(pool, request, reply, \ |
#rpcname, \ | | #rpcname, \ |
| | |
skipping to change at line 235 ¶ | | skipping to change at line 235 ¶ |
(void (*)(struct evrpc_status *, void *, void *, void *))cb, \ | | (void (*)(struct evrpc_status *, void *, void *, void *))cb, \ |
cbarg) | | cbarg) |
| | |
/** Generates the code for receiving and sending an RPC message | | /** Generates the code for receiving and sending an RPC message |
* | | * |
* EVRPC_GENERATE is used to create the code corresponding to sending | | * EVRPC_GENERATE is used to create the code corresponding to sending |
* and receiving a particular RPC message | | * and receiving a particular RPC message |
* | | * |
* @param rpcname the name of the RPC | | * @param rpcname the name of the RPC |
* @param reqstruct the name of the RPC request structure | | * @param reqstruct the name of the RPC request structure |
* @param replystruct the name of the RPC reply structure | | * @param rplystruct the name of the RPC reply structure |
* @see EVRPC_HEADER() | | * @see EVRPC_HEADER() |
*/ | | */ |
#define EVRPC_GENERATE(rpcname, reqstruct, rplystruct) \ | | #define EVRPC_GENERATE(rpcname, reqstruct, rplystruct) \ |
int evrpc_send_request_##rpcname(struct evrpc_pool *pool, \ | | int evrpc_send_request_##rpcname(struct evrpc_pool *pool, \ |
struct reqstruct *request, struct rplystruct *reply, \ | | struct reqstruct *request, struct rplystruct *reply, \ |
void (*cb)(struct evrpc_status *, \ | | void (*cb)(struct evrpc_status *, \ |
struct reqstruct *, struct rplystruct *, void *cbarg), \ | | struct reqstruct *, struct rplystruct *, void *cbarg), \ |
void *cbarg) { \ | | void *cbarg) { \ |
return evrpc_send_request_generic(pool, request, reply, \ | | return evrpc_send_request_generic(pool, request, reply, \ |
(void (*)(struct evrpc_status *, void *, void *, void *))cb, \ | | (void (*)(struct evrpc_status *, void *, void *, void *))cb, \ |
| | |
End of changes. 5 change blocks. |
5 lines changed or deleted | | 5 lines changed or added |
|
rpc_compat.h (2.1.12) | | rpc_compat.h (current) |
| | |
skipping to change at line 32 ¶ | | skipping to change at line 32 ¶ |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ | | */ |
#ifndef EVENT2_RPC_COMPAT_H_INCLUDED_ | | #ifndef EVENT2_RPC_COMPAT_H_INCLUDED_ |
#define EVENT2_RPC_COMPAT_H_INCLUDED_ | | #define EVENT2_RPC_COMPAT_H_INCLUDED_ |
| | |
/** @file event2/rpc_compat.h | | /** @file event2/rpc_compat.h |
| | |
Deprecated versions of the functions in rpc.h: provided only for | | @brief Deprecated versions of the functions in rpc.h: provided only for |
backwards compatibility. | | backwards compatibility. |
| | |
*/ | | */ |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
extern "C" { | | extern "C" { |
#endif | | #endif |
| | |
/** backwards compatible accessors that work only with gcc */ | | /** backwards compatible accessors that work only with gcc */ |
#if defined(__GNUC__) && !defined(__STRICT_ANSI__) | | #if defined(__GNUC__) && !defined(__STRICT_ANSI__) |
| | |
End of changes. 1 change blocks. |
1 lines changed or deleted | | 1 lines changed or added |
|
tag.h (2.1.12) | | tag.h (current) |
| | |
skipping to change at line 32 ¶ | | skipping to change at line 32 ¶ |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ | | */ |
#ifndef EVENT2_TAG_H_INCLUDED_ | | #ifndef EVENT2_TAG_H_INCLUDED_ |
#define EVENT2_TAG_H_INCLUDED_ | | #define EVENT2_TAG_H_INCLUDED_ |
| | |
/** @file event2/tag.h | | /** @file event2/tag.h |
| | |
Helper functions for reading and writing tagged data onto buffers. | | @brief Helper functions for reading and writing tagged data onto buffers. |
| | |
*/ | | */ |
| | |
#include <event2/visibility.h> | | #include <event2/visibility.h> |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
extern "C" { | | extern "C" { |
#endif | | #endif |
| | |
#include <event2/event-config.h> | | #include <event2/event-config.h> |
| | |
End of changes. 1 change blocks. |
1 lines changed or deleted | | 1 lines changed or added |
|
tag_compat.h (2.1.12) | | tag_compat.h (current) |
| | |
skipping to change at line 32 ¶ | | skipping to change at line 32 ¶ |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ | | */ |
#ifndef EVENT2_TAG_COMPAT_H_INCLUDED_ | | #ifndef EVENT2_TAG_COMPAT_H_INCLUDED_ |
#define EVENT2_TAG_COMPAT_H_INCLUDED_ | | #define EVENT2_TAG_COMPAT_H_INCLUDED_ |
| | |
/** @file event2/tag_compat.h | | /** @file event2/tag_compat.h |
| | |
Obsolete/deprecated functions from tag.h; provided only for backwards | | @brief Obsolete/deprecated functions from tag.h; provided only for back
wards |
compatibility. | | compatibility. |
*/ | | */ |
| | |
/** | | /** |
@name Misnamed functions | | @name Misnamed functions |
| | |
@deprecated These macros are deprecated because their names don't follow | | @deprecated These macros are deprecated because their names don't follow |
Libevent's naming conventions. Use evtag_encode_int and | | Libevent's naming conventions. Use evtag_encode_int and |
evtag_encode_int64 instead. | | evtag_encode_int64 instead. |
| | |
| | |
End of changes. 1 change blocks. |
1 lines changed or deleted | | 1 lines changed or added |
|
thread.h (2.1.12) | | thread.h (current) |
| | |
skipping to change at line 31 ¶ | | skipping to change at line 31 ¶ |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ | | */ |
#ifndef EVENT2_THREAD_H_INCLUDED_ | | #ifndef EVENT2_THREAD_H_INCLUDED_ |
#define EVENT2_THREAD_H_INCLUDED_ | | #define EVENT2_THREAD_H_INCLUDED_ |
| | |
/** @file event2/thread.h | | /** @file event2/thread.h |
| | |
Functions for multi-threaded applications using Libevent. | | @brief Functions for multi-threaded applications using Libevent. |
| | |
When using a multi-threaded application in which multiple threads | | When using a multi-threaded application in which multiple threads |
add and delete events from a single event base, Libevent needs to | | add and delete events from a single event base, Libevent needs to |
lock its data structures. | | lock its data structures. |
| | |
Like the memory-management function hooks, all of the threading functions | | Like the memory-management function hooks, all of the threading functions |
_must_ be set up before an event_base is created if you want the base to | | _must_ be set up before an event_base is created if you want the base to |
use them. | | use them. |
| | |
Most programs will either be using Windows threads or Posix threads. You | | Most programs will either be using Windows threads or Posix threads. You |
can configure Libevent to use one of these event_use_windows_threads() or | | can configure Libevent to use one of these evthread_use_windows_threads() |
event_use_pthreads() respectively. If you're using another threading | | or |
| | evthread_use_pthreads() respectively. If you're using another threading |
library, you'll need to configure threading functions manually using | | library, you'll need to configure threading functions manually using |
evthread_set_lock_callbacks() and evthread_set_condition_callbacks(). | | evthread_set_lock_callbacks() and evthread_set_condition_callbacks(). |
| | |
*/ | | */ |
| | |
#include <event2/visibility.h> | | #include <event2/visibility.h> |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
extern "C" { | | extern "C" { |
#endif | | #endif |
| | |
skipping to change at line 187 ¶ | | skipping to change at line 187 ¶ |
* probably shouldn't call this function; instead, use | | * probably shouldn't call this function; instead, use |
* evthread_use_windows_threads() or evthread_use_pthreads() if you can. | | * evthread_use_windows_threads() or evthread_use_pthreads() if you can. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evthread_set_condition_callbacks( | | int evthread_set_condition_callbacks( |
const struct evthread_condition_callbacks *); | | const struct evthread_condition_callbacks *); |
| | |
/** | | /** |
Sets the function for determining the thread id. | | Sets the function for determining the thread id. |
| | |
@param base the event base for which to set the id function | | |
@param id_fn the identify function Libevent should invoke to | | @param id_fn the identify function Libevent should invoke to |
determine the identity of a thread. | | determine the identity of a thread. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evthread_set_id_callback( | | void evthread_set_id_callback( |
unsigned long (*id_fn)(void)); | | unsigned long (*id_fn)(void)); |
| | |
#if (defined(_WIN32) && !defined(EVENT__DISABLE_THREAD_SUPPORT)) || defined
(EVENT_IN_DOXYGEN_) | | #if (defined(_WIN32) && !defined(EVENT__DISABLE_THREAD_SUPPORT)) || defined
(EVENT_IN_DOXYGEN_) |
/** Sets up Libevent for use with Windows builtin locking and thread ID | | /** Sets up Libevent for use with Windows builtin locking and thread ID |
functions. Unavailable if Libevent is not built for Windows. | | functions. Unavailable if Libevent is not built for Windows. |
| | |
skipping to change at line 216 ¶ | | skipping to change at line 215 ¶ |
#endif | | #endif |
| | |
#if defined(EVENT__HAVE_PTHREADS) || defined(EVENT_IN_DOXYGEN_) | | #if defined(EVENT__HAVE_PTHREADS) || defined(EVENT_IN_DOXYGEN_) |
/** Sets up Libevent for use with Pthreads locking and thread ID functions. | | /** Sets up Libevent for use with Pthreads locking and thread ID functions. |
Unavailable if Libevent is not build for use with pthreads. Requires | | Unavailable if Libevent is not build for use with pthreads. Requires |
libraries to link against Libevent_pthreads as well as Libevent. | | libraries to link against Libevent_pthreads as well as Libevent. |
| | |
@return 0 on success, -1 on failure. */ | | @return 0 on success, -1 on failure. */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evthread_use_pthreads(void); | | int evthread_use_pthreads(void); |
| | |
| | /* Enables posix mutex priority inheritance |
| | * (if pthread_mutexattr_setprotocol() is supported). */ |
| | #define EVTHREAD_PTHREAD_PRIO_INHERIT 0x01 |
| | |
| | /** |
| | * Sets up Libevent for use with Pthreads locking and thread ID functions. |
| | * Use evthread_use_pthreads_with_flags() to use Pthreads locking, taking t |
| | he |
| | * specified flags under consideration. |
| | * |
| | * @param flags the flags to apply when setting up Pthreads locking. @see E |
| | VTHREAD_PTHREAD_* |
| | * @return 0 on success, -1 on failure. |
| | **/ |
| | EVENT2_EXPORT_SYMBOL |
| | int evthread_use_pthreads_with_flags(int flags); |
| | |
/** Defined if Libevent was built with support for evthread_use_pthreads()
*/ | | /** Defined if Libevent was built with support for evthread_use_pthreads()
*/ |
#define EVTHREAD_USE_PTHREADS_IMPLEMENTED 1 | | #define EVTHREAD_USE_PTHREADS_IMPLEMENTED 1 |
| | |
#endif | | #endif |
| | |
/** Enable debugging wrappers around the current lock callbacks. If Libeve
nt | | /** Enable debugging wrappers around the current lock callbacks. If Libeve
nt |
* makes one of several common locking errors, exit with an assertion failu
re. | | * makes one of several common locking errors, exit with an assertion failu
re. |
* | | * |
* If you're going to call this function, you must do so before any locks a
re | | * If you're going to call this function, you must do so before any locks a
re |
* allocated. | | * allocated. |
| | |
End of changes. 4 change blocks. |
4 lines changed or deleted | | 22 lines changed or added |
|
util.h (2.1.12) | | util.h (current) |
| | |
skipping to change at line 31 ¶ | | skipping to change at line 31 ¶ |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ | | */ |
#ifndef EVENT2_UTIL_H_INCLUDED_ | | #ifndef EVENT2_UTIL_H_INCLUDED_ |
#define EVENT2_UTIL_H_INCLUDED_ | | #define EVENT2_UTIL_H_INCLUDED_ |
| | |
/** @file event2/util.h | | /** @file event2/util.h |
| | |
Common convenience functions for cross-platform portability and | | @brief Common convenience functions for cross-platform portability and |
related socket manipulations. | | related socket manipulations. |
| | |
*/ | | */ |
#include <event2/visibility.h> | | #include <event2/visibility.h> |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
extern "C" { | | extern "C" { |
#endif | | #endif |
| | |
#include <event2/event-config.h> | | #include <event2/event-config.h> |
| | |
skipping to change at line 431 ¶ | | skipping to change at line 431 ¶ |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evutil_make_listen_socket_reuseable_port(evutil_socket_t sock); | | int evutil_make_listen_socket_reuseable_port(evutil_socket_t sock); |
| | |
/** Set ipv6 only bind socket option to make listener work only in ipv6 soc
kets. | | /** Set ipv6 only bind socket option to make listener work only in ipv6 soc
kets. |
| | |
According to RFC3493 and most Linux distributions, default value for th
e | | According to RFC3493 and most Linux distributions, default value for th
e |
sockets is to work in IPv4-mapped mode. In IPv4-mapped mode, it is not
possible | | sockets is to work in IPv4-mapped mode. In IPv4-mapped mode, it is not
possible |
to bind same port from different IPv4 and IPv6 handlers. | | to bind same port from different IPv4 and IPv6 handlers. |
| | |
| | On Windows the default value is instead to only work in IPv6 mode. |
| | |
@param sock The socket to make in ipv6only working mode | | @param sock The socket to make in ipv6only working mode |
@return 0 on success, -1 on failure | | @return 0 on success, -1 on failure |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evutil_make_listen_socket_ipv6only(evutil_socket_t sock); | | int evutil_make_listen_socket_ipv6only(evutil_socket_t sock); |
| | |
| | /** Set ipv6 only bind socket option to make listener work in both ipv4 and |
| | ipv6 sockets. |
| | |
| | According to RFC3493 and most Linux distributions, default value for th |
| | e |
| | sockets is to work in IPv4-mapped mode. In IPv4-mapped mode, it is not |
| | possible |
| | to bind same port from different IPv4 and IPv6 handlers. |
| | |
| | On Windows the default value is instead to only work in IPv6 mode. |
| | |
| | @param sock The socket to make in ipv6only working mode |
| | @return 0 on success, -1 on failure |
| | */ |
| | EVENT2_EXPORT_SYMBOL |
| | int evutil_make_listen_socket_not_ipv6only(evutil_socket_t sock); |
| | |
/** Do platform-specific operations as needed to close a socket upon a | | /** Do platform-specific operations as needed to close a socket upon a |
successful execution of one of the exec*() functions. | | successful execution of one of the exec*() functions. |
| | |
@param sock The socket to be closed | | @param sock The socket to be closed |
@return 0 on success, -1 on failure | | @return 0 on success, -1 on failure |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evutil_make_socket_closeonexec(evutil_socket_t sock); | | int evutil_make_socket_closeonexec(evutil_socket_t sock); |
| | |
/** Do the platform-specific call needed to close a socket returned from | | /** Do the platform-specific call needed to close a socket returned from |
| | |
skipping to change at line 820 ¶ | | skipping to change at line 836 ¶ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evutil_freeaddrinfo(struct evutil_addrinfo *ai); | | void evutil_freeaddrinfo(struct evutil_addrinfo *ai); |
| | |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
const char *evutil_gai_strerror(int err); | | const char *evutil_gai_strerror(int err); |
| | |
/** Generate n bytes of secure pseudorandom data, and store them in buf. | | /** Generate n bytes of secure pseudorandom data, and store them in buf. |
* | | * |
* Current versions of Libevent use an ARC4-based random number generator, | | * Current versions of Libevent use an ARC4-based random number generator, |
* seeded using the platform's entropy source (/dev/urandom on Unix-like | | * seeded using the platform's entropy source (/dev/urandom on Unix-like |
* systems; CryptGenRandom on Windows). This is not actually as secure as
it | | * systems; BCryptGenRandom on Windows). This is not actually as secure as
it |
* should be: ARC4 is a pretty lousy cipher, and the current implementation | | * should be: ARC4 is a pretty lousy cipher, and the current implementation |
* provides only rudimentary prediction- and backtracking-resistance. Don'
t | | * provides only rudimentary prediction- and backtracking-resistance. Don'
t |
* use this for serious cryptographic applications. | | * use this for serious cryptographic applications. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evutil_secure_rng_get_bytes(void *buf, size_t n); | | void evutil_secure_rng_get_bytes(void *buf, size_t n); |
| | |
/** | | /** |
* Seed the secure random number generator if needed, and return 0 on | | * Seed the secure random number generator if needed, and return 0 on |
* success or -1 on failure. | | * success or -1 on failure. |
| | |
skipping to change at line 863 ¶ | | skipping to change at line 879 ¶ |
* | | * |
* (This string will _NOT_ be copied internally. Do not free it while any | | * (This string will _NOT_ be copied internally. Do not free it while any |
* user of the secure RNG might be running. Don't pass anything other than
a | | * user of the secure RNG might be running. Don't pass anything other than
a |
* real /dev/...random device file here, or you might lose security.) | | * real /dev/...random device file here, or you might lose security.) |
* | | * |
* This API is unstable, and might change in a future libevent version. | | * This API is unstable, and might change in a future libevent version. |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
int evutil_secure_rng_set_urandom_device_file(char *fname); | | int evutil_secure_rng_set_urandom_device_file(char *fname); |
| | |
#if !defined(EVENT__HAVE_ARC4RANDOM) || defined(EVENT__HAVE_ARC4RANDOM_ADDR
ANDOM) | | |
/** Seed the random number generator with extra random bytes. | | /** Seed the random number generator with extra random bytes. |
| | |
You should almost never need to call this function; it should be | | You should almost never need to call this function; it should be |
sufficient to invoke evutil_secure_rng_init(), or let Libevent take | | sufficient to invoke evutil_secure_rng_init(), or let Libevent take |
care of calling evutil_secure_rng_init() on its own. | | care of calling evutil_secure_rng_init() on its own. |
| | |
If you call this function as a _replacement_ for the regular | | If you call this function as a _replacement_ for the regular |
entropy sources, then you need to be sure that your input | | entropy sources, then you need to be sure that your input |
contains a fairly large amount of strong entropy. Doing so is | | contains a fairly large amount of strong entropy. Doing so is |
notoriously hard: most people who try get it wrong. Watch out! | | notoriously hard: most people who try get it wrong. Watch out! |
| | |
| | This function does nothing when the system provides arc4random() |
| | function because it will provide proper entropy. |
| | |
@param dat a buffer full of a strong source of random numbers | | @param dat a buffer full of a strong source of random numbers |
@param datlen the number of bytes to read from datlen | | @param datlen the number of bytes to read from datlen |
*/ | | */ |
EVENT2_EXPORT_SYMBOL | | EVENT2_EXPORT_SYMBOL |
void evutil_secure_rng_add_bytes(const char *dat, size_t datlen); | | void evutil_secure_rng_add_bytes(const char *dat, size_t datlen); |
#endif | | |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
} | | } |
#endif | | #endif |
| | |
#endif /* EVENT1_EVUTIL_H_INCLUDED_ */ | | #endif /* EVENT1_EVUTIL_H_INCLUDED_ */ |
| | |
End of changes. 7 change blocks. |
4 lines changed or deleted | | 24 lines changed or added |
|
visibility.h (2.1.12) | | visibility.h (current) |
| | |
skipping to change at line 36 ¶ | | skipping to change at line 36 ¶ |
*/ | | */ |
#ifndef EVENT2_VISIBILITY_H_INCLUDED_ | | #ifndef EVENT2_VISIBILITY_H_INCLUDED_ |
#define EVENT2_VISIBILITY_H_INCLUDED_ | | #define EVENT2_VISIBILITY_H_INCLUDED_ |
| | |
#include <event2/event-config.h> | | #include <event2/event-config.h> |
| | |
#if defined(event_shared_EXPORTS) || \ | | #if defined(event_shared_EXPORTS) || \ |
defined(event_extra_shared_EXPORTS) || \ | | defined(event_extra_shared_EXPORTS) || \ |
defined(event_core_shared_EXPORTS) || \ | | defined(event_core_shared_EXPORTS) || \ |
defined(event_pthreads_shared_EXPORTS) || \ | | defined(event_pthreads_shared_EXPORTS) || \ |
defined(event_openssl_shared_EXPORTS) | | defined(event_openssl_shared_EXPORTS) || \ |
| | defined(event_mbedtls_shared_EXPORTS) |
| | |
# if defined (__SUNPRO_C) && (__SUNPRO_C >= 0x550) | | # if defined (__SUNPRO_C) && (__SUNPRO_C >= 0x550) |
# define EVENT2_EXPORT_SYMBOL __global | | # define EVENT2_EXPORT_SYMBOL __global |
# elif defined __GNUC__ | | # elif defined __GNUC__ |
# define EVENT2_EXPORT_SYMBOL __attribute__ ((visibility("default"))) | | # define EVENT2_EXPORT_SYMBOL __attribute__ ((visibility("default"))) |
# elif defined(_MSC_VER) | | # elif defined(_MSC_VER) |
# define EVENT2_EXPORT_SYMBOL __declspec(dllexport) | | # define EVENT2_EXPORT_SYMBOL __declspec(dllexport) |
# else | | # else |
# define EVENT2_EXPORT_SYMBOL /* unknown compiler */ | | # define EVENT2_EXPORT_SYMBOL /* unknown compiler */ |
# endif | | # endif |
| | |
End of changes. 1 change blocks. |
1 lines changed or deleted | | 2 lines changed or added |
|
|