Changeset 793
- Timestamp:
- 07/07/07 16:34:21 (1 year ago)
- Files:
-
- cherokee/trunk/ChangeLog (modified) (1 diff)
- cherokee/trunk/cherokee/connection.c (modified) (3 diffs)
- cherokee/trunk/qa/run-tests.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
cherokee/trunk/ChangeLog
r792 r793 1 2 2007-07-03 A.D.F <adefacc@tin.it> 3 4 * cherokee/connection.c 5 - cherokee_connection_send_header_and mmaped(): 6 - always decrement conn->mmaped_len; 7 - avoid ptr. math with pointers to void 8 by using a cast to (char *) and then back to (void *). 9 10 * qa/run-tests.py 11 - Corrected mispelled word (Sucess -> Success). 12 1 13 2007-07-04 Alvaro Lopez Ortega <alvaro@alobbs.com> 2 14 cherokee/trunk/cherokee/connection.c
r771 r793 596 596 cherokee_connection_send_header_and_mmaped (cherokee_connection_t *conn) 597 597 { 598 size_t re ;598 size_t re = 0; 599 599 ret_t ret; 600 600 int16_t nvec = 1; … … 602 602 603 603 /* 1.- Special case: There is not header to send 604 * It is becase it has been sent in a writev()604 * because it has been sent by writev() (see below) 605 605 */ 606 606 if (cherokee_buffer_is_empty (&conn->buffer)) { 607 607 ret = cherokee_socket_write (&conn->socket, conn->mmaped, conn->mmaped_len, &re); 608 switch (ret) { 609 case ret_eof: 610 case ret_eagain: 611 return ret; 612 613 case ret_error: 614 conn->keepalive = 0; 615 return ret_error; 616 617 default: 618 break; 619 } 620 608 if (unlikely (ret != ret_ok) ) { 609 switch (ret) { 610 case ret_eof: 611 case ret_eagain: 612 return ret; 613 614 case ret_error: 615 conn->keepalive = 0; 616 return ret; 617 618 default: 619 conn->keepalive = 0; 620 RET_UNKNOWN(ret); 621 return ret_error; 622 } 623 } 621 624 cherokee_connection_tx_add (conn, re); 622 625 623 /* FIXME: conn->mmaped is a ptr. to void624 * so ptr. math should be avoided.625 */ 626 conn->mmaped += re;626 /* NOTE: conn->mmaped is a ptr. to void 627 * so we have to apply ptr. math carefully. 628 */ 629 conn->mmaped = (void *) ( ((char *)conn->mmaped) + re ); 627 630 conn->mmaped_len -= (off_t) re; 628 631 629 return (conn->mmaped_len <= 0) ? ret_ok : ret_eagain;632 return (conn->mmaped_len > 0) ? ret_eagain : ret_ok; 630 633 } 631 634 … … 640 643 } 641 644 ret = cherokee_socket_writev (&conn->socket, bufs, nvec, &re); 642 643 switch (ret) { 644 case ret_ok: 645 break; 646 647 case ret_eof: 648 case ret_eagain: 649 return ret; 650 651 case ret_error: 652 conn->keepalive = 0; 653 return ret_error; 654 655 default: 656 RET_UNKNOWN(ret); 657 return ret_error; 658 } 659 645 if (unlikely (ret != ret_ok)) { 646 switch (ret) { 647 648 case ret_eof: 649 case ret_eagain: 650 return ret; 651 652 case ret_error: 653 conn->keepalive = 0; 654 return ret_error; 655 656 default: 657 RET_UNKNOWN(ret); 658 return ret_error; 659 } 660 } 660 661 /* Add to the connection traffic counter 661 662 */ 662 663 cherokee_connection_tx_add (conn, re); 663 664 664 /* If writev() has sent all data. 665 */ 666 if (re == (size_t) (conn->buffer.len + conn->mmaped_len)) { 667 cherokee_buffer_clean (&conn->buffer); 668 return ret_ok; 669 } 670 671 /* writev() may not have sent all data. 672 */ 673 if (re <= (size_t) conn->buffer.len) { 665 /* writev() may not have sent all headers data. 666 */ 667 if (unlikely (re < (size_t) conn->buffer.len)) { 668 /* Partial header data sent. 669 */ 674 670 cherokee_buffer_move_to_begin (&conn->buffer, re); 675 if (conn->mmaped_len > 0) 676 return ret_eagain; 677 return ret_ok; 678 } 679 680 /* writev() has not sent all data: 681 * re > conn->buffer.len && conn->mmaped_len > 0; 671 return ret_eagain; 672 } 673 674 /* OK, all headers have been sent, 675 * subtract from amount sent and clean header buffer. 682 676 */ 683 677 re -= (size_t) conn->buffer.len; 684 685 /* FIXME: conn->mmaped is a ptr. to void 686 * so ptr. math should be avoided. 687 */ 688 conn->mmaped += re; 678 cherokee_buffer_clean (&conn->buffer); 679 680 /* NOTE: conn->mmaped is a ptr. to void 681 * so we have to apply ptr. math carefully. 682 */ 683 conn->mmaped = (void *) ( ((char *)conn->mmaped) + re ); 689 684 conn->mmaped_len -= (off_t) re; 690 685 691 cherokee_buffer_clean (&conn->buffer); 692 693 return ret_eagain; 686 return (conn->mmaped_len > 0) ? ret_eagain : ret_ok; 694 687 } 695 688 cherokee/trunk/qa/run-tests.py
r708 r793 299 299 sys.exit(1) 300 300 elif not quiet: 301 print "Suc ess"301 print "Success" 302 302 obj.Clean() 303 303