diff -c -r netcdf-4.2.1/libdap2/ncdap3.c netcdf-4.2.1.1/libdap2/ncdap3.c
*** netcdf-4.2.1/libdap2/ncdap3.c	2012-07-19 05:47:22.000000000 -0600
--- netcdf-4.2.1.1/libdap2/ncdap3.c	2012-08-03 08:50:37.016431189 -0600
***************
*** 326,332 ****
      if(ncstatus != NC_NOERR) return THROW(ncstatus);
  
      dapcomm = (NCDAPCOMMON*)drno->dispatchdata;
!     ncstatus = nc_close(drno->substrate);
  
      /* remove ourselves from NClist */
      del_from_NCList(drno);
--- 326,332 ----
      if(ncstatus != NC_NOERR) return THROW(ncstatus);
  
      dapcomm = (NCDAPCOMMON*)drno->dispatchdata;
!     ncstatus = nc_abort(drno->substrate);
  
      /* remove ourselves from NClist */
      del_from_NCList(drno);
diff -c -r netcdf-4.2.1/ncdump/dumplib.c netcdf-4.2.1.1/ncdump/dumplib.c
*** netcdf-4.2.1/ncdump/dumplib.c	2012-07-19 05:47:20.000000000 -0600
--- netcdf-4.2.1.1/ncdump/dumplib.c	2012-08-03 09:07:50.269988742 -0600
***************
*** 934,944 ****
      size_t slen;
      char *sout;
      int res;
  
!     slen = 3 + strlen(((char **)valp)[0]); /* need "'s around string */
      sout = emalloc(slen);
!     res = snprintf(sout, slen, "\"%s\"", ((char **)valp)[0]);
!     assert(res > 0);
      sbuf_cpy(sfbf, sout);
      free(sout);
      return sbuf_len(sfbf);
--- 934,999 ----
      size_t slen;
      char *sout;
      int res;
+     int iel;
+     const char *cp;
+     char *sp;
+     unsigned char uc;
  
!     cp = ((char **)valp)[0];
!     slen = 3 + 5 * strlen(cp); /* need "'s around string, and extra space to escape control characters */ 
      sout = emalloc(slen);
!     sp = sout;
!     *sp++ = '"' ;
!     while(*cp) {
! 	switch (uc = *cp++ & 0377) {
! 	case '\b':
! 	    *sp++ = '\\';
! 	    *sp++ = 'b' ;
! 	    break;
! 	case '\f':
! 	    *sp++ = '\\';
! 	    *sp++ = 'f';
! 	    break;
! 	case '\n':		
! 	    *sp++ = '\\';
! 	    *sp++ = 'n';
! 	    break;
! 	case '\r':
! 	    *sp++ = '\\';
! 	    *sp++ = 'r';
! 	    break;
! 	case '\t':
! 	    *sp++ = '\\';
! 	    *sp++ = 't';
! 	    break;
! 	case '\v':
! 	    *sp++ = '\\';
! 	    *sp++ = 'n';
! 	    break;
! 	case '\\':
! 	    *sp++ = '\\';
! 	    *sp++ = '\\';
! 	    break;
! 	case '\'':
! 	    *sp++ = '\\';
! 	    *sp++ = '\'';
! 	    break;
! 	case '\"':
! 	    *sp++ = '\\';
! 	    *sp++ = '\"';
! 	    break;
! 	default:
! 	    if (iscntrl(uc)) {
! 		snprintf(sp,3,"\\%03o",uc);
! 		sp += 4;
! 	    }
! 	    else
! 		*sp++ = uc;
! 	    break;
! 	}
!     }
!     *sp++ = '"' ;
!     *sp++ = '\0' ;
      sbuf_cpy(sfbf, sout);
      free(sout);
      return sbuf_len(sfbf);
diff -c -r netcdf-4.2.1/RELEASE_NOTES netcdf-4.2.1.1/RELEASE_NOTES
*** netcdf-4.2.1/RELEASE_NOTES	2012-07-19 05:47:22.000000000 -0600
--- netcdf-4.2.1.1/RELEASE_NOTES	2012-08-03 09:25:20.735293067 -0600
***************
*** 6,11 ****
--- 6,20 ----
  
  VERSION		COMMENTS
  -------		--------
+ 4.2.1.1		Released 2012-08-03
+ 
+ 		Patched libdap2/ncdap3.c to fix DAP performance bug
+ 		remotely accessing large files (> 2GiB).
+ 
+ 		Patched ncdump/dumplib.c to properly escape special
+ 		characters in CDL output from ncdump for netCDF-4
+ 		string data.
+ 
  4.2.1		Released 2012-07-18
  
  		Added a specific NC_MMAP mode flag to modify
Only in netcdf-4.2.1.1: RELEASE_NOTES~
