projects
/
cascardo
/
rnetproxy.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Changed header protection macro name.
[cascardo/rnetproxy.git]
/
hcconn.c
diff --git
a/hcconn.c
b/hcconn.c
index
aac7cc1
..
0ba378a
100644
(file)
--- a/
hcconn.c
+++ b/
hcconn.c
@@
-132,7
+132,7
@@
hc_conn_watch (GIOChannel *channel, GIOCondition cond, gpointer data)
return TRUE;
}
return TRUE;
}
-void
+int
hc_conn_set_driver_channel (HCConn *conn, int fd)
{
struct channel_layer *layer = g_slice_new (struct channel_layer);
hc_conn_set_driver_channel (HCConn *conn, int fd)
{
struct channel_layer *layer = g_slice_new (struct channel_layer);
@@
-148,6
+148,7
@@
hc_conn_set_driver_channel (HCConn *conn, int fd)
if (conn->func)
conn->func (conn, HC_EVENT_CONNECT, conn->data);
fcntl (fd, F_SETFL, fcntl (fd, F_GETFL, 0) | O_NONBLOCK);
if (conn->func)
conn->func (conn, HC_EVENT_CONNECT, conn->data);
fcntl (fd, F_SETFL, fcntl (fd, F_GETFL, 0) | O_NONBLOCK);
+ return 0;
}
}
@@
-173,7
+174,9
@@
hc_conn_set_callback (HCConn *conn, HCClientFunc func, gpointer data)
ssize_t
hc_conn_read (HCConn *conn, char *buffer, size_t len)
{
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
}
void
@@
-182,12
+185,18
@@
hc_conn_write (HCConn *conn, char *buffer, size_t len)
/* TODO: Do buffering or something like that */
/* Do we really need to? */
/* In case of error, we should do something */
/* 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)
{
}
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);
}
g_slice_free (HCConn, conn);
}