Hi,
Can we get rid of those casts in relayd by not declaring a void
pointer for struct rsession? That way the compiler can do its job
and enforce correct types.
ok?
bluhm
Index: usr.sbin/relayd/relay.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/relayd/relay.c,v
retrieving revision 1.133
diff -u -p -r1.133 relay.c
--- usr.sbin/relayd/relay.c 12 Apr 2011 12:37:22 -0000 1.133
+++ usr.sbin/relayd/relay.c 22 Apr 2011 13:37:11 -0000
@@ -907,7 +907,7 @@ void
relay_write(struct bufferevent *bev, void *arg)
{
struct ctl_relay_event *cre = (struct ctl_relay_event *)arg;
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
if (gettimeofday(&con->se_tv_last, NULL) == -1)
con->se_done = 1;
if (con->se_done)
@@ -936,7 +936,7 @@ void
relay_read(struct bufferevent *bev, void *arg)
{
struct ctl_relay_event *cre = (struct ctl_relay_event *)arg;
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
struct evbuffer *src = EVBUFFER_INPUT(bev);
if (gettimeofday(&con->se_tv_last, NULL) == -1)
@@ -961,7 +961,7 @@ int
relay_resolve(struct ctl_relay_event *cre,
struct protonode *proot, struct protonode *pn)
{
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
char buf[IBUF_READ_SIZE], *ptr;
int id;
@@ -1028,7 +1028,7 @@ relay_resolve(struct ctl_relay_event *cr
char *
relay_expand_http(struct ctl_relay_event *cre, char *val, char *buf, size_t
len)
{
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
struct relay *rlay = (struct relay *)con->se_relay;
char ibuf[128];
@@ -1105,7 +1105,7 @@ int
relay_handle_http(struct ctl_relay_event *cre, struct protonode *proot,
struct protonode *pn, struct protonode *pk, int header)
{
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
char buf[IBUF_READ_SIZE], *ptr;
int ret = PN_DROP, mark = 0;
struct protonode *next;
@@ -1221,7 +1221,7 @@ void
relay_read_httpcontent(struct bufferevent *bev, void *arg)
{
struct ctl_relay_event *cre = (struct ctl_relay_event *)arg;
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
struct evbuffer *src = EVBUFFER_INPUT(bev);
size_t size;
@@ -1256,7 +1256,7 @@ void
relay_read_httpchunks(struct bufferevent *bev, void *arg)
{
struct ctl_relay_event *cre = (struct ctl_relay_event *)arg;
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
struct evbuffer *src = EVBUFFER_INPUT(bev);
char *line;
long lval;
@@ -1374,7 +1374,7 @@ void
relay_read_http(struct bufferevent *bev, void *arg)
{
struct ctl_relay_event *cre = (struct ctl_relay_event *)arg;
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
struct relay *rlay = (struct relay *)con->se_relay;
struct protocol *proto = rlay->rl_proto;
struct evbuffer *src = EVBUFFER_INPUT(bev);
@@ -1672,7 +1672,7 @@ static int
_relay_lookup_url(struct ctl_relay_event *cre, char *host, char *path,
char *query, enum digest_type type)
{
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
struct protonode *proot, *pnv, pkv;
char *val, *md = NULL;
int ret = PN_FAIL;
@@ -1726,7 +1726,7 @@ int
relay_lookup_url(struct ctl_relay_event *cre, const char *str,
enum digest_type type)
{
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
int i, j, dots;
char *hi[RELAY_MAXLOOKUPLEVELS], *p, *pp, *c, ch;
char ph[MAXHOSTNAMELEN];
@@ -1803,7 +1803,7 @@ relay_lookup_url(struct ctl_relay_event
int
relay_lookup_query(struct ctl_relay_event *cre)
{
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
struct protonode *proot, *pnv, pkv;
char *val, *ptr;
int ret;
@@ -1846,7 +1846,7 @@ relay_lookup_query(struct ctl_relay_even
int
relay_lookup_cookie(struct ctl_relay_event *cre, const char *str)
{
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
struct protonode *proot, *pnv, pkv;
char *val, *ptr;
int ret;
@@ -1982,7 +1982,7 @@ relay_close_http(struct rsession *con, u
int
relay_splicelen(struct ctl_relay_event *cre)
{
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
off_t len;
socklen_t optlen;
@@ -2002,7 +2002,7 @@ void
relay_error(struct bufferevent *bev, short error, void *arg)
{
struct ctl_relay_event *cre = (struct ctl_relay_event *)arg;
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
struct evbuffer *dst;
struct timeval tv, tv_now;
@@ -2061,8 +2061,7 @@ relay_accept(int fd, short sig, void *ar
if (fcntl(s, F_SETFL, O_NONBLOCK) == -1)
goto err;
- if ((con = (struct rsession *)
- calloc(1, sizeof(struct rsession))) == NULL)
+ if ((con = calloc(1, sizeof(*con))) == NULL)
goto err;
con->se_in.s = s;
@@ -2354,7 +2353,7 @@ relay_bindany(int fd, short event, void
return;
}
- if (relay_connect((struct rsession *)con) == -1)
+ if (relay_connect(con) == -1)
relay_close(con, "session failed");
}
@@ -2979,7 +2978,7 @@ relay_ssl_readcb(int fd, short event, vo
{
struct bufferevent *bufev = arg;
struct ctl_relay_event *cre = (struct ctl_relay_event *)bufev->cbarg;
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
struct relay *rlay = (struct relay *)con->se_relay;
int ret = 0, ssl_err = 0;
short what = EVBUFFER_READ;
@@ -3054,7 +3053,7 @@ relay_ssl_writecb(int fd, short event, v
{
struct bufferevent *bufev = arg;
struct ctl_relay_event *cre = (struct ctl_relay_event *)bufev->cbarg;
- struct rsession *con = (struct rsession *)cre->con;
+ struct rsession *con = cre->con;
struct relay *rlay = (struct relay *)con->se_relay;
int ret = 0, ssl_err;
short what = EVBUFFER_WRITE;
Index: usr.sbin/relayd/relayd.h
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/relayd/relayd.h,v
retrieving revision 1.143
diff -u -p -r1.143 relayd.h
--- usr.sbin/relayd/relayd.h 12 Apr 2011 12:37:22 -0000 1.143
+++ usr.sbin/relayd/relayd.h 22 Apr 2011 12:08:09 -0000
@@ -153,7 +153,7 @@ struct ctl_relay_event {
struct bufferevent *bev;
struct evbuffer *output;
struct ctl_relay_event *dst;
- void *con;
+ struct rsession *con;
SSL *ssl;
u_int8_t *nodes;
struct proto_tree *tree;