140 /* open file if not already opened */ 141 if (-1 == c->file.fd) { 142 if (-1 == (c->file.fd = open(c->file.name->ptr, O_RDONLY))) { 143 log_error_write(srv, __FILE__, __LINE__, "ss", "open failed: ", strerror(errno)); 144 145 return -1; 146 } |
673 /* write chunks from output_queue to network */ 674 switch(network_write_chunkqueue(srv, con, con->output_queue)) { 675 case 0: 676 if (finished) { 677 connection_set_state(srv, con, CON_STATE_RESPONSE_END); 678 joblist_append(srv, con); 679 } else { 680 /* not finished yet -> WRITE */ 681 con->is_writable = 1; 682 } 683 break; 684 case -1: /* error on our side */ 685 log_error_write(srv, __FILE__, __LINE__, "sd", 686 "connection closed: write failed on fd", con->fd); 687 connection_set_state(srv, con, CON_STATE_ERROR); 688 joblist_append(srv, con); 689 break; 690 case -2: /* remote close */ 691 connection_set_state(srv, con, CON_STATE_ERROR); 692 joblist_append(srv, con); 693 break; 694 case 1: 695 con->is_writable = 0; 696 697 /* not finished yet -> WRITE */ 698 break; 699 } 700 701 return 0; 702 } |
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |