Do you really need separated transports? schan_transport already has separated in and out buffers. It seems to me that as long as you use only in buffers in reader and out buffers in writer (and it's already the case), there is no need for separated transport instances.
Also, why do you use pointers here? Couldn't you just store the struct inside schan_context?
I don't really remember why I did it like this anymore. I will send new version.