Revision da7bfe47 pithos-macos/PithosAccountNode.m

b/pithos-macos/PithosAccountNode.m
60 60

  
61 61
- (id)initWithPithos:(ASIPithos *)aPithos {
62 62
    if ((self = [super init])) {
63
        self.pithos = aPithos;
63
        pithos = [aPithos retain];
64 64
    }
65 65
    return self;
66 66
}
......
87 87
        pithos = [aPithos retain];
88 88
        [url release];
89 89
        url = nil;
90
        [accountRequest clearDelegatesAndCancel];
91
        [accountRequest release];
92
        accountRequest = nil;
93
        [refreshMetadataAccountRequest clearDelegatesAndCancel];
94
        [refreshMetadataAccountRequest release];
95
        refreshMetadataAccountRequest = nil;
96
        [applyMetadataAccountRequest clearDelegatesAndCancel];
97
        [applyMetadataAccountRequest release];
98
        applyMetadataAccountRequest = nil;
99
        reset = YES;
90 100
    }
91 101
}
92 102

  
......
100 110

  
101 111
- (NSArray *)children {
102 112
    @synchronized(self) {
113
        if (reset) {
114
            [accountRequest clearDelegatesAndCancel];
115
            [accountRequest release];
116
            accountRequest = nil;
117
            [refreshMetadataAccountRequest clearDelegatesAndCancel];
118
            [refreshMetadataAccountRequest release];
119
            refreshMetadataAccountRequest = nil;
120
            [applyMetadataAccountRequest clearDelegatesAndCancel];
121
            [applyMetadataAccountRequest release];
122
            applyMetadataAccountRequest = nil;
123
            [children release];
124
            children = nil;
125
            [newChildren release];
126
            newChildren = nil;
127
            self.pithosAccount = nil;
128
            freshness = PithosNodeStateRefreshNeeded;
129
            forcedRefresh = YES;
130
            reset = NO;
131
            [self postChildrenUpdatedNotificationName];
132
        }
103 133
        switch (freshness) {
104 134
            case PithosNodeStateFresh:
105 135
                break;
......
158 188

  
159 189
- (void)accountRequestFailed:(ASIPithosAccountRequest *)request {
160 190
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
191
    NSString *message;
192
    NSError *error = [accountRequest error];
193
    if (error)
194
        message = [NSString stringWithFormat:@"Account listing %@ failed: %@", accountRequest.url, [error localizedDescription]];
195
    else
196
        message = [NSString stringWithFormat:@"Account listing %@ failed: (%d) %@", 
197
                   accountRequest.url, accountRequest.responseStatusCode, accountRequest.responseStatusMessage];
198
    dispatch_async(dispatch_get_main_queue(), ^{
199
        [[PithosActivityFacility defaultPithosActivityFacility] startAndEndActivityWithType:PithosActivityOther message:message];
200
    });
161 201
    NSUInteger retries = [[accountRequest.userInfo objectForKey:@"retries"] unsignedIntegerValue];
162 202
    if (retries > 0) {
163 203
        ASIPithosAccountRequest *newAccountRequest = (ASIPithosAccountRequest *)[PithosUtilities copyRequest:accountRequest];
......
166 206
        accountRequest = newAccountRequest;
167 207
        [[PithosUtilities prepareRequest:accountRequest priority:[[accountRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
168 208
    } else {
169
        NSString *message;
170
        NSError *error = [accountRequest error];
171
        if (error)
172
            message = [NSString stringWithFormat:@"Account listing failed: %@", error];
173
        else
174
            message = [NSString stringWithFormat:@"Account listing failed: (%d) %@", 
175
                       accountRequest.responseStatusCode, accountRequest.responseStatusMessage];
176
        dispatch_async(dispatch_get_main_queue(), ^{
177
            [[PithosActivityFacility defaultPithosActivityFacility] startAndEndActivityWithType:PithosActivityOther message:message];
178
        });
179 209
        [newChildren release];
180 210
        newChildren = nil;
181 211
        [accountRequest release];

Also available in: Unified diff