fix: TCP network issues

This commit is contained in:
ngn
2024-08-08 02:30:51 +03:00
parent d7dd578fc4
commit 65a9d7610b
14 changed files with 139 additions and 49 deletions

@ -3,6 +3,7 @@
#include "mptp.h"
#include "pool.h"
#include <signal.h>
#include <stdbool.h>
typedef struct lm_ctx {
@ -95,9 +96,9 @@ bool lm_ctx_check(
lm_ctx_t *ctx, lm_entry_t *entry, lm_ctx_check_callback_t callback, void *data); // checks a single package
size_t lm_ctx_sync(lm_ctx_t *ctx, bool do_update, lm_ctx_sync_callback_t callback, void *data); // syncs all the pools
void lm_ctx_ping(lm_ctx_t *ctx, lm_ctx_ping_callback_t callback, void *data); // pings all the pools
bool lm_ctx_serve(
lm_ctx_t *ctx, char *addr, uint8_t threads, lm_ctx_serve_callback_t callback, void *data); // serves all the pools
//
bool lm_ctx_serve(lm_ctx_t *ctx, char *addr, uint8_t threads, __sighandler_t handler, lm_ctx_serve_callback_t callback,
void *data); // serves all the pools
/* ##############################
## temp directory fucntions ##
############################## */

@ -107,7 +107,7 @@ typedef struct lm_mptp_header {
uint16_t flags;
uint8_t host_size;
uint8_t data_size;
} lm_mptp_header_t;
} __attribute__((packed)) lm_mptp_header_t;
typedef struct lm_mptp {
lm_mptp_header_t header;
@ -117,10 +117,10 @@ typedef struct lm_mptp {
typedef bool (*lm_mptp_transfer_callback_t)(char *path, size_t current, size_t total, void *data);
#define MPTP_FLAGS_VERSION(m) (((m)->header.flags & 0xFF00) >> 8)
#define MPTP_FLAGS_TYPE(m) (((m)->header.flags & 0x0080) >> 1)
#define MPTP_FLAGS_CODE(m) (((m)->header.flags & 0x0070) >> 4)
#define MPTP_FLAGS_LAST(m) (((m)->header.flags & 0x0008) >> 3)
#define MPTP_FLAGS_VERSION(m) (((m)->header.flags >> 8) & 0xFF)
#define MPTP_FLAGS_TYPE(m) (((m)->header.flags >> 7) & 0x01)
#define MPTP_FLAGS_CODE(m) (((m)->header.flags >> 3) & 0x0F)
#define MPTP_FLAGS_LAST(m) (((m)->header.flags >> 2) & 0x01)
#define MPTP_IS_REQUEST(m) (MPTP_FLAGS_TYPE(m) == 0)
#define MPTP_IS_LAST(m) (MPTP_FLAGS_LAST(m) == 1)
@ -131,6 +131,7 @@ bool lm_mptp_set_host(lm_mptp_t *packet, char *host);
bool lm_mptp_get_host(lm_mptp_t *packet, char *host);
bool lm_mptp_get_data(lm_mptp_t *packet, char *data);
int lm_mptp_socket(char *addr, uint16_t port, struct sockaddr *saddr);
bool lm_mptp_socket_opts(int sock);
void lm_mptp_copy(lm_mptp_t *dst, lm_mptp_t *src);
bool lm_mptp_verify(lm_mptp_t *packet);
void lm_mptp_close(int sock);

@ -8,6 +8,9 @@
#include <stdio.h>
#define _(x) gettext(x)
#define BINARY(b) \
(b & 128 ? '1' : '0'), (b & 64 ? '1' : '0'), (b & 32 ? '1' : '0'), (b & 16 ? '1' : '0'), (b & 8 ? '1' : '0'), \
(b & 4 ? '1' : '0'), (b & 2 ? '1' : '0'), (b & 1 ? '1' : '0')
bool contains(char *str, char s);
bool eq(char *s1, char *s2);
@ -33,6 +36,8 @@ bool package_version_valid(char *name);
bool package_name_valid(char *name);
void pdebug(const char *func, const char *fmt, ...);
void pdebug_binary(char *data, size_t len);
bool parse_host(char *addr, char *host, uint16_t *port);
bool copy_blocks(struct archive *w, struct archive *r);
bool extract_archive(char *dst, char *src);