summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--PICA_client.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/PICA_client.c b/PICA_client.c
index 14d2082..69e3da0 100644
--- a/PICA_client.c
+++ b/PICA_client.c
@@ -2356,13 +2356,13 @@ static int process_c2c(struct PICA_c2c *c2c, fd_set *rfds, fd_set *wfds)
if (FD_ISSET(c2c->sck_data, wfds)
|| c2c->directc2c_state == PICA_DIRECTC2C_STATE_ACTIVE && FD_ISSET(c2c->direct->sck, wfds))
{
- if (c2c->write_pos > 0)
+ if (c2c->sendfilestate == PICA_CHANSENDFILESTATE_SENDING && c2c->write_pos == 0)
{
- ret = PICA_write_c2c(c2c);
+ ret = PICA_send_file_fragment(c2c);
}
- else if (c2c->sendfilestate == PICA_CHANSENDFILESTATE_SENDING)
+ if (c2c->write_pos > 0)
{
- ret = PICA_send_file_fragment(c2c);
+ ret = PICA_write_c2c(c2c);
}
}
@@ -3361,7 +3361,7 @@ int PICA_send_file_fragment(struct PICA_c2c *chn)
if (chn->sendfilestate != PICA_CHANSENDFILESTATE_SENDING)
return PICA_ERRFILETRANSFERNOTINPROGRESS;
- fragment_size = fread(buf, 1, PICA_FILEFRAGMENTSIZE, chn->sendfile_stream);
+ fragment_size = fread(buf, 1, PICA_FILEFRAGMENTSIZE - 4, chn->sendfile_stream);
if (fragment_size == 0)
{