summaryrefslogtreecommitdiff
AgeCommit message (Expand)Author
2014-09-23Scream if the datafile has 0 lengthsin
2014-09-23Add TODOsin
2014-09-23Add frienddestroy() and refactor removefriend()...friendcreate() populates the fs, frienddestroy() removes the friend related files from the fs. removefriend() only acts on the data from the friend's remove fifo. The "callback" in this case is responsible for reading the fifo like in all other cases (sendfriendtext() etc.). No weird dance with special function arguments to flag "official" removal. All friend related "callbacks" just need to operate on a struct friend *. sin
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 uniquely...This breaks if time travel becomes a possibility. sin
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()...Use fd's instead of fp's and simplify the case-handling for encryption. FRIGN
2014-09-22Refactor fifoflush()...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. FRIGN
2014-09-22Style fixsin
2014-09-22Forgot config.def.hsin
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-22Use portable readpassphrase() from OpenSSHsin
2014-09-22Generate config.hsin
2014-09-22Add support for encrypted save filessin
2014-09-21Add IPv6 support...Default to IPv4. sin
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 exit...This also sends a broadcast to all friends you went offline, leading to an immediate event-feedback. FRIGN
2014-09-20fiforead() should accept a void * instead of char *...Remove ugly casts. sin
2014-09-20Fix off-by-one bugs when calling fiforead()...dirfd should be the first arg to be consistent with other functions. sin
2014-09-20Refactor sendfriendreq()...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. FRIGN
2014-09-20Implement fiforead()...fiforead() automatically reopens a file-descriptor in case it returns EOF (return 0). It returns -1 on error. FRIGN
2014-09-19Initialize fdmaxsin
2014-09-19Factor out fifoflush() in a separate func...Also flush the fifo for stalled transfers sin
2014-09-19Clear up the enums and fix implicit condition-bug...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. FRIGN
2014-09-19Handle rejected transferssin
2014-09-19Fix PAUSE/RESUME in file transfers...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. sin
2014-09-19Add TRANSFER_PAUSED state...Doesn't quite work yet though. sin
2014-09-19Inform the user when a transfer is in progresssin
2014-09-19Fix file transfers + texting to use O_RDONLY for FIFOs...Just re-open them to clear EOF. sin
2014-09-19Change global in-fifos from O_RDWR to O_RDONLY...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. FRIGN
2014-09-18Missed some moresin
2014-09-18No need to specify modes, default to 0644 and 0777sin