This commit is contained in:
2025-11-09 17:39:53 +01:00
parent 058b03ba53
commit 753aba9e63
4 changed files with 19 additions and 48 deletions
+6 -6
View File
@@ -1192,7 +1192,7 @@ static void process_event_for_write(TinyDFS *tdfs,
tdfs->operations[opidx].num_hashes = num_hashes; // TODO: overflow tdfs->operations[opidx].num_hashes = num_hashes; // TODO: overflow
tdfs->operations[opidx].hashes = sys_malloc(num_hashes * sizeof(SHA256)); tdfs->operations[opidx].hashes = sys_malloc(num_hashes * sizeof(SHA256));
if (tdfs->operations[opidx].hashes == NULL) { if (tdfs->operations[opidx].hashes == NULL) {
// TODO assert(0); // TODO
} }
tdfs->operations[opidx].uploads = NULL; tdfs->operations[opidx].uploads = NULL;
@@ -1531,31 +1531,31 @@ static void process_event_for_write(TinyDFS *tdfs,
// version // version
if (!binary_read(&reader, NULL, sizeof(uint16_t))) { if (!binary_read(&reader, NULL, sizeof(uint16_t))) {
// TODO assert(0); // TODO
return; return;
} }
uint16_t type; uint16_t type;
if (!binary_read(&reader, &type, sizeof(uint16_t))) { if (!binary_read(&reader, &type, sizeof(uint16_t))) {
// TODO assert(0); // TODO
return; return;
} }
// length // length
if (!binary_read(&reader, NULL, sizeof(uint32_t))) { if (!binary_read(&reader, NULL, sizeof(uint32_t))) {
// TODO assert(0); // TODO
return; return;
} }
SHA256 hash; SHA256 hash;
if (!binary_read(&reader, &hash, sizeof(hash))) { if (!binary_read(&reader, &hash, sizeof(hash))) {
// TODO assert(0); // TODO
return; return;
} }
// Check that there is nothing else to read // Check that there is nothing else to read
if (binary_read(&reader, NULL, 1)) { if (binary_read(&reader, NULL, 1)) {
// TODO assert(0); // TODO
return; return;
} }
+9 -39
View File
@@ -354,7 +354,7 @@ int spawn_simulated_process(char *args)
current_process = NULL; current_process = NULL;
if (num_polled < 0) { if (num_polled < 0) {
// TODO assert(0); // TODO
} }
if (timeout < 0) { if (timeout < 0) {
@@ -453,7 +453,7 @@ static void accept_queue_init(AcceptQueue *accept_queue, int size)
accept_queue->size = size; accept_queue->size = size;
accept_queue->items = malloc(size * sizeof(DescriptorHandle)); accept_queue->items = malloc(size * sizeof(DescriptorHandle));
if (accept_queue->items == NULL) { if (accept_queue->items == NULL) {
// TODO assert(0); // TODO
} }
} }
@@ -512,7 +512,7 @@ static void data_queue_init(DataQueue *queue, int size)
queue->size = size; queue->size = size;
queue->data = malloc(size * sizeof(char)); queue->data = malloc(size * sizeof(char));
if (queue->data == NULL) { if (queue->data == NULL) {
// TODO assert(0); // TODO
} }
} }
@@ -597,7 +597,7 @@ void update_simulation(void)
switch (desc->type) { switch (desc->type) {
case DESC_FILE: case DESC_FILE:
// TODO: error assert(0); // TODO: error
break; break;
case DESC_SOCKET: case DESC_SOCKET:
@@ -633,7 +633,7 @@ void update_simulation(void)
break; break;
case CONNECTION_FAILED: case CONNECTION_FAILED:
// TODO assert(0); // TODO
break; break;
} }
break; break;
@@ -1024,35 +1024,6 @@ int mock_getsockopt(SOCKET fd, int level, int optname, void *optval, socklen_t *
return -1; return -1;
} }
int mock_setsockopt(SOCKET fd, int level, int optname, void *optval, socklen_t optlen)
{
if (fd == INVALID_SOCKET || (int)fd < 0 || (int)fd >= MAX_DESCRIPTORS) {
SET_SOCKET_ERROR(SOCKET_ERROR_BADF); // Bad file descriptor
return -1;
}
int idx = (int) fd;
Descriptor *desc = &current_process->desc[idx];
if (desc->type == DESC_EMPTY) {
SET_SOCKET_ERROR(SOCKET_ERROR_BADF);
return -1;
}
// Only support SOL_SOCKET level for now
if (level != SOL_SOCKET) {
SET_SOCKET_ERROR(SOCKET_ERROR_PROTOOPT); // Protocol not available
return -1;
}
// Most socket options are ignored in simulation
// Just validate the call but don't actually apply settings
(void)optval;
(void)optlen;
(void)optname;
return 0; // Success (no-op)
}
int mock_recv(SOCKET fd, void *dst, int len, int flags) int mock_recv(SOCKET fd, void *dst, int len, int flags)
{ {
if (fd == INVALID_SOCKET || (int)fd < 0 || (int)fd >= MAX_DESCRIPTORS) { if (fd == INVALID_SOCKET || (int)fd < 0 || (int)fd >= MAX_DESCRIPTORS) {
@@ -1194,7 +1165,7 @@ static void close_desc(Descriptor *desc)
switch (desc->type) { switch (desc->type) {
case DESC_EMPTY: case DESC_EMPTY:
// TODO assert(0); // TODO
break; break;
case DESC_FILE: case DESC_FILE:
@@ -1214,7 +1185,6 @@ static void close_desc(Descriptor *desc)
break; break;
case DESC_CONNECTION_SOCKET: case DESC_CONNECTION_SOCKET:
data_queue_free(&desc->output_data);
switch (desc->connection_state) { switch (desc->connection_state) {
case CONNECTION_DELAYED: case CONNECTION_DELAYED:
@@ -1232,7 +1202,7 @@ static void close_desc(Descriptor *desc)
break; break;
case CONNECTION_ESTABLISHED: case CONNECTION_ESTABLISHED:
// TODO data_queue_free(&desc->output_data);
break; break;
case CONNECTION_FAILED: case CONNECTION_FAILED:
@@ -1251,7 +1221,7 @@ static void close_desc(Descriptor *desc)
int mock_closesocket(SOCKET fd) int mock_closesocket(SOCKET fd)
{ {
if (fd == INVALID_SOCKET) { if (fd == INVALID_SOCKET) {
// TODO // TODO: set error
return -1; return -1;
} }
int idx = (int) fd; int idx = (int) fd;
@@ -1260,7 +1230,7 @@ int mock_closesocket(SOCKET fd)
if (desc->type != DESC_SOCKET && if (desc->type != DESC_SOCKET &&
desc->type != DESC_LISTEN_SOCKET && desc->type != DESC_LISTEN_SOCKET &&
desc->type != DESC_CONNECTION_SOCKET) { desc->type != DESC_CONNECTION_SOCKET) {
// TODO // TODO: set error
return -1; return -1;
} }
-3
View File
@@ -50,7 +50,6 @@ int mock_bind(SOCKET fd, void *addr, size_t addr_len);
int mock_listen(SOCKET fd, int backlog); int mock_listen(SOCKET fd, int backlog);
SOCKET mock_accept(SOCKET fd, void *addr, socklen_t *addr_len); SOCKET mock_accept(SOCKET fd, void *addr, socklen_t *addr_len);
int mock_getsockopt(SOCKET fd, int level, int optname, void *optval, socklen_t *optlen); int mock_getsockopt(SOCKET fd, int level, int optname, void *optval, socklen_t *optlen);
int mock_setsockopt(SOCKET fd, int level, int optname, void *optval, socklen_t optlen);
int mock_recv(SOCKET fd, void *dst, int len, int flags); int mock_recv(SOCKET fd, void *dst, int len, int flags);
int mock_send(SOCKET fd, void *src, int len, int flags); int mock_send(SOCKET fd, void *src, int len, int flags);
int mock_connect(SOCKET fd, void *addr, size_t addr_len); int mock_connect(SOCKET fd, void *addr, size_t addr_len);
@@ -94,7 +93,6 @@ int mock_mkdir(char *path, mode_t mode);
#define sys_listen mock_listen #define sys_listen mock_listen
#define sys_accept mock_accept #define sys_accept mock_accept
#define sys_getsockopt mock_getsockopt #define sys_getsockopt mock_getsockopt
#define sys_setsockopt mock_setsockopt
#define sys_recv mock_recv #define sys_recv mock_recv
#define sys_send mock_send #define sys_send mock_send
#define sys_connect mock_connect #define sys_connect mock_connect
@@ -141,7 +139,6 @@ int mock_mkdir(char *path, mode_t mode);
#define sys_listen listen #define sys_listen listen
#define sys_accept accept #define sys_accept accept
#define sys_getsockopt getsockopt #define sys_getsockopt getsockopt
#define sys_setsockopt setsockopt
#define sys_recv recv #define sys_recv recv
#define sys_send send #define sys_send send
#define sys_connect connect #define sys_connect connect
+4
View File
@@ -330,6 +330,10 @@ int tcp_connect(TCP *tcp, Address addr, int tag, ByteQueue **output)
connecting = true; connecting = true;
} }
// Check that this tag wasn't already used
for (int i = 0; i < tcp->num_conns; i++)
assert(tcp->conns[i].tag != tag);
conn_init(&tcp->conns[conn_idx], fd, connecting); conn_init(&tcp->conns[conn_idx], fd, connecting);
tcp->conns[conn_idx].tag = tag; tcp->conns[conn_idx].tag = tag;