Age | Commit message (Collapse) | Author | |
---|---|---|---|
2014-09-19 | Fix file transfers + texting to use O_RDONLY for FIFOs | sin | |
Just re-open them to clear EOF. | |||
2014-09-19 | Change global in-fifos from O_RDWR to O_RDONLY | FRIGN | |
O_RDWR is a dirty hack to get around the issue of infinite EOFs while reading an in-FIFO. Instead, stop breaking POSIX and set the FIFOs to O_RDONLY. In case a read returns EOF (r == 0), we reopen the fd. Same will be applied to the friend-fifos (especially file_in), helping us get rid of strange timeouts and heuristics and rather solve the problem the POSIX-way. The only downside to this is that we are blind for writes to the in-FIFOs between catching read == 0 and close(), but this is not an issue. To make reopening as easy as possible, I added a dirfd to all slots. While at it, I changed the initial setup and removed the chdir() in favor of the POSIX-2008-compliant *at-functions. This lets us do stuff without having to use snprintf to build paths and is more bulletproof even in case the directory is renamed. | |||
2014-09-18 | Missed some more | sin | |
2014-09-18 | No need to specify modes, default to 0644 and 0777 | sin | |
2014-09-18 | OUT_F is reserved for the edge-case where we don't know if OUT is a STATIC ↵ | sin | |
or FOLDER So use STATIC here. | |||
2014-09-18 | Print a message when we reject a friend request | sin | |
2014-09-18 | Allow the user to reject a friend request | sin | |
2014-09-18 | We need O_WRONLY for text_out as well | sin | |
2014-09-18 | Remember to ftruncate() before updating the files | sin | |
2014-09-18 | Remove writeline() | sin | |
2014-09-18 | We can't use TAILQ_REMOVE inside TAILQ_FOREACH | sin | |
2014-09-18 | Add fifos for incoming requests and remove cmd-parser | FRIGN | |
2014-09-18 | Rework file-transfers | sin | |
For aborted transfers, we will have to move the transfer to the TRANSFER_KILLED state. Then we'll have to wait until the input FIFO stops being readable (the user ^C the transfer). Only then can we move to TRANSFER_NONE. If we move to TRANSFER_NONE immediately then we will initiate a new transfer which we don't want to do. The basic idea is: If we move into the TRANSFER_KILLED state and timeout has expired (50ms?) without the fd being readable (the user did a ^C on cat file > file_in) then move the transfer to TRANSFER_NONE state. | |||
2014-09-17 | Fix wall of gcc-warnings | FRIGN | |
2014-09-17 | Rename ratatox to ratox | sin | |