ssize_t
hc_conn_read (HCConn *conn, char *buffer, size_t len)
{
- return conn->read (conn->layer, buffer, len);
+ if (conn->read)
+ return conn->read (conn->layer, buffer, len);
+ return 0;
}
void
/* TODO: Do buffering or something like that */
/* Do we really need to? */
/* In case of error, we should do something */
- conn->write (conn->layer, buffer, len);
+ if (conn->write)
+ conn->write (conn->layer, buffer, len);
}
void
hc_conn_close (HCConn *conn)
{
- conn->close (conn->layer);
+ if (conn->close)
+ conn->close (conn->layer);
+ conn->read = NULL;
+ conn->write = NULL;
+ conn->close = NULL;
+ conn->func = NULL;
g_slice_free (HCConn, conn);
}