diff --git a/common/trans.c b/common/trans.c index 2c44f28c..fb939a85 100644 --- a/common/trans.c +++ b/common/trans.c @@ -442,45 +442,42 @@ trans_force_read_s(struct trans *self, struct stream *in_s, int size) { return 1; } - if (self->trans_can_recv(self, self->sck, 100)) + rcvd = self->trans_recv(self, in_s->end, size); + if (rcvd == -1) { - rcvd = self->trans_recv(self, in_s->end, size); - if (rcvd == -1) + if (g_tcp_last_error_would_block(self->sck)) { - if (g_tcp_last_error_would_block(self->sck)) - { - } - else + if (!self->trans_can_recv(self, self->sck, 100)) { - /* error */ - self->status = TRANS_STATUS_DOWN; - return 1; + /* check for term here */ + if (self->is_term != 0) + { + if (self->is_term()) + { + /* term */ + self->status = TRANS_STATUS_DOWN; + return 1; + } + } } } - else if (rcvd == 0) + else { /* error */ self->status = TRANS_STATUS_DOWN; return 1; } - else - { - in_s->end += rcvd; - size -= rcvd; - } + } + else if (rcvd == 0) + { + /* error */ + self->status = TRANS_STATUS_DOWN; + return 1; } else { - /* check for term here */ - if (self->is_term != 0) - { - if (self->is_term()) - { - /* term */ - self->status = TRANS_STATUS_DOWN; - return 1; - } - } + in_s->end += rcvd; + size -= rcvd; } } return 0; @@ -514,44 +511,41 @@ trans_force_write_s(struct trans *self, struct stream *out_s) } while (total < size) { - if (g_tcp_can_send(self->sck, 100)) + sent = self->trans_send(self, out_s->data + total, size - total); + if (sent == -1) { - sent = self->trans_send(self, out_s->data + total, size - total); - if (sent == -1) + if (g_tcp_last_error_would_block(self->sck)) { - if (g_tcp_last_error_would_block(self->sck)) + if (!g_tcp_can_send(self->sck, 100)) { - } - else - { - /* error */ - self->status = TRANS_STATUS_DOWN; - return 1; + /* check for term here */ + if (self->is_term != 0) + { + if (self->is_term()) + { + /* term */ + self->status = TRANS_STATUS_DOWN; + return 1; + } + } } } - else if (sent == 0) + else { /* error */ self->status = TRANS_STATUS_DOWN; return 1; } - else - { - total = total + sent; - } + } + else if (sent == 0) + { + /* error */ + self->status = TRANS_STATUS_DOWN; + return 1; } else { - /* check for term here */ - if (self->is_term != 0) - { - if (self->is_term()) - { - /* term */ - self->status = TRANS_STATUS_DOWN; - return 1; - } - } + total = total + sent; } } return 0;