summaryrefslogtreecommitdiff
path: root/ratox.c
AgeCommit message (Expand)Author
2014-10-18Refactor logic in main-loop for pending calls even more...and implement fifoopen in other places. FRIGN
2014-10-18Don't forget to queue call_out while incoming ringing...Else the call would be rejected immediately in case you receive a call and have not yet opened call_out for reading. FRIGN
2014-10-17Indentation fixessin
2014-10-17Refactor call-state management...Checking call_out only and stopping the call as soon as call_out is gone is not desirable behaviour. It now keeps up the running call until both call_out and call_in have been "closed", no matter how or by whom it was started. This is done by introducing av.state, which is a bit field. While at it, I also incorporated the transmission-state into it. toxav_hangup() will now only be called from the one centralized flag-checking-loop before select, not in the callbacks themselves. This will also get rid of some race-conditions (more or less). Previously, call_out was constantly polled as long as the user was online. Change this to only attempt to open call_out when the call is initialized. This lowers CPU-usage dramatically. FRIGN
2014-10-16Remove ugly use of O_DIRECTORY...Oops kfreebsd builds break. Aw well. sin
2014-10-16Cleanup...AV-logging, logic and check for < 0 instead of == -1 (just to make sure). FRIGN
2014-10-15Remember to cool down the transfer for pending buffers as well...This change halves CPU usage on my system. sin
2014-10-15Only complain if errno is not EWOULDBLOCKsin
2014-10-15Only call toxav_kill_transmission() after toxav_prepare_transmission()...toxav_prepare_transmission() sets the internal toxav `call_active' state variable. This is checked in toxav_kill_transmission() and only if set, proceeds to release the resources. sin
2014-10-15Fortify and optimize file-sending...Do this in two ways: 1) only allow ratox to stay in the file-sender for a certain amount of time 2) Stop hammering tox_file_send_data(). When it returns -1, we put the given friend into a cooldown-state, because all internal transmission slots are full. File sending thus now works in bursts, reading from file_in as long as tox_do() allows or until tox_file_send_data() fails. An easy way to see why we need to do the former is piping /dev/urandom to file_in, which never blocks. Effectively, the user goes "offline" after a while given he is trapped inside the loop. Piping to /dev/urandom is not an unrealistic testcase. Imagine a researcher who desperately needs true random data from his special RNG in his lab using ratox and piping it through /dev/urandom. FRIGN
2014-10-14Change the state-files...rename file_pending to file_state rename call_pending to call_state 0 = no call 1 = call pending 2 = call active FRIGN
2014-10-13Only send call-data when Tx transmission is ready...Due to a bug in toxcore the call is set to active too early, leaving room for invocations of sendfriendcalldata() even though the transmission has not yet been set up in cbcallstart. Fix this with a small workaround keeping the transmission-state in the client. In the long run, this definitely needs to be fixed in toxcore for consistency. FRIGN
2014-10-13Fortify error-checks and FSM...Basically the direct calls to cancelcall() should be minimized and only set off in a callback. Additionally, tweak other error-cases and don't always quit fatally but instead provide ways to get out of an error-condition. FRIGN
2014-10-13Finish cleaning up av-callbacks...Now it's fun again to work with the code. FRIGN
2014-10-12Further simplify call-start-callbacks...using the udata-void pointers to pass data as a source of information. FRIGN
2014-10-12Use (void *userdata) in callbacks and drop ringing-callback...This saves a lot of LOC and is definitely easier to maintain. FRIGN
2014-10-12Fix vertical spacingsin
2014-10-12We might eventually have logerr() and logwarn()sin
2014-10-12tox_is_data_encrypted() was renamed to tox_is_save_encrypted()sin
2014-10-12Add stricter error-checking...In upcoming commits, these errors will be incorporated into the logging-system, so they don't look so out of place when issued. FRIGN
2014-10-10Don't spin on request/out/<ID> if we echo anything other than '0' or '1'sin
2014-10-09Fix request- and friend-management...When you got a request, but not accepted it via request/out/... and instead sent a request yourself, it would not remove the FIFO. This patch fixes this behaviour by iterating through the request- list and removing the FIFO if it's still existing. Additionally, actually make it possible to reject requests and re-add your friends later by managing the internal tox-state properly. FRIGN
2014-10-08Style fix...Similar style as for detecting broken file transfers. sin
2014-10-08Don't close a random fd...if (f->rxstate == TRANSFER_INPROGRESS && (fd = openat(f->dirfd, ffiles[FFILE_OUT].name, ffiles[FFILE_OUT].flags, 0666)) == -1 && errno == ENXIO) { ... } else { close(fd); <--- not always appropriate! } sin
2014-10-08Do a toxav_hangup() like we do elsewhere...This will trigger the callback and reset toxav internal states accordingly. In the callback we actually call cancelcall(). sin
2014-10-08Fix file-transferssin
2014-10-08Check outfiles if they are still open...If not, abort receiving. FRIGN
2014-10-08Check if the call id is valid before cancelling itsin
2014-10-08Fix build on kfreebsdKill Your TV
2014-10-08Rework state management for audio calls...No need to try to keep local state, just use toxav_get_call_state(). We now can auto-accept calls by pre-attaching on the call_out FIFO. sin
2014-10-08A bit more consistent output messagesin
2014-10-08Implement peer timeoutsin
2014-10-08Release call resources with toxav_kill_transmission()...Reject calls on both sides to reset states. This still needs to be tested to see if there's any effect of doing that. sin
2014-10-08Remove debug printf()sin
2014-10-07Simplify user state trackingsin
2014-10-07Refactor user-state-logicFRIGN
2014-10-07Rename ustatus to ustatesin
2014-10-07Correctly inform external scripts of an invalid user statesin
2014-10-07Add support for changing the user state and reporting friend's user statesin
2014-10-07Allocate enough memory to allow copying all the friendssin
2014-10-07Send the actual message when initiating the friend requestsin
2014-10-07Fix possible stack corruption when parsing friend IDssin
2014-10-07Reset fd offset when writing outsin
2014-10-06Nuke leading spacesin
2014-10-06Reset state after hangupsin
2014-10-06Re-order function declssin
2014-10-06Allow to attach aplay after we've initiated a callsin
2014-10-05Factor out check for NULL framesin
2014-10-05Allow simultaneous tx/rx callsin
2014-10-05Clean up calls on shutdownsin