]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Add simple send() function to bsockcore
authorNorbert Bizet <norbert.bizet@baculasystems.com>
Fri, 8 Oct 2021 16:54:46 +0000 (12:54 -0400)
committerEric Bollengier <eric@baculasystems.com>
Wed, 6 Sep 2023 07:49:01 +0000 (09:49 +0200)
bacula/src/lib/bsockcore.c
bacula/src/lib/bsockcore.h

index 6bf8ea865807560ab80ccf257f1c3d8bbc822166..c3effb2cf304d56c19c78410dba6d6ea79b24cec 100644 (file)
@@ -1,7 +1,7 @@
 /*
    Bacula(R) - The Network Backup Solution
 
-   Copyright (C) 2000-2022 Kern Sibbald
+   Copyright (C) 2000-2023 Kern Sibbald
 
    The original author of Bacula is Kern Sibbald, with contributions
    from many others, a complete list can be found in the file AUTHORS.
@@ -529,6 +529,11 @@ void BSOCKCORE::clear_locking()
  *          true  on success
  */
 bool BSOCKCORE::send()
+{
+   return send(msg, msglen);
+}
+
+bool BSOCKCORE::send(char *buf, uint32_t len)
 {
    int32_t rc;
    bool ok = true;
@@ -555,11 +560,11 @@ bool BSOCKCORE::send()
       return false;
    }
 
-   if (msglen > 4000000) {
+   if (len > 4000000) {
       if (!m_suppress_error_msgs) {
          Qmsg4(m_jcr, M_ERROR, 0,
             _("Socket has insane msglen=%d on call to %s:%s:%d\n"),
-             msglen, m_who, m_host, m_port);
+             len, m_who, m_host, m_port);
       }
       return false;
    }
@@ -582,10 +587,10 @@ bool BSOCKCORE::send()
    timer_start = watchdog_time;  /* start timer */
    clear_timed_out();
    /* Full I/O done in one write */
-   rc = write_nbytes(msg, msglen);
-   if (chk_dbglvl(DT_NETWORK|1900)) dump_bsock_msg(m_fd, *pout_msg_no, "SEND", rc, msglen, m_flags, msg, msglen);
+   rc = write_nbytes(buf, len);
+   if (chk_dbglvl(DT_NETWORK|1900)) dump_bsock_msg(m_fd, *pout_msg_no, "SEND", rc, len, m_flags, buf, len);
    timer_start = 0;         /* clear timer */
-   if (rc != msglen) {
+   if (rc != (int32_t)len) {
       errors++;
       if (errno == 0) {
          b_errno = EIO;
@@ -596,13 +601,13 @@ bool BSOCKCORE::send()
          if (!m_suppress_error_msgs) {
             Qmsg5(m_jcr, M_ERROR, 0,
                   _("Write error sending %d bytes to %s:%s:%d: ERR=%s\n"),
-                  msglen, m_who,
+                  len, m_who,
                   m_host, m_port, this->bstrerror());
          }
       } else {
          Qmsg5(m_jcr, M_ERROR, 0,
                _("Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"),
-               msglen, m_who, m_host, m_port, rc);
+               len, m_who, m_host, m_port, rc);
       }
       ok = false;
    }
index 7d4de3166b71608af0216ed4f5077d1e6c044893..f57ea4b37a78b1992f5ca1e4bff8156f57f5cd0b 100644 (file)
@@ -139,6 +139,7 @@ public:
                 char *service, int port, int verbose);
    virtual int32_t recvn(int /*len*/);
    virtual bool send();
+   virtual bool send(char *buf, uint32_t len);
    bool fsend(const char*, ...);
    virtual void close();              /* close connection and destroy packet */
    void destroy();                    /* destroy socket packet */