mirror of https://git.kore.io/kore.git
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:
parent
3fdc1113c3
commit
ed9a34ce95
|
@ -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 *);
|
||||
|
|
42
src/net.c
42
src/net.c
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue