##// END OF EJS Templates
errors: catch urllib errors specifically instead of using safehasattr()...
errors: catch urllib errors specifically instead of using safehasattr() Before this patch, we would catch `IOError` and `OSError` and check if the instance had a `.code` member (indicates `HTTPError`) or a `.reason` member (indicates the more generic `URLError`). It seems to me that can simply catch those exception specifically instead, so that's what this code does. The existing code is from fbe8834923c5 (commands: report http exceptions nicely, 2005-06-17), so I suspect it's just that there was no `urllib2` (where `URLError` lives) back then. The old code mentioned `SSLError` in a comment. The new code does *not* try to catch that. The documentation for `ssl.SSLError` says that it has a `.reason` property, but `python -c 'import ssl; print(dir(ssl.SSLError("foo", Exception("bar"))))` doesn't mention that property on either Python 2 or Python 3 on my system. It also seems that `sslutil` is pretty careful about converting `ssl.SSLError` to `error.Abort`. It also is carefult to not assume that instances of the exception have a `.reason`. So I at least don't want to catch `ssl.SSLError` and handle it the same way as `URLError` because that would likely result in a crash. I also wonder if we don't need to handle it at all (because `sslutil` might handle all the cases). It's now early in the release cycle, so perhaps we can just see how it goes? Differential Revision: https://phab.mercurial-scm.org/D9318

File last commit:

r45237:a347a329 default
r46442:ae00e170 default
Show More
lib.rs
15 lines | 383 B | application/rls-services+xml | RustLexer
Yuya Nishihara
rust-chg: add wrapper around C function
r40006 // Copyright 2018 Yuya Nishihara <yuya@tcha.org>
//
// This software may be used and distributed according to the terms of the
// GNU General Public License version 2 or any later version.
Yuya Nishihara
rust-chg: reimplement attach_io operation as async function...
r45232 mod attachio;
Yuya Nishihara
rust-chg: reimplement ChgClientExt as ChgClient wrapper...
r45236 mod clientext;
Yuya Nishihara
rust-chg: reimplement locator by using async/await and tokio-0.2...
r45237 pub mod locator;
Yuya Nishihara
rust-chg: add parser for request messages sent to "S" channel...
r40007 pub mod message;
Yuya Nishihara
rust-chg: add wrapper around C function
r40006 pub mod procutil;
Yuya Nishihara
rust-chg: reimplement run_command operation as async function...
r45235 mod runcommand;
Yuya Nishihara
rust-chg: reimplement uihandler by using async-trait and tokio-0.2...
r45234 mod uihandler;
Yuya Nishihara
rust-chg: add callback to handle pager and shell command requests...
r40010
Yuya Nishihara
rust-chg: reimplement ChgClientExt as ChgClient wrapper...
r45236 pub use clientext::ChgClient;
Yuya Nishihara
rust-chg: reimplement uihandler by using async-trait and tokio-0.2...
r45234 pub use uihandler::{ChgUiHandler, SystemHandler};