Date: Mon, 19 Aug 2013 20:52:56 GMT From: ambarisha@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r256171 - in soc2013/ambarisha/head/usr.bin: dmget dms Message-ID: <201308192052.r7JKqugJ034667@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: ambarisha Date: Mon Aug 19 20:52:56 2013 New Revision: 256171 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=256171 Log: Handling download failures (file not found, access denied etc.) with grace Modified: soc2013/ambarisha/head/usr.bin/dmget/dmget.c soc2013/ambarisha/head/usr.bin/dms/mirror.c soc2013/ambarisha/head/usr.bin/dms/worker.c Modified: soc2013/ambarisha/head/usr.bin/dmget/dmget.c ============================================================================== --- soc2013/ambarisha/head/usr.bin/dmget/dmget.c Mon Aug 19 20:51:29 2013 (r256170) +++ soc2013/ambarisha/head/usr.bin/dmget/dmget.c Mon Aug 19 20:52:56 2013 (r256171) @@ -423,6 +423,7 @@ rm_dmres(&dmres); goto success; } else { + fprintf(stderr, "dmget: download failed: %s\n", dmres->errstr); rm_dmres(&dmres); goto failure; } @@ -456,6 +457,7 @@ ret = -1; goto done; failure: + remove(dmreq.path); ret = 1; goto done; success: Modified: soc2013/ambarisha/head/usr.bin/dms/mirror.c ============================================================================== --- soc2013/ambarisha/head/usr.bin/dms/mirror.c Mon Aug 19 20:51:29 2013 (r256170) +++ soc2013/ambarisha/head/usr.bin/dms/mirror.c Mon Aug 19 20:52:56 2013 (r256171) @@ -203,7 +203,7 @@ return -1; } - while(mirror != NULL) { + while(mirrors != NULL) { write_mirror(mirror, f); mirrors = rm_mirror(mirrors, mirror); } Modified: soc2013/ambarisha/head/usr.bin/dms/worker.c ============================================================================== --- soc2013/ambarisha/head/usr.bin/dms/worker.c Mon Aug 19 20:51:29 2013 (r256170) +++ soc2013/ambarisha/head/usr.bin/dms/worker.c Mon Aug 19 20:52:56 2013 (r256171) @@ -753,10 +753,7 @@ tmpreq.path = (char *) malloc(strlen(dmreq->path) + strlen(TMP_EXT)); if (tmpreq.path == NULL) { fprintf(stderr, "dmXGet: Insufficient memory\n"); - free(tmpreq.i_filename); - free(tmpreq.path); - free(tmpreq.URL); - return NULL; + goto done; } strcpy(tmpreq.path, dmreq->path); strcat(tmpreq.path, TMP_EXT); @@ -764,11 +761,19 @@ tmpjob.ofd = open(tmpreq.path, O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); FILE *f = fetchXGet(tmpjob.url, us, flags); + if (f == NULL) { + close(tmpjob.ofd); + remove(tmpreq.path); + fprintf(stderr, "dmXGet: Couldn't fetch remote file\n");//, fetchLastErrStr); + goto done; + } + fetch(&tmpjob, f, *us); fclose(f); f = fopen(tmpreq.path, "r"); +done: free(tmpjob.url->doc); free(tmpjob.url); free(tmpreq.i_filename);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308192052.r7JKqugJ034667>