Commit Graph

34 Commits

Author SHA1 Message Date
Dennis Heimbigner
3db4f013bf Primary change: add dap4 support
Specific changes:
1. Add dap4 code: libdap4 and dap4_test.
   Note that until the d4ts server problem is solved, dap4 is turned off.
2. Modify various files to support dap4 flags:
	configure.ac, Makefile.am, CMakeLists.txt, etc.
3. Add nc_test/test_common.sh. This centralizes
   the handling of the locations of various
   things in the build tree: e.g. where is
   ncgen.exe located. See nc_test/test_common.sh
   for details.
4. Modify .sh files to use test_common.sh
5. Obsolete separate oc2 by moving it to be part of
   netcdf-c. This means replacing code with netcdf-c
   equivalents.
5. Add --with-testserver to configure.ac to allow
   override of the servers to be used for --enable-dap-remote-tests.
6. There were multiple versions of nctypealignment code. Try to
   centralize in libdispatch/doffset.c and include/ncoffsets.h
7. Add a unit test for the ncuri code because of its complexity.
8. Move the findserver code out of libdispatch and into
   a separate, self contained program in ncdap_test and dap4_test.
9. Move the dispatch header files (nc{3,4}dispatch.h) to
   .../include because they are now shared by modules.
10. Revamp the handling of TOPSRCDIR and TOPBUILDDIR for shell scripts.
11. Make use of MREMAP if available
12. Misc. minor changes e.g.
	- #include <config.h> -> #include "config.h"
	- Add some no-install headers to /include
	- extern -> EXTERNL and vice versa as needed
	- misc header cleanup
	- clean up checking for misc. unix vs microsoft functions
13. Change copyright decls in some files to point to LICENSE file.
14. Add notes to RELEASENOTES.md
2017-03-08 17:01:10 -07:00
dmh
f423f27693 Sync with oc project.
This supports better authorization
handling for DAP requests, especially redirection
based authorization. I also added a new test case
ncdap_tests/testauth.sh.

Specifically, suppose I have a netrc file /tmp/netrc
containing this.
    machine uat.urs.earthdata.nasa.gov login xxxxxx password yyyyyy
Also suppose I have a .ocrc file containing these lines
    HTTP.COOKIEJAR=/tmp/cookies
    HTTP.NETRC=/tmp/netrc
Assume that .ocrc is in the local directory or HOME.

Then this command should work (assuming a valid login and password).
    ncdump -h "https://54.86.135.31/opendap/data/nc/fnoc1.nc"
2014-12-24 10:22:47 -07:00
Ward Fisher
bc141aef5a Fixed error with previous merge that prevented compilation. 2014-08-11 20:29:18 -06:00
Dennis Heimbigner
b5aa5924a9 double attempt to fix coverity error 2014-08-11 16:13:45 -06:00
Dennis Heimbigner
f2e2a2c266 Fix coverity errors CID 1230781
and 1230782,
2014-08-11 16:12:14 -06:00
Ward Fisher
84fadd3de7 Coverity: 1230781. Oops! Fixing my previous fix. 2014-08-11 14:34:24 -06:00
Ward Fisher
d3c122e8bb Coverity issue 1197642 2014-08-11 12:33:25 -06:00
dmh
7689f8be32 JIRA: NCF-308
Jennifer Adams has requested a reversion in behavior so that
all dap requests include a constraint.

Problem is caused by change in prefetch where if all variables
are requested, then no constraint is generated.
Fix is to always generate a constraint in prefetch.
2014-07-07 14:08:19 -06:00
dmh
389d2ea394 fix some coverity complaints 2014-04-07 13:00:47 -06:00
dmh
af566dd300 In preparation for adding dap4 support, I have cleaned up
the libdap2 code to make it dap2 protocol + netcdf classic
only.
2014-03-24 14:02:52 -06:00
dmh
c7086dd04b Add support to detect authorization errors to DAP 2014-03-11 11:58:22 -06:00
dmh
d7de6fd551 [NCF-287/MCI-552767
Problem related to NCF-284.
Namely an old thredds server that
does not properly implement the
dap2 spec. It is accessing a field of a grid
but is not wrapping it as a structure.
url:http://thredds.aodn.org.au/thredds/dodsC/IMOS/ACORN/gridded_1h-avg-current-map_QC/SAG/2010/01/27/IMOS_ACORN_V_20100127T023000Z_SAG_FV01_1-hour-avg.nc.dds?SPEED.SPEED

In any case, this exposed another bug.
Also, in looking at this, I realized that the
code could be simplified.
2014-02-05 17:05:33 -07:00
dmh
8541a32175 [NCF-284]/ ZQX-155900
Some servers do not properly
implement the current DAP2 spec.
It turns out that this server is one of those:
    http://nomads.ncep.noaa.gov:9090/
When a reference such as this is made:
    http://nomads.ncep.noaa.gov:9090/dods/gens/gens20140123/gep_all_12z?prmslmsl[0][0][0][0:359]
tt is returning this:
Dataset {
    float prmslmsl[ens=1][time=1][lat=1][lon=360];
} gens%2fgens20140123%2fgep_all_12z;

when it should be returning this:
Dataset {
  Structure {
    float prmslmsl[ens=1][time=1][lat=1][lon=360];
  } prmslmsl;
} gens%2fgens20140123%2fgep_all_12z;

The reason is that when picking fields out of a grid,
one must maintain the fully qualified name, so the grid
is converted to an enclosing structure.

It turns out that the problem was that
when I create the new structure node, I was
improperly linking it into the existing graph.
This caused a null pointer failure.
Fix is to make sure the relevant field (node->root)
is set.
2014-01-24 13:26:00 -07:00
Ward Fisher
18afaa9145 Corrected several convoluted chains in cache.c by which either null pointers might be dereferenced, or by which a pointer might be referenced after being freed. These were reported by Clang static analysis. 2013-11-22 13:49:21 -07:00
Ward Fisher
1d007eb101 Addressed a number of minor bugs reported by Clang. 2013-11-20 13:37:21 -07:00
Dennis Heimbigner
beba09e70b 1. The duplicate name checking in oc2 was
effectively o(n cubed); modified to be
   o(n squared).
2. If the list of prefetched variables is too long,
   (something on the order of 400 variables), then
   the server may reject it. Modified code so that
   in the case that the set of prefetch'd vars is
   the in fact all variables, it does not create a long
   request. This does not actually solve the problem
   if the prefetch list is long, but not all inclusive.
2013-07-27 20:54:50 +00:00
Dennis Heimbigner
fcecd1a2bc 1. The duplicate name checking in oc2 was
effectively o(n cubed); modified to be
   o(n squared).
2. If the list of prefetched variables is too long,
   (something on the order of 400 variables), then
   the server may reject it. Modified code so that
   in the case that the set of prefetch'd vars is
   the in fact all variables, it does not create a long
   request. This does not actually solve the problem
   if the prefetch list is long, but not all inclusive.
2013-07-27 20:20:13 +00:00
Dennis Heimbigner
19c1c11f1d It turns out that my dap code
is not properly checking the incoming
count argument for nc_get_vars.
It is treating the count as pre-stride
rather than post-stride.
2013-05-01 22:31:01 +00:00
Dennis Heimbigner
c18c90b012 removed some unused local variables 2013-03-12 20:45:58 +00:00
Dennis Heimbigner
d70cf6d10c Primary change is to add ability
to do prefetch on either a lazy
or eager basis. Lazy means that
the prefetch does not occur
until and unless the client actually
makes a get_var request.

Also repaired a problem where
doing prefetch wrt a url that
has a constraint will prefetch
a whole variable if its constrained
size is small enough, even if the
underlying variable is too large
to warrant prefetch.
2013-03-03 04:06:43 +00:00
Dennis Heimbigner
2a0d68c530 update nchashmap; move some old stuff in libdap2; fix new debug code 2012-08-19 21:12:35 +00:00
Dennis Heimbigner
65350dc361 fix Jira bug NCF-191 reported by Manke 2012-08-15 17:55:25 +00:00
Dennis Heimbigner
42999f4c7c move from oc1.0 to oc2.0; create new dir oc2 2012-07-31 20:34:13 +00:00
Dennis Heimbigner
f5bd3bf525 cleanup and remove unused code 2012-04-01 20:15:06 +00:00
Dennis Heimbigner
99eef24bc2 - Fix NCF-158 to modify ncgen flag defaults.
- Fix NCF-157 to modify DAP code to support
  partial variable retrieval.
- Fix of NCF-154 to solve problem of ncgen
  improperly processing data lists for variables
  of size greater than 2**18 bytes.
- Fix ncgen processing of char variables that have
  multiple unlimited dimensions.
- Partly fix Jira issue: NCF-145 (vlen issues).
- Benchmark program nc_test4/tst_ar4_*) requires arguments
  and should only be invoked inside a shell
  script; fixed so that they terminate cleanly
  if invoked with no arguments.
- Fix the Doxygen processing so it will work
  with make distcheck.
- Begin switchover to using an alternative to ncio.
- Begin support for in-memory (diskless) files.
2012-03-14 23:26:48 +00:00
Dennis Heimbigner
3e592a2604 fix dap string handling 2012-02-03 21:31:50 +00:00
Dennis Heimbigner
1e1907e393 fix a bug in libdap2 handling of strings 2012-01-30 04:32:12 +00:00
Dennis Heimbigner
aebd11348a 1)Integrate the oc with improved performance 2012-01-29 18:56:29 +00:00
Dennis Heimbigner
efd9808b0a completely rewritten constraint system 2011-11-14 04:20:19 +00:00
Dennis Heimbigner
16dee702b7 fix NCF-120 2011-09-15 16:57:16 +00:00
Dennis Heimbigner
75451af706 jira bug: NCF-83 2011-06-25 22:08:32 +00:00
Ed Hartnett
4de8b33251 rolled everything back to 1119 2011-04-28 17:11:21 +00:00
Dennis Heimbigner
80d8926bad fix user+password;also the bad-name problem;also merged libncdap3+ncdap4->libdap2 2011-04-27 20:50:27 +00:00
Dennis Heimbigner
9fe1223316 2011-04-17 18:56:10 +00:00