summaryrefslogtreecommitdiff
path: root/ratox.c
AgeCommit message (Collapse)Author
2014-09-22Use fsync() on fd in datasave()sin
2014-09-22Refactor removefriend()FRIGN
2014-09-22Add support for removing friendssin
2014-09-22Dump our status message in the status/out file not our nicknamesin
2014-09-22Use number of seconds since epoch as a timestamp for naming files uniquelysin
This breaks if time travel becomes a possibility.
2014-09-22Use O_RDONLY when opening the datafilesin
2014-09-22Remeber to truncate datafile in datasave() in case it shrinkssin
2014-09-22Change datasave() and localinit() to use fd's instead of fp'sFRIGN
2014-09-22Print message before password promptsin
2014-09-22Refactor dataload()FRIGN
Use fd's instead of fp's and simplify the case-handling for encryption.
2014-09-22Refactor fifoflush()FRIGN
After the previous simplification of return-values of fiforead() (exit if there's a more serious issue), fifoflush() can easily be replaced with a oneliner calling fiforead until it returns 0. In case 0 is returned, the underlying fifo will have already been reopened.
2014-09-22Style fixsin
2014-09-22Rename encryptsave to encryptdatafilesin
2014-09-22Allow to encrypt a plain text data file and vice versasin
2014-09-22Inform the user if encryption is enabled but the datafile is not encryptedsin
2014-09-22Print a newline between the banner and the restsin
2014-09-22Allow a client with encrypted support to load non-encrypt datafilessin
2014-09-22Just realloc(), don't leak if we get called more than oncesin
2014-09-22Oopssin
2014-09-22Just check p[0]sin
2014-09-22Forbid empty passwords, keep loopingsin
2014-09-22Make sure to report when .ratox.data doesn't match our encryption configsin
2014-09-22Keep asking for password if it doesn't matchsin
2014-09-22Add support for encrypted save filessin
2014-09-21Add IPv6 supportsin
Default to IPv4.
2014-09-21Lay the ground for IPv6 supportsin
2014-09-21Update nodelistsin
2014-09-21Only close file descriptors when they are not -1sin
2014-09-21Add shutdown() for clean exitFRIGN
This also sends a broadcast to all friends you went offline, leading to an immediate event-feedback.
2014-09-20fiforead() should accept a void * instead of char *sin
Remove ugly casts.
2014-09-20Fix off-by-one bugs when calling fiforead()sin
dirfd should be the first arg to be consistent with other functions.
2014-09-20Refactor sendfriendreq()FRIGN
Put the error-strings in one single data-structure and flush the err-file every time before a new incoming request, so it's empty when the request succeeds.
2014-09-20Implement fiforead()FRIGN
fiforead() automatically reopens a file-descriptor in case it returns EOF (return 0). It returns -1 on error.
2014-09-19Initialize fdmaxsin
2014-09-19Factor out fifoflush() in a separate funcsin
Also flush the fifo for stalled transfers
2014-09-19Clear up the enums and fix implicit condition-bugFRIGN
The OUT_F-type was not clear. Make it easier to see the out-file has no state (=NONE) and is defined for each slot individually. Moreover, in the initial creation, the err-file fell through just because STATIC = 0 and .outfile wasn't defined for it. It was only coincidence this worked and now we have a much more bulletproof implementation.
2014-09-19Handle rejected transferssin
2014-09-19Fix PAUSE/RESUME in file transferssin
The doc lies, if the receiver resumes a transfer you get a control packet with send_receive == 1 and control_type == TOX_FILECONTROL_ACCEPT. We keep state locally and move from PAUSED to INPROGRESS when the above happens.
2014-09-19Add TRANSFER_PAUSED statesin
Doesn't quite work yet though.
2014-09-19Inform the user when a transfer is in progresssin
2014-09-19Fix file transfers + texting to use O_RDONLY for FIFOssin
Just re-open them to clear EOF.
2014-09-19Change global in-fifos from O_RDWR to O_RDONLYFRIGN
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-18Missed some moresin
2014-09-18No need to specify modes, default to 0644 and 0777sin
2014-09-18OUT_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-18Print a message when we reject a friend requestsin
2014-09-18Allow the user to reject a friend requestsin
2014-09-18We need O_WRONLY for text_out as wellsin
2014-09-18Remember to ftruncate() before updating the filessin
2014-09-18Remove writeline()sin