Reliable result for connection::option() when returning a null value.
[yazpp-moved-to-github.git] / zoom / zconn.cpp
index d5d4c85..4c1c7a6 100644 (file)
@@ -1,4 +1,4 @@
-// $Header: /home/cvsroot/yaz++/zoom/zconn.cpp,v 1.4 2002-11-30 22:33:21 mike Exp $
+// $Header: /home/cvsroot/yaz++/zoom/zconn.cpp,v 1.7 2005-05-03 16:21:16 mike Exp $
 
 // Z39.50 Connection class
 
@@ -6,7 +6,7 @@
 
 
 namespace ZOOM {
-    connection::connection(const string &hostname, int portnum) {
+    connection::connection(const std::string &hostname, int portnum) {
        const char *line_printer_size_hostname = hostname.c_str();
        //###cerr << "opening " << hostname << ":" << portnum << "\n";
        c = ZOOM_connection_new(line_printer_size_hostname, portnum);
@@ -17,15 +17,17 @@ namespace ZOOM {
        const char *addinfo;
        if ((errcode = ZOOM_connection_error(c, &errmsg, &addinfo)) != 0) {
            //###cerr << "oops: no connect, errcode=" << errcode << "\n";
+           ZOOM_connection_destroy(c);
            throw bib1Exception(errcode, addinfo);
        }
     }
 
-    string connection::option(const string &key) const {
-       return ZOOM_connection_option_get(c, key.c_str());
+    std::string connection::option(const std::string &key) const {
+       const char* val = ZOOM_connection_option_get(c, key.c_str());
+       return (val) ? val : std::string();
     }
 
-    bool connection::option(const string &key, const string &val) {
+    bool connection::option(const std::string &key, const std::string &val) {
        // No way to tell whether ZOOM_connection_option_set() accepts key
        ZOOM_connection_option_set(c, key.c_str(), val.c_str());
        return true;