summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/server/main.c4
-rw-r--r--src/server/net.c11
2 files changed, 8 insertions, 7 deletions
diff --git a/src/server/main.c b/src/server/main.c
index ec096c1..5c0628a 100644
--- a/src/server/main.c
+++ b/src/server/main.c
@@ -113,8 +113,8 @@ static void draw_busy(const char * const data)
memcpy(&sequence, data + 2, sizeof(sequence));
memcpy(&thermistor_data, data + 6, sizeof(thermistor_data));
temp = digest_temp(thermistor_data);
- memcpy(&thermistor_data, data + 10, sizeof(thermistor_data));
- memcpy(&voltage, data + 12, sizeof(voltage));
+ memcpy(&thermistor_data, data + 8, sizeof(thermistor_data));
+ memcpy(&voltage, data + 10, sizeof(voltage));
move(0, 0);
clrtoeol();
diff --git a/src/server/net.c b/src/server/net.c
index 5441be4..1325da0 100644
--- a/src/server/net.c
+++ b/src/server/net.c
@@ -37,7 +37,7 @@ struct netstate_internal {
};
static int dolisten(char * const data, struct netstate_internal * const state);
-static int getpacket(char *data, size_t buffsize, int sock, struct sockaddr_in *sender);
+static int getpacket(char *data, size_t buffsize, ssize_t *recvbufsize, int sock, struct sockaddr_in *sender);
static int getlastdata_internal(char * const data, struct netstate * const state);
struct netstate *net_init(const unsigned int port)
@@ -78,11 +78,12 @@ static int dolisten(char * const data, struct netstate_internal * const state)
struct timespec wait = {0, 25 * 1000 * 1000};
struct sockaddr_in clientaddr;
size_t i = 10;
+ ssize_t recvbufsize;
int ret;
do {
clock_gettime(CLOCK_MONOTONIC_RAW, &now);
- ret = getpacket(buff, sizeof(buff), state->sock, &clientaddr);
+ ret = getpacket(buff, sizeof(buff), &recvbufsize, state->sock, &clientaddr);
switch (ret) {
case NET_OK:
@@ -95,7 +96,7 @@ static int dolisten(char * const data, struct netstate_internal * const state)
ret = NET_NONEWDATA; /* consume packet and lie about it */
continue;
} else {
- memcpy(data, buff, 14);
+ memcpy(data, buff, recvbufsize);
}
break;
default:
@@ -115,7 +116,7 @@ static int dolisten(char * const data, struct netstate_internal * const state)
return ret;
}
-static int getpacket(char *data, size_t buffsize, int sock, struct sockaddr_in *sender)
+static int getpacket(char *data, size_t buffsize, ssize_t *recvbufsize, int sock, struct sockaddr_in *sender)
{
static struct pollfd pfd = {0};
int ret;
@@ -133,7 +134,7 @@ static int getpacket(char *data, size_t buffsize, int sock, struct sockaddr_in *
} else if (!ret) {
ret = NET_NONEWDATA;
} else if (pfd.revents & POLLIN) {
- recvfrom(sock, data, buffsize, MSG_DONTWAIT, (struct sockaddr *) sender, &sender_len);
+ *recvbufsize = recvfrom(sock, data, buffsize, MSG_DONTWAIT, (struct sockaddr *) sender, &sender_len);
ret = NET_OK;
} else {
ret = NET_NONEWDATA;