cleanup net layer a bit.

this change was long overdue and finally gets rid of the legacy crap
we had laying around to appease openssl's read/write functions.
This commit is contained in:
Joris Vink 2017-03-16 09:54:46 +01:00
parent 3fdc1113c3
commit ed9a34ce95
2 changed files with 27 additions and 27 deletions

View File

@ -180,8 +180,8 @@ struct connection {
int (*handle)(struct connection *);
void (*disconnect)(struct connection *);
int (*read)(struct connection *, int *);
int (*write)(struct connection *, int, int *);
int (*read)(struct connection *, size_t *);
int (*write)(struct connection *, size_t, size_t *);
u_int8_t addrtype;
union {
@ -667,10 +667,10 @@ void net_cleanup(void);
int net_send(struct connection *);
int net_send_flush(struct connection *);
int net_recv_flush(struct connection *);
int net_read(struct connection *, int *);
int net_read_tls(struct connection *, int *);
int net_write(struct connection *, int, int *);
int net_write_tls(struct connection *, int, int *);
int net_read(struct connection *, size_t *);
int net_read_tls(struct connection *, size_t *);
int net_write(struct connection *, size_t, size_t *);
int net_write_tls(struct connection *, size_t, size_t *);
void net_recv_reset(struct connection *, size_t,
int (*cb)(struct netbuf *));
void net_remove_netbuf(struct netbuf_head *, struct netbuf *);

View File

@ -174,8 +174,7 @@ net_recv_expand(struct connection *c, size_t len, int (*cb)(struct netbuf *))
int
net_send(struct connection *c)
{
int r;
u_int32_t len, smin;
size_t r, len, smin;
c->snb = TAILQ_FIRST(&(c->send_queue));
if (c->snb->b_len != 0) {
@ -187,10 +186,7 @@ net_send(struct connection *c)
if (!(c->flags & CONN_WRITE_POSSIBLE))
return (KORE_RESULT_OK);
kore_debug("net_send(%p/%d/%d bytes), progress with %d",
c->snb, c->snb->s_off, c->snb->b_len, r);
c->snb->s_off += (size_t)r;
c->snb->s_off += r;
c->snb->flags &= ~NETBUF_MUST_RESEND;
}
@ -223,7 +219,7 @@ net_send_flush(struct connection *c)
int
net_recv_flush(struct connection *c)
{
int r;
size_t r;
kore_debug("net_recv_flush(%p)", c);
@ -236,10 +232,7 @@ net_recv_flush(struct connection *c)
if (!(c->flags & CONN_READ_POSSIBLE))
break;
kore_debug("net_recv(%ld/%ld bytes), progress with %d",
c->rnb->s_off, c->rnb->b_len, r);
c->rnb->s_off += (size_t)r;
c->rnb->s_off += r;
if (c->rnb->s_off == c->rnb->b_len ||
(c->rnb->flags & NETBUF_CALL_CB_ALWAYS)) {
r = c->rnb->cb(c->rnb);
@ -277,10 +270,13 @@ net_remove_netbuf(struct netbuf_head *list, struct netbuf *nb)
#if !defined(KORE_NO_TLS)
int
net_write_tls(struct connection *c, int len, int *written)
net_write_tls(struct connection *c, size_t len, size_t *written)
{
int r;
if (len > INT_MAX)
return (KORE_RESULT_ERROR);
ERR_clear_error();
r = SSL_write(c->ssl, (c->snb->buf + c->snb->s_off), len);
if (c->tls_reneg > 1)
@ -313,12 +309,13 @@ net_write_tls(struct connection *c, int len, int *written)
}
}
*written = r;
*written = (size_t)r;
return (KORE_RESULT_OK);
}
int
net_read_tls(struct connection *c, int *bytes)
net_read_tls(struct connection *c, size_t *bytes)
{
int r;
@ -355,15 +352,16 @@ net_read_tls(struct connection *c, int *bytes)
}
}
*bytes = r;
*bytes = (size_t)r;
return (KORE_RESULT_OK);
}
#endif
int
net_write(struct connection *c, int len, int *written)
net_write(struct connection *c, size_t len, size_t *written)
{
int r;
ssize_t r;
r = write(c->fd, (c->snb->buf + c->snb->s_off), len);
if (r <= -1) {
@ -380,14 +378,15 @@ net_write(struct connection *c, int len, int *written)
}
}
*written = r;
*written = (size_t)r;
return (KORE_RESULT_OK);
}
int
net_read(struct connection *c, int *bytes)
net_read(struct connection *c, size_t *bytes)
{
int r;
ssize_t r;
r = read(c->fd, (c->rnb->buf + c->rnb->s_off),
(c->rnb->b_len - c->rnb->s_off));
@ -405,7 +404,8 @@ net_read(struct connection *c, int *bytes)
}
}
*bytes = r;
*bytes = (size_t)r;
return (KORE_RESULT_OK);
}