Changeset 3678

Show
Ignore:
Timestamp:
05/21/08 14:05:03
Author:
pvanhoof
Message:

2008-05-21 Philip Van Hoof <pvanhoof@gnome.org>

        • Writing in chunks of 64 bytes
        • Timeout per chunk is 15 seconds
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r3674 r3678  
     12008-05-21  Philip Van Hoof <pvanhoof@gnome.org> 
     2 
     3        * Writing in chunks of 64 bytes 
     4        * Timeout per chunk is 15 seconds 
     5 
    162008-05-20  Philip Van Hoof <pvanhoof@gnome.org> 
    27 
  • trunk/libtinymail-camel/camel-lite/camel/camel-file-utils.c

    r3449 r3678  
    602602        if (cancel_fd == -1) { 
    603603                do { 
     604                        /* Write in chunks of max WRITE_CHUNK_SIZE bytes */ 
     605                        ssize_t actual = MIN (n - written, WRITE_CHUNK_SIZE); 
     606 
    604607                        do { 
    605                                 w = write (fd, buf + written, n - written); 
     608                                w = write (fd, buf + written, actual /* n - written */); 
    606609                        } while (w == -1 && (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK)); 
    607610                        if (w > 0) 
     
    617620 
    618621                fdmax = MAX (fd, cancel_fd) + 1; 
     622 
     623 
    619624                do { 
    620625                        struct timeval tv; 
    621626                        int res; 
     627 
     628                        /* Write in chunks of max WRITE_CHUNK_SIZE bytes */ 
     629                        ssize_t actual = MIN (n - written, WRITE_CHUNK_SIZE); 
    622630 
    623631                        FD_ZERO (&rdset); 
     
    625633                        FD_SET (fd, &wrset); 
    626634                        FD_SET (cancel_fd, &rdset); 
    627                         tv.tv_sec = BLOCKING_READ_TIMEOUT; 
     635                        tv.tv_sec = BLOCKING_WRITE_TIMEOUT; 
    628636                        tv.tv_usec = 0; 
    629637                        w = -1; 
     
    639647                        else { 
    640648                                do { 
    641                                         w = write (fd, buf + written, n - written); 
     649                                        w = write (fd, buf + written, actual /*n - written*/); 
    642650                                } while (w == -1 && errno == EINTR); 
    643651 
  • trunk/libtinymail-camel/camel-lite/camel/camel-file-utils.h

    r3449 r3678  
    4646#define BLOCKING_READ_TIMEOUT 15 
    4747#define BLOCKING_WRITE_TIMEOUT 15 
     48#define WRITE_CHUNK_SIZE 64 
    4849 
    4950#define NONBLOCKING_READ_TIMEOUT 0 
  • trunk/libtinymail-camel/camel-lite/camel/camel-tcp-stream-openssl.c

    r3446 r3678  
    576576                fdmax = openssl->priv->sockfd + 1; 
    577577                do { 
     578                        /* Write in chunks of max WRITE_CHUNK_SIZE bytes */ 
     579                        ssize_t actual = MIN (n - written, WRITE_CHUNK_SIZE); 
     580 
    578581                        FD_ZERO (&rdset); 
    579582                        FD_ZERO (&wrset); 
     
    587590                        do { 
    588591                                if (ssl) { 
    589                                         w = SSL_write (ssl, buffer + written, n - written); 
     592                                        w = SSL_write (ssl, buffer + written, actual /* n - written */); 
    590593                                        if (w < 0) 
    591594                                                errno = ssl_errno (ssl, w); 
    592595                                } else { 
    593                                         w = write (openssl->priv->sockfd, buffer + written, n - written); 
     596                                        w = write (openssl->priv->sockfd, buffer + written, actual /* n - written */); 
    594597                                } 
    595598                        } while (w < 0 && errno == EINTR); 
     
    615618                fd_set rdset, wrset; 
    616619 
     620                /* Write in chunks of max WRITE_CHUNK_SIZE bytes */ 
     621                ssize_t actual = MIN (n - written, WRITE_CHUNK_SIZE); 
     622 
    617623                flags = fcntl (openssl->priv->sockfd, F_GETFL); 
    618624                fcntl (openssl->priv->sockfd, F_SETFL, flags | O_NONBLOCK); 
     
    636642                        do { 
    637643                                if (ssl) { 
    638                                         w = SSL_write (ssl, buffer + written, n - written); 
     644                                        w = SSL_write (ssl, buffer + written, actual /* n - written */); 
    639645                                        if (w < 0) 
    640646                                                errno = ssl_errno (ssl, w); 
    641647                                } else { 
    642                                         w = write (openssl->priv->sockfd, buffer + written, n - written); 
     648                                        w = write (openssl->priv->sockfd, buffer + written, actual /* n - written */); 
    643649                                } 
    644650                        } while (w < 0 && errno == EINTR); 
  • trunk/libtinymail-camel/camel-lite/camel/camel-tcp-stream-ssl.c

    r3645 r3678  
    699699                        PRInt32 res; 
    700700 
     701                        /* Write in chunks of max WRITE_CHUNK_SIZE bytes */ 
     702                        ssize_t actual = MIN (n - written, WRITE_CHUNK_SIZE); 
     703 
    701704                        pollfds[0].out_flags = 0; 
    702705                        w = -1; 
     
    717720                                        w = -1; 
    718721                                        if (begin_read (tcp_stream_ssl)) { 
    719                                                 w = PR_Write (tcp_stream_ssl->priv->sockfd, buffer + written, n - written); 
     722                                                w = PR_Write (tcp_stream_ssl->priv->sockfd, buffer + written, actual /* n - written */); 
    720723                                                if (w == -1) 
    721724                                                        set_errno (PR_GetError ()); 
     
    761764                do { 
    762765                        PRInt32 res; 
     766 
     767                        /* Write in chunks of max WRITE_CHUNK_SIZE bytes */ 
     768                        ssize_t actual = MIN (n - written, WRITE_CHUNK_SIZE); 
    763769 
    764770                        pollfds[0].out_flags = 0; 
     
    783789                                        w = -1; 
    784790                                        if (begin_read (tcp_stream_ssl)) { 
    785                                                 w = PR_Write (tcp_stream_ssl->priv->sockfd, buffer + written, n - written); 
     791                                                w = PR_Write (tcp_stream_ssl->priv->sockfd, buffer + written, actual /* n - written */); 
    786792                                                if (w == -1) 
    787793                                                        set_errno (PR_GetError ());