Commit f6420c8a authored by Andreas Schmidt's avatar Andreas Schmidt
Browse files

Fix SIGSEGV and reformat code.

parent d3a1dda6
Loading
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -240,7 +240,6 @@ bool PrrtSocket_bind(PrrtSocket *s, const char *ipAddress, const uint16_t port)
              EXIT_SUCCESS,
              "Cannot create data receiving thread.");
    }

    s->isBound = true;

    return true;
@@ -386,7 +385,7 @@ int32_t PrrtSocket_receive_ordered_timedwait(PrrtSocket *s, void *buf_ptr, prrtT
int PrrtSocket_interrupt(PrrtSocket *s) {
    atomic_store_explicit(&s->closing, true, memory_order_release);

    if (s->packetDeliveryStore) {
    if (s->packetDeliveryStore != NULL) {
        PrrtPacketDeliveryStore_interrupt(s->packetDeliveryStore);
    }

+59 −65
Original line number Diff line number Diff line
@@ -88,8 +88,7 @@ static inline void _close(socket_t conn)

typedef PrrtSocket *socket_t;

static inline socket_t _open_sender(struct arguments *args)
{
static inline socket_t _open_sender(struct arguments *args) {
    PrrtSocket *s = PrrtSocket_create(true, 10 * 1000 * 1000);
    assert(s != NULL && "Socket create failed.");

@@ -103,8 +102,7 @@ static inline socket_t _open_sender(struct arguments *args)
    return s;
}

static inline socket_t _open_receiver(struct arguments *args)
{
static inline socket_t _open_receiver(struct arguments *args) {
    socket_t s = PrrtSocket_create(false, HALF_TIMESTAMP - 1);
    assert(s != NULL && "Could not create socket.");

@@ -116,26 +114,22 @@ static inline socket_t _open_receiver(struct arguments *args)
    return s;
}

static inline void _send(socket_t conn, const char *buf, size_t size)
{
    PrrtSocket_send(conn, (unsigned char *) buf, sizeof(buf));
static inline void _send(socket_t conn, const char *buf, size_t size) {
    PrrtSocket_send(conn, (unsigned char *) buf, size);
}

static inline ssize_t _recv(socket_t conn, char *buf, size_t size)
{
static inline ssize_t _recv(socket_t conn, char *buf, size_t size) {
    return PrrtSocket_receive_asap_wait(conn, buf);
}

static inline void _close(socket_t conn)
{
static inline void _close(socket_t conn) {
    PrrtSocket_close(conn);
    free(conn);
}

#endif

static inline socket_t _open(bool sender, struct arguments *args)
{
static inline socket_t _open(bool sender, struct arguments *args) {
    if (sender)
        return _open_sender(args);
    else
+43 −42
Original line number Diff line number Diff line
@@ -5,8 +5,6 @@
#include "util/dbg.h"
#include "proto/socket.h"

PrrtSocket *s = NULL;
static volatile int keepRunning = true;

static char doc[] = "PRRT Receiver";

@@ -18,8 +16,7 @@ static struct argp_option options[] = {
        {0}
};

struct arguments
{
struct arguments {
    uint16_t port;
    uint16_t local_port;
    uint16_t rounds;
@@ -28,15 +25,19 @@ struct arguments
    bool thread_pinning;
};

#include "time-protocol.h"

socket_t s = NULL;
static volatile int keepRunning = true;


static char args_doc[] = "";

static error_t parse_opt (int key, char *arg, struct argp_state *state)
{
static error_t parse_opt(int key, char *arg, struct argp_state *state) {
    struct arguments *arguments = state->input;

    char *pEnd;
    switch (key)
    {
    switch (key) {
        case 'p':
            arguments->port = (uint16_t) strtol(arg, &pEnd, 10);
            break;
@@ -61,19 +62,18 @@ static error_t parse_opt (int key, char *arg, struct argp_state *state)

void intHandler(int dummy) {
    keepRunning = false;
    if (s != NULL) {
        PrrtSocket_interrupt(s);
    }
}

static long long timedelta(struct timespec *t1, struct timespec *t2)
{
static long long timedelta(struct timespec *t1, struct timespec *t2) {
    long long delta = t1->tv_sec - t2->tv_sec;
    delta *= 1000000000;
    delta += t1->tv_nsec - t2->tv_nsec;
    return delta;
}

#include "time-protocol.h"

int main(int argc, char **argv) {
    signal(SIGINT, intHandler);

@@ -106,10 +106,11 @@ int main(int argc, char **argv) {
    long long int *rtts = calloc((size_t) rounds, sizeof(long long int));
    long long int *rtts2 = calloc((size_t) rounds, sizeof(long long int));
    assert(rtts && rtts2);
	socket_t s = _open(false, &arguments);
    s = _open(false, &arguments);

    uint32_t i = 0;
    while (i < rounds && keepRunning) {
        usleep_nano(1000);
        char buffer[MAX_PAYLOAD_LENGTH + 1];
        debug(DEBUG_RECEIVER, "About to receive.");
        int n = _recv(s, buffer, sizeof(buffer));