*/
struct evhttp_connection *
-evhttp_connection_base_new(struct event_base *base,
- const char *address, unsigned short port)
+evhttp_connection_new(const char *address, unsigned short port)
{
- struct evhttp_connection *evcon = evhttp_connection_new(address, port);
- if (evcon == NULL)
- return (NULL);
-
- if (base != NULL)
- evhttp_connection_set_base(evcon, base);
-
- return (evcon);
+ return (evhttp_connection_base_new(NULL, address, port));
}
struct evhttp_connection *
-evhttp_connection_new(const char *address, unsigned short port)
+evhttp_connection_base_new(struct event_base *base,
+ const char *address, unsigned short port)
{
struct evhttp_connection *evcon = NULL;
evcon->state = EVCON_DISCONNECTED;
TAILQ_INIT(&evcon->requests);
+ if (base != NULL) {
+ evcon->base = base;
+ bufferevent_base_set(base, evcon->bufev);
+ }
+
return (evcon);
error:
return (NULL);
}
-void evhttp_connection_set_base(struct evhttp_connection *evcon,
+void
+evhttp_connection_set_base(struct evhttp_connection *evcon,
struct event_base *base)
{
assert(evcon->base == NULL);
char *hostname = NULL, *portname = NULL;
name_from_addr(sa, salen, &hostname, &portname);
- if (hostname==NULL || portname==NULL) {
+ if (hostname == NULL || portname == NULL) {
if (hostname) mm_free(hostname);
if (portname) mm_free(portname);
return (NULL);
__func__, hostname, portname, fd));
/* we need a connection object to put the http request on */
- evcon = evhttp_connection_new(hostname, atoi(portname));
+ evcon = evhttp_connection_base_new(
+ http->base, hostname, atoi(portname));
mm_free(hostname);
mm_free(portname);
if (evcon == NULL)
return (NULL);
- /* associate the base if we have one */
- if (http->base != NULL)
- evhttp_connection_set_base(evcon, http->base);
-
evcon->flags |= EVHTTP_CON_INCOMING;
evcon->state = EVCON_CONNECTED;