summaryrefslogtreecommitdiff
path: root/ecp/src/dir_srv.c
diff options
context:
space:
mode:
Diffstat (limited to 'ecp/src/dir_srv.c')
-rw-r--r--ecp/src/dir_srv.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/ecp/src/dir_srv.c b/ecp/src/dir_srv.c
index f5d1893..563326d 100644
--- a/ecp/src/dir_srv.c
+++ b/ecp/src/dir_srv.c
@@ -2,6 +2,7 @@
#include "cr.h"
#include "dir.h"
+#include "dir_srv.h"
#ifdef ECP_WITH_DIRSRV
@@ -21,28 +22,29 @@ ssize_t ecp_dir_handle_update(ECPConnection *conn, ecp_seq_t seq, unsigned char
} else {
return ECP_ERR;
}
-
}
-int ecp_dir_handle_req(ECPSocket *sock, ECPNetAddr *addr, ECPConnection *parent, unsigned char *msg, size_t msg_size, ECPPktMeta *pkt_meta, ECP2Buffer *bufs, ECPConnection **_conn) {
+ssize_t ecp_dir_handle_req(ECPSocket *sock, ECPNetAddr *addr, ECPConnection *parent, unsigned char *msg, size_t msg_size, ECPPktMeta *pkt_meta, ECP2Buffer *bufs, ECPConnection **_conn) {
ECPContext *ctx = sock->ctx;
ECPBuffer *packet = bufs->packet;
ECPBuffer *payload = bufs->payload;
ECPDirList *dir_online = ctx->dir_online;
- ssize_t _rv;
- int rv;
+ ssize_t rv;
+ int _rv;
+
+ if (msg_size < 0) return msg_size;
ecp_pld_set_type(payload->buffer, payload->size, ECP_MTYPE_DIR_REP);
msg = ecp_pld_get_buf(payload->buffer, payload->size);
msg_size = payload->size - (msg - payload->buffer);
- rv = ecp_dir_serialize(dir_online, msg, msg_size);
- if (rv) return rv;
+ _rv = ecp_dir_serialize(dir_online, msg, msg_size);
+ if (_rv) return _rv;
- _rv = ecp_pld_send_tr(sock, addr, parent, packet, pkt_meta, payload, ECP_SIZE_PLD(dir_online->count * ECP_SIZE_DIR_ITEM, ECP_MTYPE_DIR_REP), 0);
- if (_rv < 0) return _rv;
+ rv = ecp_pld_send_tr(sock, addr, parent, packet, pkt_meta, payload, ECP_SIZE_PLD(dir_online->count * ECP_SIZE_DIR_ITEM, ECP_MTYPE_DIR_REP), 0);
+ if (rv < 0) return rv;
- return ECP_OK;
+ return msg_size;
}
#endif /* ECP_WITH_DIRSRV */ \ No newline at end of file