User login

Weekly Report




Updated my presentation for a WAND practice talk afternoon on Tuesday. Got a lot of useful feedback and have made some changes to improve things (still a few more to do). The main thing was it was too long, so I'll need to cut a few slides and gloss over the existing systems some more.

Read up some more and made some progress implementing non-blocking I/O (though it busy waits at the moment so I'd better learn select() in a hurry - according to the documentation select() on blocking won't work as a read may involve a write). Turns out it isn't nearly as complicated as I thought - BIO_should_read and BIO_should_write return codes are from the underlying socket/BIO's perspective (i.e. that it should do some reading before the next read). This only really has bearing on what to wait on in a select(), rather than the complicated system of sometimes needing to do a write before another read and the like that I first though it was. Things are also simplified by re-handshaking happening automatically on the client side (might slightly complicate things on the server side). At this point I am glad I am using BIO rather than the underlying SSL_* as re-handshaking is rather complicated on the server side.

Unfortunately with non-blocking I/O I can't rely on BIO_puts to succeed or fail like BIO_gets, it can do a partial write; this means I'll need to refactor frame sending a fair bit as it is spread over a number of writes at the moment that don't handle this.

Had a good think about some overall architecture things (how to check receipts and the like), which should make things easier to tie together. Realised I will need a queue on the client side when things are non-blocking to make sure everything is sent in the end.

My conference presentation is at 1:10PM in S.G.01 this Tuesday (4 September 2012).