Ticket #52: ndpsmb.2.diff

File ndpsmb.2.diff, 12.7 KB (added by KO Myung-Hun, 16 years ago)

Apply 'retry' fix to all other functions

  • ndpsmb.c

     
    11771177        char fullname[CCHMAXPATH+1] = {0};
    11781178        smbwrp_fileinfo * data;
    11791179        NDPATHELEMENT *pel = ph->fsphNameElem(0);
     1180    int retry = 0;
    11801181
    1181         log("NdpFindStart in\n");
    11821182        do
    11831183        {
     1184    log("NdpFindStart in, retry = %d\n", retry);
     1185    do
     1186    {
    11841187                rc = checkconnection(pConn);
    11851188                if (rc)
    11861189                {
     
    12641267        } while (0);
    12651268
    12661269        log("NdpFindStart <%s> (%s) cnt %d %d %d\n", szPath, path, count, rc, pConn->rc);
     1270
     1271    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     1272} while( retry );
     1273
    12671274        return rc;
    12681275}
    12691276
     
    13721379                        }
    13731380                } while (0);
    13741381                log("NdpQueryInfo <%s> (%s) %d %d\n", szPath, path, rc, pConn->rc);
    1375                 retry = rc && !retry;
     1382        retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
    13761383        } while (retry);
    13771384       
    13781385        return rc;
     
    14121419        smb_response resp = {0};
    14131420        smbwrp_fileinfo * finfo = (smbwrp_fileinfo *)pConn->mem;
    14141421        char path[CCHMAXPATH+1] = {0};
     1422    int retry = 0;
    14151423
    1416         log("NdpSetPathInfo in\n");
     1424do
     1425{
     1426    log("NdpSetPathInfo in, retry = %d\n", retry);
    14171427        do {
    14181428                rc = checkconnection(pConn);
    14191429                if (rc)
     
    14511461                }
    14521462        } while (0);
    14531463        log("NdpSetPathInfo <%s> (%s) %d %d\n", szPathName, path, rc, pConn->rc);
     1464
     1465    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     1466} while( retry );
     1467
    14541468        return rc;
    14551469}
    14561470
     
    15251539        FEALIST * pFEASrc;
    15261540        NDDATABUF fdata = {0};
    15271541        smbwrp_fileinfo *finfo;
     1542    int retry = 0;
    15281543
    15291544        if (!pfi || !pfi->pszName || !pFEAList)
    15301545        {
     
    15441559        finfo = (smbwrp_fileinfo *)fdata.pData;
    15451560        path = finfo->fname;
    15461561
    1547         log("NdpEAQuery in <%s> %08x %d\n", path, pGEAList, pGEAList ? pGEAList->cbList : 0);
     1562do
     1563{
     1564    log("NdpEAQuery in <%s> %08x %d, retry = %d\n", path, pGEAList, pGEAList ? pGEAList->cbList : 0, retry);
    15481565        do {
    15491566                rc = checkconnection(pConn);
    15501567                if (rc)
     
    15761593                                } break;
    15771594                                default :
    15781595                                {
     1596                    if( rc != ERROR_INVALID_PARAMETER || retry )
    15791597                                        rc = ERROR_EAS_NOT_SUPPORTED;
    15801598                                }
    15811599                        }
     
    15861604                }
    15871605        } while (0);
    15881606        log("NdpEAQuery <%s> %d %d %d %d %d\n", pfi->pszName, rc, pFEASrc->cbList, pFEAList->cbList, pConn->rc, resp.rc);
     1607
     1608    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     1609} while( retry );
     1610
    15891611        return rc;
    15901612}
    15911613
     
    16001622        unsigned long action;
    16011623        NDDATABUF fdata = {0};
    16021624        smbwrp_fileinfo *finfo;
     1625    int retry = 0;
    16031626
    1604         log("NdpEASet in\n");
    1605 
    16061627        if (!pfi || !pfi->pszName || !pFEAList || pFEAList->cbList <= sizeof(long))
    16071628        {
    16081629                return ERROR_EAS_NOT_SUPPORTED;
     
    16261647        finfo = (smbwrp_fileinfo *)fdata.pData;
    16271648        path = finfo->fname;
    16281649
     1650do
     1651{
     1652    log("NdpEASet in, retry = %d\n", retry);
     1653
    16291654        do {
    16301655                rc = checkconnection(pConn);
    16311656                if (rc)
     
    16451670                        rc = pConn->rc ? pConn->rc : (resp.rc ? resp.rc : ERROR_INVALID_PARAMETER);
    16461671                }
    16471672        } while (0);
     1673
     1674    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     1675} while( retry );
     1676
    16481677        log("NdpEASet %d\n", rc);
    16491678        return rc;
    16501679}
     
    16621691        NDDATABUF fdata = {0};
    16631692        smbwrp_fileinfo *finfo;
    16641693        int easize;
     1694    int retry = 0;
    16651695
    16661696        if (!pfi || !pulEASize)
    16671697        {
     
    16891719                return NO_ERROR;
    16901720        }
    16911721
    1692         log("NdpEASize in <%s> \n", path);
     1722do
     1723{
     1724    log("NdpEASize in <%s>, retry = %d \n", path, retry);
    16931725        do {
    16941726                rc = checkconnection(pConn);
    16951727                if (rc)
     
    17201752                                } break;
    17211753                                default :
    17221754                                {
     1755                    if( rc != ERROR_INVALID_PARAMETER || retry )
    17231756                                        rc = ERROR_EAS_NOT_SUPPORTED;
    17241757                                }
    17251758                        }
     
    17271760                *pulEASize = pfealist->cbList;
    17281761        } while (0);
    17291762        log("NdpEASize <%s> %d %d %d %d\n", pfi->pszName, *pulEASize, rc, pConn->rc, resp.rc);
     1763
     1764    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     1765} while( retry );
     1766
    17301767        return rc;
    17311768}
    17321769
     
    17391776        int rc = 0;
    17401777        unsigned long action;
    17411778        char path[CCHMAXPATH+1] = {0};
     1779    int retry = 0;
    17421780       
    1743         log("NdpSetCurrentDir in\n");
     1781do
     1782{
     1783    log("NdpSetCurrentDir in, retry = %d\n", retry);
    17441784        do {
    17451785                rc = checkconnection(pConn);
    17461786                if (rc)
     
    17661806                }
    17671807        } while (0);
    17681808        log("NdpSetCurrentDir <%s> (%s) %d %d\n", szPath, path, rc, pConn->rc);
     1809
     1810    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     1811} while( retry );
     1812
    17691813        return rc;
    17701814}
    17711815
     
    17901834        int rc = 0;
    17911835        unsigned long action;
    17921836        char path[CCHMAXPATH+1] = {0};
     1837    int retry = 0;
    17931838
    1794         log("NdpForceDelete in\n");
     1839do
     1840{
     1841    log("NdpForceDelete in, retry = %d\n", retry);
    17951842        do {
    17961843                rc = checkconnection(pConn);
    17971844                if (rc)
     
    18171864                }
    18181865        } while (0);
    18191866        log("NdpForceDelete <%s> (%s) %d %d\n", szFile, path, rc, pConn->rc);
     1867
     1868    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     1869} while( retry );
     1870
    18201871        return rc;
    18211872}
    18221873
     
    18291880        int rc = 0;
    18301881        unsigned long action;
    18311882        char path[CCHMAXPATH+1] = {0};
     1883    int retry = 0;
    18321884
    1833         log("NdpCreateDir in\n");
     1885do
     1886{
     1887    log("NdpCreateDir in, retry = %d\n", retry);
    18341888        do {
    18351889                rc = checkconnection(pConn);
    18361890                if (rc)
     
    18561910                }
    18571911        } while (0);
    18581912        log("NdpCreateDir <%s> (%s) %d %d\n", szDirName, path, rc, pConn->rc);
     1913
     1914    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     1915} while( retry );
     1916
    18591917        return rc;
    18601918}
    18611919
     
    18681926        int rc = 0;
    18691927        unsigned long action;
    18701928        char path[CCHMAXPATH+1] = {0};
     1929    int retry = 0;
    18711930
    1872         log("NdpDeleteDir in\n");
     1931do
     1932{
     1933    log("NdpDeleteDir in, retry = %d\n", retry);
    18731934        do {
    18741935                rc = checkconnection(pConn);
    18751936                if (rc)
     
    18951956                }
    18961957        } while (0);
    18971958        log("NdpDeleteDir <%s> (%s) %d %d\n", szDir, path, rc, pConn->rc);
     1959
     1960    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     1961} while( retry );
     1962
    18981963        return rc;
    18991964}
    19001965
     
    19091974        char src[CCHMAXPATH+1] = {0};
    19101975        int l1, l2;
    19111976        char * p = szDst;
     1977    int retry = 0;
    19121978
    1913         log("NdpMove in\n");
    19141979        do
    19151980        {
     1981    log("NdpMove in, retry = %d\n", retry);
     1982    do
     1983    {
    19161984                rc = checkconnection(pConn);
    19171985                if (rc)
    19181986                {
     
    19512019        } while (0);
    19522020        log("NdpMove <%s> -> <%s> (%s) %d %d\n", szSrc, szDst, src, rc, pConn->rc);
    19532021
     2022    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     2023} while( retry );
     2024
    19542025        return rc;
    19552026}
    19562027
     
    19792050        unsigned long action;
    19802051        int rc = 0;
    19812052        char path[CCHMAXPATH+1] = {0};
     2053    int retry = 0;
    19822054
    1983         log("smbopen in %d\n", pConn->file.fd);
     2055do
     2056{
     2057    log("smbopen in %d, retry = %d\n", pConn->file.fd, retry);
    19842058        do {
    19852059                if (pConn->file.fd > 0)
    19862060                {
     
    20352109                log("smbopen NdpFileEASet %d. pFEAList->cbList %d\n", rc1, pFEAList->cbList);
    20362110        }
    20372111
     2112    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     2113} while( retry );
     2114
    20382115        return rc;
    20392116}
    20402117
     
    20752152        smb_response resp = {0};
    20762153        smbwrp_fileinfo * finfo = (smbwrp_fileinfo *)pConn->mem;
    20772154        char path[CCHMAXPATH+1] = {0};
     2155    int retry = 0;
    20782156
    2079         log("NdpSetFileAttribute in\n");
     2157do
     2158{
     2159    log("NdpSetFileAttribute in, retry = %d\n", retry);
    20802160        do {
    20812161                rc = checkconnection(pConn);
    20822162                if (rc)
     
    21052185                }
    21062186        } while (0);
    21072187        log("NdpSetFileAttribute <%s> (%s) %04x %d %d\n", szFileName, path, usAttr, rc, pConn->rc);
     2188
     2189    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     2190} while( retry );
     2191
    21082192        return rc;
    21092193}
    21102194
     
    21382222        smb_response resp = {0};
    21392223        FILEFINDBUF3 buf;
    21402224        smbwrp_fileinfo * finfo = (smbwrp_fileinfo *)(pConn->mem + sizeof(pConn->file));
     2225    int retry = 0;
    21412226
    2142         log("NdpFileQueryInfo in\n");
     2227do
     2228{
     2229    log("NdpFileQueryInfo in, retry = %d\n", retry);
    21432230        do {
    21442231                if (pConn->file.fd < 0 || !*pConn->file.fname)
    21452232                {
     
    21792266        } while (0);
    21802267        log("NdpFileQueryInfo <%s> %d %d\n", pConn->file.fd < 0 ? "!null!" : pConn->file.fname, rc, pConn->rc);
    21812268
     2269    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     2270} while( retry );
     2271
    21822272        return rc;
    21832273}
    21842274
     
    21912281        smb_request req = {0};
    21922282        smb_response resp = {0};
    21932283        FEALIST * pFEASrc;
     2284    int retry = 0;
    21942285
    21952286        if (!pFEAList)
    21962287        {
     
    22012292                return ERROR_EAS_NOT_SUPPORTED;
    22022293        }
    22032294
    2204         log("NdpFileEAQuery in <%s>/%d pGEAList=%08x\n", pConn->file.fname, pConn->file.fd, pGEAList);
     2295do
     2296{
     2297    log("NdpFileEAQuery in <%s>/%d pGEAList=%08x, retry = %d\n", pConn->file.fname, pConn->file.fd, pGEAList, retry);
    22052298        do {
    22062299                if (pConn->file.fd < 0)
    22072300                {
     
    22382331                                } break;
    22392332                                default :
    22402333                                {
     2334                    if( rc != ERROR_INVALID_PARAMETER || retry )
    22412335                                        rc = ERROR_EAS_NOT_SUPPORTED;
    22422336                                }
    22432337                        }
     
    22482342                }
    22492343        } while (0);
    22502344        log("NdpFileEAQuery out <%s>/%d pFEASrc->cbList=%d pFEAList->cbList=%d rc=%d %d %d\n", pConn->file.fname, pConn->file.fd, pFEASrc->cbList, pFEAList->cbList, rc, pConn->rc, resp.rc);
     2345
     2346    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     2347} while( retry );
     2348
    22512349        return rc;
    22522350}
    22532351
     
    22592357        smb_request req = {0};
    22602358        smb_response resp = {0};
    22612359        unsigned long action;
     2360    int retry = 0;
    22622361
    2263         log("NdpFileEASet in\n");
    2264 
    22652362        if (!pFEAList || pFEAList->cbList <= sizeof(long))
    22662363        {
    22672364                return ERROR_EAS_NOT_SUPPORTED;
     
    22752372                return ERROR_NOT_ENOUGH_MEMORY;
    22762373        }
    22772374
     2375do
     2376{
     2377    log("NdpFileEASet in, retry = %d\n", retry);
     2378
    22782379        do {
    22792380                if (pConn->file.fd < 0)
    22802381                {
     
    23012402                }
    23022403        } while (0);
    23032404        log("NdpFileEASet %d\n", rc);
     2405
     2406    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     2407} while( retry );
     2408
    23042409        return rc;
    23052410}
    23062411
     
    23142419        smb_response resp = {0};
    23152420        char path[CCHMAXPATH+1] = {0};
    23162421        FEALIST * pfealist;
     2422    int retry = 0;
    23172423
    23182424        if (!pulEASize)
    23192425        {
     
    23242430                return ERROR_EAS_NOT_SUPPORTED;
    23252431        }
    23262432
    2327         log("NdpFileEASize in <%s>/%d \n", pConn->file.fname, pConn->file.fd);
     2433do
     2434{
     2435    log("NdpFileEASize in <%s>/%d, retry = %d\n", pConn->file.fname, pConn->file.fd, retry);
    23282436        do {
    23292437                if (pConn->file.fd < 0)
    23302438                {
     
    23602468                                } break;
    23612469                                default :
    23622470                                {
     2471                    if( rc != ERROR_INVALID_PARAMETER || retry )
    23632472                                        rc = ERROR_EAS_NOT_SUPPORTED;
    23642473                                }
    23652474                        }
     
    23672476                *pulEASize = pfealist->cbList;
    23682477        } while (0);
    23692478        log("NdpFileEASize %d %d %d %d\n", *pulEASize, rc, pConn->rc, resp.rc);
     2479
     2480    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     2481} while( retry );
     2482
    23702483        return rc;
    23712484}
    23722485
     
    24172530        unsigned long action;
    24182531        smb_request req = {0};
    24192532        smb_response resp = {0};
     2533    int retry = 0;
    24202534
    2421         log("NdpFileSetFilePtrl in\n");
     2535do
     2536{
     2537    log("NdpFileSetFilePtrl in, retry = %d\n", retry);
    24222538        do {
    24232539                if (pConn->file.fd < 0)
    24242540                {
     
    24512567        } while (0);
    24522568        log("NdpFileSetFilePtrL <%s> %lld %lu %lld %d %d\n", pConn->file.fd < 0 ? "!null!" : pConn->file.fname, llOffset, ulMethod, *pllActual, rc, pConn->rc);
    24532569
     2570    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     2571} while( retry );
     2572
    24542573        return rc;
    24552574}
    24562575
     
    24712590        unsigned long action;
    24722591        smb_request req = {0};
    24732592        smb_response resp = {0};
     2593    int retry = 0;
    24742594
    2475         log("NdpFileClose in %d <%s>\n", pConn->file.fd, pConn->file.fd < 0 ? "!null!" : pConn->file.fname);
     2595do
     2596{
     2597    log("NdpFileClose in %d <%s>, retry = %d\n", pConn->file.fd, pConn->file.fd < 0 ? "!null!" : pConn->file.fname, retry);
    24762598
    24772599        do {
    24782600                if (pConn->file.fd < 0)
     
    25032625                }
    25042626        } while (0);
    25052627        log("NdpFileClose %d %d %d\n", pConn->file.fd, rc, pConn->rc);
     2628
     2629    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     2630} while( retry );
     2631
    25062632        pConn->file.fd = -1;
    25072633        return rc;
    25082634}
     
    25292655        unsigned long action;
    25302656        smb_request req = {0};
    25312657        smb_response resp = {0};
     2658    int retry = 0;
    25322659
    2533         log("NdpFileNewSizeL in\n");
     2660do
     2661{
     2662    log("NdpFileNewSizeL in, retry = %d\n", retry);
    25342663        do {
    25352664                if (pConn->file.fd < 0)
    25362665                {
     
    25622691                }
    25632692        } while (0);
    25642693        log("NdpFileNewSizeL <%s> %lld %d %d\n", pConn->file.fd < 0 ? "!null!" : pConn->file.fname, llLen, rc, pConn->rc);
     2694
     2695    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     2696} while( retry );
     2697
    25652698        return rc;
    25662699}
    25672700
     
    25752708        unsigned long action;
    25762709        smb_request req = {0};
    25772710        smb_response resp = {0};
     2711    int retry = 0;
    25782712
    2579         log("NdpFileRead in\n");
     2713do
     2714{
     2715    log("NdpFileRead in, retry = %d\n", retry);
    25802716//      log("NdpFileRead <%s> %lu\n", pConn->file.fd < 0 ? "!null!" : pConn->file.fname, ulRead);
    25812717
    25822718        do {
     
    26192755        } while (0);
    26202756        log("NdpFileRead <%s> %lu %lu %d %d\n", pConn->file.fd < 0 ? "!null!" : pConn->file.fname, ulRead, *pulActual, rc, pConn->rc);
    26212757
     2758    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     2759} while( retry );
     2760
    26222761        return rc;
    26232762}
    26242763
     
    26322771        unsigned long action;
    26332772        smb_request req = {0};
    26342773        smb_response resp = {0};
     2774    int retry = 0;
    26352775
    2636         log("NdpFileWrite in\n");
     2776do
     2777{
     2778    log("NdpFileWrite in, retry = %d\n", retry);
    26372779        do {
    26382780                if (pConn->file.fd < 0)
    26392781                {
     
    26742816        } while (0);
    26752817        log("NdpFileWrite <%s> %lu %lu %d %d\n", pConn->file.fd < 0 ? "!null!" : pConn->file.fname, ulWrite, *pulActual, rc, pConn->rc);
    26762818
     2819    retry = ( rc == ERROR_INVALID_PARAMETER ) && !retry;
     2820} while( retry );
     2821
    26772822        return rc;
    26782823}