Progress
This commit is contained in:
+6
-6
@@ -1192,7 +1192,7 @@ static void process_event_for_write(TinyDFS *tdfs,
|
||||
tdfs->operations[opidx].num_hashes = num_hashes; // TODO: overflow
|
||||
tdfs->operations[opidx].hashes = sys_malloc(num_hashes * sizeof(SHA256));
|
||||
if (tdfs->operations[opidx].hashes == NULL) {
|
||||
// TODO
|
||||
assert(0); // TODO
|
||||
}
|
||||
|
||||
tdfs->operations[opidx].uploads = NULL;
|
||||
@@ -1531,31 +1531,31 @@ static void process_event_for_write(TinyDFS *tdfs,
|
||||
|
||||
// version
|
||||
if (!binary_read(&reader, NULL, sizeof(uint16_t))) {
|
||||
// TODO
|
||||
assert(0); // TODO
|
||||
return;
|
||||
}
|
||||
|
||||
uint16_t type;
|
||||
if (!binary_read(&reader, &type, sizeof(uint16_t))) {
|
||||
// TODO
|
||||
assert(0); // TODO
|
||||
return;
|
||||
}
|
||||
|
||||
// length
|
||||
if (!binary_read(&reader, NULL, sizeof(uint32_t))) {
|
||||
// TODO
|
||||
assert(0); // TODO
|
||||
return;
|
||||
}
|
||||
|
||||
SHA256 hash;
|
||||
if (!binary_read(&reader, &hash, sizeof(hash))) {
|
||||
// TODO
|
||||
assert(0); // TODO
|
||||
return;
|
||||
}
|
||||
|
||||
// Check that there is nothing else to read
|
||||
if (binary_read(&reader, NULL, 1)) {
|
||||
// TODO
|
||||
assert(0); // TODO
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
+9
-39
@@ -354,7 +354,7 @@ int spawn_simulated_process(char *args)
|
||||
|
||||
current_process = NULL;
|
||||
if (num_polled < 0) {
|
||||
// TODO
|
||||
assert(0); // TODO
|
||||
}
|
||||
|
||||
if (timeout < 0) {
|
||||
@@ -453,7 +453,7 @@ static void accept_queue_init(AcceptQueue *accept_queue, int size)
|
||||
accept_queue->size = size;
|
||||
accept_queue->items = malloc(size * sizeof(DescriptorHandle));
|
||||
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->data = malloc(size * sizeof(char));
|
||||
if (queue->data == NULL) {
|
||||
// TODO
|
||||
assert(0); // TODO
|
||||
}
|
||||
}
|
||||
|
||||
@@ -597,7 +597,7 @@ void update_simulation(void)
|
||||
switch (desc->type) {
|
||||
|
||||
case DESC_FILE:
|
||||
// TODO: error
|
||||
assert(0); // TODO: error
|
||||
break;
|
||||
|
||||
case DESC_SOCKET:
|
||||
@@ -633,7 +633,7 @@ void update_simulation(void)
|
||||
break;
|
||||
|
||||
case CONNECTION_FAILED:
|
||||
// TODO
|
||||
assert(0); // TODO
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -1024,35 +1024,6 @@ int mock_getsockopt(SOCKET fd, int level, int optname, void *optval, socklen_t *
|
||||
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 = ¤t_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)
|
||||
{
|
||||
if (fd == INVALID_SOCKET || (int)fd < 0 || (int)fd >= MAX_DESCRIPTORS) {
|
||||
@@ -1194,7 +1165,7 @@ static void close_desc(Descriptor *desc)
|
||||
switch (desc->type) {
|
||||
|
||||
case DESC_EMPTY:
|
||||
// TODO
|
||||
assert(0); // TODO
|
||||
break;
|
||||
|
||||
case DESC_FILE:
|
||||
@@ -1214,7 +1185,6 @@ static void close_desc(Descriptor *desc)
|
||||
break;
|
||||
|
||||
case DESC_CONNECTION_SOCKET:
|
||||
data_queue_free(&desc->output_data);
|
||||
switch (desc->connection_state) {
|
||||
|
||||
case CONNECTION_DELAYED:
|
||||
@@ -1232,7 +1202,7 @@ static void close_desc(Descriptor *desc)
|
||||
break;
|
||||
|
||||
case CONNECTION_ESTABLISHED:
|
||||
// TODO
|
||||
data_queue_free(&desc->output_data);
|
||||
break;
|
||||
|
||||
case CONNECTION_FAILED:
|
||||
@@ -1251,7 +1221,7 @@ static void close_desc(Descriptor *desc)
|
||||
int mock_closesocket(SOCKET fd)
|
||||
{
|
||||
if (fd == INVALID_SOCKET) {
|
||||
// TODO
|
||||
// TODO: set error
|
||||
return -1;
|
||||
}
|
||||
int idx = (int) fd;
|
||||
@@ -1260,7 +1230,7 @@ int mock_closesocket(SOCKET fd)
|
||||
if (desc->type != DESC_SOCKET &&
|
||||
desc->type != DESC_LISTEN_SOCKET &&
|
||||
desc->type != DESC_CONNECTION_SOCKET) {
|
||||
// TODO
|
||||
// TODO: set error
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,6 @@ int mock_bind(SOCKET fd, void *addr, size_t addr_len);
|
||||
int mock_listen(SOCKET fd, int backlog);
|
||||
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_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_send(SOCKET fd, void *src, int len, int flags);
|
||||
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_accept mock_accept
|
||||
#define sys_getsockopt mock_getsockopt
|
||||
#define sys_setsockopt mock_setsockopt
|
||||
#define sys_recv mock_recv
|
||||
#define sys_send mock_send
|
||||
#define sys_connect mock_connect
|
||||
@@ -141,7 +139,6 @@ int mock_mkdir(char *path, mode_t mode);
|
||||
#define sys_listen listen
|
||||
#define sys_accept accept
|
||||
#define sys_getsockopt getsockopt
|
||||
#define sys_setsockopt setsockopt
|
||||
#define sys_recv recv
|
||||
#define sys_send send
|
||||
#define sys_connect connect
|
||||
|
||||
@@ -330,6 +330,10 @@ int tcp_connect(TCP *tcp, Address addr, int tag, ByteQueue **output)
|
||||
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);
|
||||
tcp->conns[conn_idx].tag = tag;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user