summaryrefslogtreecommitdiff
path: root/src/sftp.rs
AgeCommit message (Collapse)Author
2020-01-18Make properly Send safeWez Furlong
In earlier iterations I accidentally removed Send from Session and then later restored it in an unsafe way. This commit restructures the bindings so that each of the objects holds a reference to the appropriate thing to keep everything alive safely, without awkward lifetimes to deal with. The key to this is that the underlying Session is tracked by an Arc<Mutex<>>, with the related objects ensuring that they lock this before they call into the underlying API. In order to make this work, I've had to adjust the API around iterating both known hosts and agent identities: previously these would iterate over internal references but with this shift there isn't a reasonable way to make that safe. The strategy is instead to return a copy of the host/identity data and then later look up the associated raw pointer when needed. The purist in me feels that the copy feels slightly wasteful, but the realist justifies this with the observation that the cardinality of both known hosts and identities is typically small enough that the cost of this is in the noise compared to actually doing the crypto+network ops. I've removed a couple of error code related helpers from some of the objects: those were really internal APIs and were redundant with methods exported by the Error type anyway. Fixes: https://github.com/alexcrichton/ssh2-rs/issues/154 Refs: https://github.com/alexcrichton/ssh2-rs/issues/137
2020-01-18rename unwrap_inner_or_err to get_innerbold
2020-01-18rename unwrap_raw_or_err to get_rawbold
2020-01-18simplify function signaturebold
2020-01-18eliminate conditionals when enforce blocking in destructorsbold
2020-01-18use take instead of as_refbold
2020-01-18set ssh2 to blocking when dropping sftp and filebold
2020-01-18add shutdown and close methodsbold
This commit exposes the `shutdown` method of `Sft` and `close` method of `File` to free resources. Previously this was done synchronously and therefor not usable in async wrappers. Whith the methods exposed they can be polled until success. If successful a flag is set to notify the destructor that no resources need to be freed anymore. However, if resources were not cleaned up by calling `close` or `shutdown` the destructor will clean up synchronously.
2020-01-11let compiler figure out the correct typebold
2020-01-11cargo fmtbold
2020-01-11let compiler figure out the correct typebold
2020-01-11simplify unwrap_or_else argumentbold
2020-01-11make retrieving last session error privatebold
2020-01-11return correct errorsbold
2019-10-20Make Session be `Send` againWez Furlong
Refs: https://github.com/alexcrichton/ssh2-rs/issues/137
2019-09-15replace use of try! with ? operatorWez Furlong
This fixes the CI build with nightly, as we have deny(warnings) enabled.
2019-07-29Channel, Sftp no longer borrow SessionWez Furlong
Instead the internal session is kept alive via Rc Refs: https://github.com/alexcrichton/ssh2-rs/issues/53
2019-07-29cargo fmtWez Furlong
No functional changes, just formatting
2018-12-14Use bitflags 1.X (#97)Jonas Schievink
Also removes the reexported flags from the crate root, since they're now assoc. consts and it would be a bit weird to reexport those. (breaking change)
2016-11-08Bump dep on bitflagsAlex Crichton
2016-08-17Add checks for file typesVeselkov Sergey
2016-05-26ssh2::FileStat should derive Eq/PartialEq and Clonesp3d
Copy might constrain the implementation, but these are useful and shouldn't cause any difficulty in the future.
2016-04-04Fix spelling errorRichard Dodd
2016-04-04Allow debug print of FileStatderekdreery
2015-04-02Update for rust betaAlex Crichton
2015-04-02Update to rust masterAlex Crichton
2015-03-30Remove the unsafe destructor featureAlex Crichton
2015-03-25Update to rust masterAlex Crichton
2015-03-22Bump to 0.2.3Alex Crichton
2015-03-12Bind unlink for SFTP filesAlex Crichton
Closes #11
2015-02-23Update to std::ioAlex Crichton
2015-02-20Bump versions and update to masterAlex Crichton
2015-01-28Update to rust masterAlex Crichton
2015-01-23Update to rust masterAlex Crichton
2015-01-18Tweak impls/apisAlex Crichton
Lots of changes, but largely cosmetic, reorganization, or internal refactorings.
2015-01-17Update to rust masterAlex Crichton
2015-01-09Update to rust masterAlex Crichton
2015-01-03Update to rust masterAlex Crichton
2014-12-15Update to rust masterAlex Crichton
2014-12-12Update to rust masterAlex Crichton
2014-11-18Update to rust masterAlex Crichton
2014-11-07Update to rust masterAlex Crichton
2014-10-31Update to rust masterAlex Crichton
2014-10-12Update to rust masterAlex Crichton
2014-10-09Update to rust masterAlex Crichton
2014-09-19Beef up documentationAlex Crichton
2014-09-19Bind SFTP functionality.Alex Crichton
2014-09-19Start SFTP bindingsAlex Crichton