strm_t *t = (strm_t *)mt;
if (t->sock != -1 || open_socket(t, addr->any.sa_family)) {
- if (bind(t->sock, &addr->any, addrlen) == 0)
+ if (bind(t->sock, &addr->any, addrlen) == 0) {
+ mrp_debug("transport %p bound", mt);
return TRUE;
+ }
}
+ mrp_debug("failed to bind transport %p", mt);
return FALSE;
}
if (t->sock != -1 && t->iow != NULL && t->evt.connection != NULL) {
if (listen(t->sock, backlog) == 0) {
+ mrp_debug("transport %p listening", mt);
t->listened = TRUE;
return TRUE;
}
}
+ mrp_debug("transport %p failed to listen", mt);
return FALSE;
}
events = MRP_IO_EVENT_IN | MRP_IO_EVENT_HUP;
t->iow = mrp_add_io_watch(t->ml, t->sock, events, strm_recv_cb, t);
- if (t->iow != NULL)
+ if (t->iow != NULL) {
+ mrp_debug("accepted connection on transport %p/%p", mlt, mt);
return TRUE;
+ }
else {
close(t->sock);
t->sock = -1;
else
mrp_fragbuf_destroy(t->buf);
+ mrp_debug("failed to accept connection on transport %p/%p", mlt, mt);
return FALSE;
}
{
strm_t *t = (strm_t *)mt;
+ mrp_debug("closing transport %p", mt);
+
mrp_del_io_watch(t->iow);
t->iow = NULL;
MRP_UNUSED(w);
+ mrp_debug("event 0x%x for transport %p", events, t);
+
if (events & MRP_IO_EVENT_IN) {
if (MRP_UNLIKELY(mt->listened != 0)) {
MRP_TRANSPORT_BUSY(mt, {
+ mrp_debug("connection event on transport %p", mt);
mt->evt.connection(mt, mt->user_data);
});
if (buf == NULL) {
error = ENOMEM;
fatal_error:
+ mrp_debug("transport %p closed with error %d", mt, error);
closed:
strm_disconnect(mt);
}
if (events & MRP_IO_EVENT_HUP) {
+ mrp_debug("transport %p closed by peer", mt);
error = 0;
goto closed;
}
t->sock = socket(addr->any.sa_family, SOCK_STREAM, 0);
if (t->sock < 0)
- return FALSE;
+ goto fail;
if (connect(t->sock, &addr->any, addrlen) == 0) {
t->buf = mrp_fragbuf_create(TRUE, 0);
nb = 1;
fcntl(t->sock, F_SETFL, O_NONBLOCK, nb);
+ mrp_debug("connected transport %p", mt);
+
return TRUE;
}
t->sock = -1;
}
+ fail:
+ mrp_debug("failed to connect transport %p", mt);
+
return FALSE;
}
mrp_fragbuf_destroy(t->buf);
t->buf = NULL;
+ mrp_debug("disconnected transport %p", mt);
+
return TRUE;
}
else