3
Fork 0

1. Fixed issue with length field of keep-alive packet

2. Extended amount of elements in RingBuffer, reduced item length
3. Added system information into keep-alive
4. Updated version number
This commit is contained in:
R3ABM Artem 2016-08-11 09:13:10 +03:00
parent 092c1c22d4
commit 8798385d40
4 changed files with 21 additions and 13 deletions

View file

@ -17,6 +17,7 @@
#include <signal.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <sys/utsname.h>
#ifdef USE_OPENSSL
#include <openssl/sha.h>
@ -121,9 +122,9 @@
#endif
#define MODE_CONSOLE (1 << 0)
#define MODE_SYSLOG (1 << 1)
#define MODE_DAEMON (1 << 2)
#define MODE_CONSOLE (1 << 0)
#define MODE_SYSLOG (1 << 1)
#define MODE_DAEMON (1 << 2)
#define EVENT_LIST_LENGTH (4 + 2 + 4)
@ -516,7 +517,7 @@ int main(int argc, const char* argv[])
struct RingBuffer ringBuffers[2];
memset(ringBuffers, 0, sizeof(ringBuffers));
uint32_t sequenceNumbers[] =
uint32_t sequenceNumbers[] =
{
0,
0,
@ -524,6 +525,9 @@ int main(int argc, const char* argv[])
0
};
struct utsname systemName;
uname(&systemName);
// Main loop
bool running = true;
@ -801,12 +805,16 @@ int main(int argc, const char* argv[])
data->number = htole32(repeaterNumber);
data->service = REWIND_SERVICE_CRONOS_AGENT;
length += sprintf(data->description, "CronosAgent " STRING(VERSION) " " BUILD);
length += sprintf(data->description,
"CronosAgent " STRING(VERSION) " %s %s " BUILD,
systemName.sysname,
systemName.machine);
outgoingBuffer->type = htole16(REWIND_TYPE_KEEP_ALIVE);
outgoingBuffer->flags = htole16(REWIND_FLAG_DEFAULT_SET);
outgoingBuffer->number = htole32(++ sequenceNumbers[0]);
outgoingBuffer->length = htobe16(length);
outgoingBuffer->length = htole16(length);
length += sizeof(struct RewindData);
sendto(uplinkHandle, outgoingBuffer, length, 0, serverAddress->ai_addr, serverAddress->ai_addrlen);

View file

@ -20,13 +20,13 @@ void ProcessBuffer(struct RingBuffer* buffer, int handle, struct sockaddr_in* ad
{
if (buffer->marks == 0)
{
// Nothing to process
return;
// Nothing to process
return;
}
if (buffer->delay > 0)
{
// Processing was postponed
// Processing was postponed
buffer->delay --;
return;
}
@ -35,7 +35,7 @@ void ProcessBuffer(struct RingBuffer* buffer, int handle, struct sockaddr_in* ad
if (buffer->marks & mark)
{
// Transmit scheduled data
// Transmit scheduled data
struct BufferRecord* record = buffer->records + buffer->index;
sendto(handle, record->data, record->length, 0, (struct sockaddr*)address, sizeof(struct sockaddr_in));
// Clear processing mark

View file

@ -10,8 +10,8 @@ extern "C"
{
#endif
#define DATA_LENGTH 256
#define BUFFER_LENGTH 8
#define DATA_LENGTH 48
#define BUFFER_LENGTH 16
struct BufferRecord
{

View file

@ -1 +1 @@
#define VERSION 20160806
#define VERSION 20160811