libevent upgrade from 1.3e to 1.4.5-stable

Antonio Huete Jimenez tuxillo at quantumachine.net
Wed Jul 2 14:37:13 PDT 2008


Hi

Here's a working patch for upgrading libevent. It compiles just fine and 
I'm currently using in one of my DFBSD machines.

http://leaf.dragonflybsd.org/~tuxillo/patches/libevent145.diff

Bug fixes can be found in:

http://levent.svn.sourceforge.net/viewvc/levent/branches/patches-1.4/libevent/ChangeLog?revision=885&view=markup

I don't have the oportunity of checking with bluetooth because I don't 
have any device, so if someone has devices and time, please check.

Joerg,
About ABI changes, there are some functions that have been removed, and 
some parameters slightly changed:

evdns.h
-----------------------------
x Removed function -int evdns_resolv_conf_parse(int flags, const char *);
x Change in function
        -int evdns_server_request_add_reply(struct evdns_server_request 
*req, int section, const char *name, int type, int class, int ttl, int 
datalen, int is_name, const char *data);
        +int evdns_server_request_add_reply(struct evdns_server_request 
*req, int section, const char *name, int type, int dns_class, int ttl, 
int datalen, int is_name, const char *data);

event-internal.h
--------------------
x Deleted RB_HEAD(event_tree, event) timetree;
event.h
--------------------
x Deleted check and structure if not defined:
        #ifndef RB_ENTRY
        #define _EVENT_DEFINED_RBENTRY
        #define RB_ENTRY(type) 
        \
        struct { 
        \
               struct type *rbe_left;          /* left element */ 
        \
               struct type *rbe_right;         /* right element */ 
        \
               struct type *rbe_parent;        /* parent element */ 
        \
               int rbe_color;                  /* node color */ 
        \
        }
        #endif /* !RB_ENTRY */

x In event structure deleted RB_ENTRY (event) ev_timeout_node;
x Deleted void *event_init(void); and replaced with struct event_base 
*event_init(void);
x Replacement:
        int bufferevent_write(struct bufferevent *bufev, void *data, 
size_t size);
        int bufferevent_write(struct bufferevent *bufev, const void 
*data, size_t size);

x Parameter change:
        void evtag_marshal(struct evbuffer *evbuf, uint8_t tag, const 
void *data, uint32_t len);
        void evtag_marshal(struct evbuffer *evbuf, ev_uint32_t tag, 
const void *data, ev_uint32_t len);

        void encode_int(struct evbuffer *evbuf, uint32_t number);
        void encode_int(struct evbuffer *evbuf, ev_uint32_t number);
        void evtag_marshal_int(struct evbuffer *evbuf, uint8_t tag, 
uint32_t integer);
        void evtag_marshal_int(struct evbuffer *evbuf, ev_uint32_t tag, 
ev_uint32_t integer);

        void evtag_marshal_string(struct evbuffer *buf, uint8_t tag, 
const char *string);
        void evtag_marshal_string(struct evbuffer *buf, ev_uint32_t 
tag, const char *string);

        void evtag_marshal_timeval(struct evbuffer *evbuf, uint8_t tag, 
struct timeval *tv);
        void evtag_marshal_timeval(struct evbuffer *evbuf, ev_uint32_t 
tag, struct timeval *tv);

        int evtag_unmarshal(struct evbuffer *src, uint8_t *ptag, struct 
evbuffer *dst);
        int evtag_unmarshal(struct evbuffer *src, ev_uint32_t *ptag, 
struct evbuffer *dst);

        int evtag_peek(struct evbuffer *evbuf, uint8_t *ptag);
        int evtag_peek(struct evbuffer *evbuf, ev_uint32_t *ptag);
        int evtag_peek_length(struct evbuffer *evbuf, uint32_t *plength);
        int evtag_peek_length(struct evbuffer *evbuf, ev_uint32_t 
*plength);

I'll be missing something, for sure, but basically this is what I have 
been able to see.

Samuel Greear (sjg), I invite you to give your opinion here just like at 
IRC ;-)

--
* Please, consider your environment before printing this email
Cheers
tuxillo at EFNet in #dragonflybsd




More information about the Submit mailing list