Changeset 5248

Show
Ignore:
Timestamp:
02/11/08 11:32:56 (6 months ago)
Author:
morris
Message:

Set transfer in a stopping state if it fails

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • WiredClient/trunk/WCTransfers.m

    r5210 r5248  
    775775        WNSocket                                *socket; 
    776776        WCFile                                  *file; 
    777         WCError                                 *error
     777        WCError                                 *error = NULL
    778778        WCTransferState                 state; 
    779779        SSL                                             *ssl; 
     
    791791                if(![[NSFileManager defaultManager] createFileAtPath:path]) { 
    792792                        error = [WCError errorWithDomain:WCWiredClientErrorDomain code:WCWiredClientCreateFailed argument:path]; 
    793                         [self _presentError:error]; 
    794793                         
    795                         return
     794                        goto end
    796795                } 
    797796        } 
     
    801800        if(!fileHandle) { 
    802801                error = [WCError errorWithDomain:WCWiredClientErrorDomain code:WCWiredClientOpenFailed argument:path]; 
    803                 [self _presentError:error]; 
    804                  
    805                 return; 
     802                 
     803                goto end; 
    806804        } 
    807805         
     
    817815        address = [WNAddress addressWithString:[[transfer URL] host] error:&error]; 
    818816         
    819         if(!address) { 
    820                 [self _presentError:error]; 
    821                  
    822                 return; 
    823         } 
     817        if(!address) 
     818                goto end; 
    824819         
    825820        [address setPort:[[transfer URL] port]]; 
     
    828823        [socket setInteractive:NO]; 
    829824         
    830         if(![socket connectWithContext:context timeout:30.0 error:&error]) { 
    831                 [self _presentError:error]; 
    832                  
    833                 return; 
    834         } 
     825        if(![socket connectWithContext:context timeout:30.0 error:&error]) 
     826                goto end; 
    835827         
    836828        [socket writeString:[NSSWF:@"%@ %@%@", WCTransferCommand, [transfer hash], WCMessageSeparator] 
     
    875867                        } else { 
    876868                                error = [WCError errorWithDomain:WCWiredClientErrorDomain code:WCWiredClientTransferFailed argument:[transfer name]]; 
    877                                 [self _presentError:error]; 
    878869                        } 
    879870 
     
    884875 
    885876                if(bytes <= 0) { 
    886                         if(bytes < 0) { 
     877                        if(bytes < 0) 
    887878                                error = [WCError errorWithDomain:WCWiredClientErrorDomain code:WCWiredClientTransferFailed argument:[transfer name]]; 
    888                                 [self _presentError:error]; 
    889                         } 
    890879 
    891880                        break; 
    892881                } 
    893  
     882                 
    894883                transfer->_transferred += bytes; 
    895884                file->_transferred += bytes; 
     
    925914                        pool = NULL; 
    926915                } 
     916        } 
     917         
     918end: 
     919        if(error) { 
     920                [self performSelectorOnMainThread:@selector(_presentError:) withObject:error]; 
     921                 
     922                [transfer setState:WCTransferStopping]; 
    927923        } 
    928924         
     
    951947        WNSocket                                *socket; 
    952948        WCFile                                  *file; 
    953         WCError                                 *error
     949        WCError                                 *error = NULL
    954950        WCTransferState                 state; 
    955951        SSL                                             *ssl; 
     
    968964        if(!fileHandle) { 
    969965                error = [WCError errorWithDomain:WCWiredClientErrorDomain code:WCWiredClientOpenFailed argument:path]; 
    970                 [self _presentError:error]; 
    971                  
    972                 return; 
     966                 
     967                goto end; 
    973968        } 
    974969         
     
    984979        address = [WNAddress addressWithString:[[transfer URL] host] error:&error]; 
    985980         
    986         if(!address) { 
    987                 [self _presentError:error]; 
    988                  
    989                 return; 
    990         } 
     981        if(!address) 
     982                goto end; 
    991983         
    992984        [address setPort:[[transfer URL] port]]; 
     
    995987        [socket setInteractive:NO]; 
    996988         
    997         if(![socket connectWithContext:context timeout:30.0 error:&error]) { 
    998                 [self _presentError:error]; 
    999                  
    1000                 return; 
    1001         } 
     989        if(![socket connectWithContext:context timeout:30.0 error:&error]) 
     990                goto end; 
    1002991         
    1003992        [socket writeString:[NSSWF:@"%@ %@%@", WCTransferCommand, [transfer hash], WCMessageSeparator] 
     
    10371026 
    10381027                if(bytes <= 0) { 
    1039                         if(bytes < 0) { 
     1028                        if(bytes < 0) 
    10401029                                error = [WCError errorWithDomain:WCWiredClientErrorDomain code:WCWiredClientTransferFailed argument:[transfer name]]; 
    1041                                 [self _presentError:error]; 
    1042                         } 
    10431030 
    10441031                        break; 
     
    10551042                        } else { 
    10561043                                error = [WCError errorWithDomain:WCWiredClientErrorDomain code:WCWiredClientTransferFailed argument:[transfer name]]; 
    1057                                 [self _presentError:error]; 
    10581044                        } 
    10591045 
     
    10961082        } 
    10971083 
     1084end: 
     1085        if(error) { 
     1086                [self performSelectorOnMainThread:@selector(_presentError:) withObject:error]; 
     1087                 
     1088                [transfer setState:WCTransferStopping]; 
     1089        } 
     1090         
    10981091        [pool release]; 
    10991092