Ignore:
Timestamp:
May 27, 2009, 9:09:42 AM (16 years ago)
Author:
Herwig Bauernfeind
Message:

Update 3.2 branch to 3.2.8

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/samba-3.2.x/source/libsmb/clientgen.c

    r141 r232  
    316316        size_t len = SVAL(cli->outbuf,smb_vwv11) + 4;
    317317        size_t nwritten=0;
    318         ssize_t ret;
     318        struct iovec iov[2];
    319319
    320320        /* fd == -1 causes segfaults -- Tom (tom@ninja.nl) */
     
    328328        }
    329329
    330         while (nwritten < len) {
    331                 ret = write_socket(cli->fd,cli->outbuf+nwritten,len - nwritten);
    332                 if (ret <= 0) {
    333                         close(cli->fd);
    334                         cli->fd = -1;
    335                         cli->smb_rw_error = SMB_WRITE_ERROR;
    336                         DEBUG(0,("Error writing %d bytes to client. %d (%s)\n",
    337                                 (int)len,(int)ret, strerror(errno) ));
    338                         return false;
    339                 }
    340                 nwritten += ret;
    341         }
    342 
    343         /* Now write the extra data. */
    344         nwritten=0;
    345         while (nwritten < extradata) {
    346                 ret = write_socket(cli->fd,p+nwritten,extradata - nwritten);
    347                 if (ret <= 0) {
    348                         close(cli->fd);
    349                         cli->fd = -1;
    350                         cli->smb_rw_error = SMB_WRITE_ERROR;
    351                         DEBUG(0,("Error writing %d extradata "
    352                                 "bytes to client. %d (%s)\n",
    353                                 (int)extradata,(int)ret, strerror(errno) ));
    354                         return false;
    355                 }
    356                 nwritten += ret;
     330        iov[0].iov_base = cli->outbuf;
     331        iov[0].iov_len = len;
     332        iov[1].iov_base = CONST_DISCARD(char *, p);
     333        iov[1].iov_len = extradata;
     334
     335        nwritten = write_data_iov(cli->fd, iov, 2);
     336        if (nwritten < (len + extradata)) {
     337                close(cli->fd);
     338                cli->fd = -1;
     339                cli->smb_rw_error = SMB_WRITE_ERROR;
     340                DEBUG(0,("Error writing %d bytes to client. (%s)\n",
     341                         (int)(len+extradata), strerror(errno)));
     342                return false;
    357343        }
    358344
Note: See TracChangeset for help on using the changeset viewer.