*/
 
 
-//class IPADDR : public SMARTALLOC {
-class IPADDR {
+class IPADDR : public SMARTALLOC {
+// class IPADDR {
  public:
    typedef enum { R_SINGLE, R_SINGLE_PORT, R_SINGLE_ADDR, R_MULTIPLE,
                   R_DEFAULT, R_EMPTY
 
       break;
    }
 
-   free_addresses(addr_list);
    if (!connected) {
+         free_addresses(addr_list);
       errno = save_errno;
       return NULL;
    }
-   return init_bsock(jcr, sockfd, name, host, port, ipaddr->get_sockaddr());
+   BSOCK* ret =  init_bsock(jcr, sockfd, name, host, port, ipaddr->get_sockaddr());
+   free_addresses(addr_list);
+   return ret;
 }
 
 /*
 
 
 #endif
 
-//#ifdef SMARTALLOC
-#ifdef xxx
+#ifdef SMARTALLOC
+// #ifdef xxx
 
 #define New(type) new(__FILE__, __LINE__) type
 
 }
 
 private:
-//void *operator new(size_t s) throw() { return 0; }
-//void *operator new[](size_t s) throw() { return 0; }
+void *operator new(size_t s) throw() { return 0; }
+void *operator new[](size_t s) throw() { return 0; }
 };
  
 
 
       }
    } while (stat == -1 && (errno == EINTR || errno == EIO) && retry++ < 11);
    if (stat < 0) {
-      Dmsg1(90, "Read device got: ERR=%s\n", strerror(errno));
       clrerror_dev(dev, -1);
+      Dmsg1(90, "Read device got: ERR=%s\n", strerror(errno));
       block->read_len = 0;
       Mmsg4(&dev->errmsg, _("Read error at file:blk %u:%u on device %s. ERR=%s.\n"), 
         dev->file, dev->block_num, dev->dev_name, strerror(dev->dev_errno));