4
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 <signal.h>
#include <sys/time.h> #include <sys/time.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/utsname.h>
#ifdef USE_OPENSSL #ifdef USE_OPENSSL
#include <openssl/sha.h> #include <openssl/sha.h>
@ -121,9 +122,9 @@
#endif #endif
#define MODE_CONSOLE (1 << 0) #define MODE_CONSOLE (1 << 0)
#define MODE_SYSLOG (1 << 1) #define MODE_SYSLOG (1 << 1)
#define MODE_DAEMON (1 << 2) #define MODE_DAEMON (1 << 2)
#define EVENT_LIST_LENGTH (4 + 2 + 4) #define EVENT_LIST_LENGTH (4 + 2 + 4)
@ -516,7 +517,7 @@ int main(int argc, const char* argv[])
struct RingBuffer ringBuffers[2]; struct RingBuffer ringBuffers[2];
memset(ringBuffers, 0, sizeof(ringBuffers)); memset(ringBuffers, 0, sizeof(ringBuffers));
uint32_t sequenceNumbers[] = uint32_t sequenceNumbers[] =
{ {
0, 0,
0, 0,
@ -524,6 +525,9 @@ int main(int argc, const char* argv[])
0 0
}; };
struct utsname systemName;
uname(&systemName);
// Main loop // Main loop
bool running = true; bool running = true;
@ -801,12 +805,16 @@ int main(int argc, const char* argv[])
data->number = htole32(repeaterNumber); data->number = htole32(repeaterNumber);
data->service = REWIND_SERVICE_CRONOS_AGENT; 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->type = htole16(REWIND_TYPE_KEEP_ALIVE);
outgoingBuffer->flags = htole16(REWIND_FLAG_DEFAULT_SET); outgoingBuffer->flags = htole16(REWIND_FLAG_DEFAULT_SET);
outgoingBuffer->number = htole32(++ sequenceNumbers[0]); outgoingBuffer->number = htole32(++ sequenceNumbers[0]);
outgoingBuffer->length = htobe16(length); outgoingBuffer->length = htole16(length);
length += sizeof(struct RewindData); length += sizeof(struct RewindData);
sendto(uplinkHandle, outgoingBuffer, length, 0, serverAddress->ai_addr, serverAddress->ai_addrlen); 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) if (buffer->marks == 0)
{ {
// Nothing to process // Nothing to process
return; return;
} }
if (buffer->delay > 0) if (buffer->delay > 0)
{ {
// Processing was postponed // Processing was postponed
buffer->delay --; buffer->delay --;
return; return;
} }
@ -35,7 +35,7 @@ void ProcessBuffer(struct RingBuffer* buffer, int handle, struct sockaddr_in* ad
if (buffer->marks & mark) if (buffer->marks & mark)
{ {
// Transmit scheduled data // Transmit scheduled data
struct BufferRecord* record = buffer->records + buffer->index; struct BufferRecord* record = buffer->records + buffer->index;
sendto(handle, record->data, record->length, 0, (struct sockaddr*)address, sizeof(struct sockaddr_in)); sendto(handle, record->data, record->length, 0, (struct sockaddr*)address, sizeof(struct sockaddr_in));
// Clear processing mark // Clear processing mark

View file

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

View file

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