gint fd;
guint64 time;
gboolean legacy;
- rspamd_inet_addr_t addr;
+ rspamd_inet_addr_t *addr;
struct rspamd_fuzzy_storage_ctx *ctx;
};
{
if (session->ctx->update_ips != NULL) {
if (radix_find_compressed_addr (session->ctx->update_ips,
- &session->addr) == RADIX_NO_VALUE) {
+ session->addr) == RADIX_NO_VALUE) {
return FALSE;
}
}
else {
r = rspamd_snprintf (buf, sizeof (buf), "ERR" CRLF);
}
- r = sendto (session->fd, buf, r, 0, &session->addr.addr.sa,
- session->addr.slen);
+ r = rspamd_inet_address_sendto (session->fd, buf, r, 0, session->addr);
}
else {
- r = sendto (session->fd, rep, sizeof (*rep), 0, &session->addr.addr.sa,
- session->addr.slen);
+ r = rspamd_inet_address_sendto (session->fd, rep, sizeof (*rep), 0,
+ session->addr);
}
if (r == -1) {
session.worker = worker;
session.fd = fd;
- session.addr.slen = sizeof (session.addr.addr);
session.ctx = worker->ctx;
session.time = (guint64)time (NULL);
/* Got some data */
if (what == EV_READ) {
- while ((r = recvfrom (fd, buf, sizeof (buf), 0,
- &session.addr.addr.sa, &session.addr.slen)) == -1) {
+ while ((r = rspamd_inet_address_recvfrom (fd, buf, sizeof (buf), 0,
+ &session.addr)) == -1) {
if (errno == EINTR) {
continue;
}
strerror (errno));
return;
}
- session.addr.af = session.addr.addr.sa.sa_family;
+
if ((guint)r == sizeof (struct legacy_fuzzy_cmd)) {
session.legacy = TRUE;
l = (struct legacy_fuzzy_cmd *)buf;
session.cmd = cmd;
rspamd_fuzzy_process_command (&session);
}
+
+ rspamd_inet_address_destroy (session.addr);
}
}