- try {
- fetchResult = client.fetch(uri);
- } catch (FetchException fe1) {
- logger.log(Level.WARNING, "Could not fetch “" + uri + "”!", fe1);
- } finally {
- logger.exiting(FreenetInterface.class.getName(), "fetchUri(FreenetURI)", fetchResult);
+ FreenetURI currentUri = new FreenetURI(uri);
+ while (true) {
+ try {
+ fetchResult = client.fetch(currentUri);
+ return new Pair<FreenetURI, FetchResult>(currentUri, fetchResult);
+ } catch (FetchException fe1) {
+ if (fe1.getMode() == FetchException.PERMANENT_REDIRECT) {
+ currentUri = fe1.newURI;
+ continue;
+ }
+ logger.log(Level.WARNING, "Could not fetch “" + uri + "”!", fe1);
+ return null;
+ }