summaryrefslogtreecommitdiffstats
path: root/PICA_client.c
diff options
context:
space:
mode:
authorme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2014-07-04 01:03:36 +0000
committerme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2014-07-04 01:03:36 +0000
commit3e1c3cd989180d2085ce5af7f4db2b156d5df578 (patch)
treeeb3a0d178b9ba41133558fdd416a3e3471c2f4d2 /PICA_client.c
parentaf3c479447078c889b1bbb7a5e405c6f61620e82 (diff)
downloadpica-pica-3e1c3cd989180d2085ce5af7f4db2b156d5df578.tar.gz
pica-pica-3e1c3cd989180d2085ce5af7f4db2b156d5df578.zip
implemented file transfer cancellation
git-svn-id: svn://localhost/project_picapica/trunk@315 fb96df88-216d-11de-830c-f3023f12d8ac
Diffstat (limited to 'PICA_client.c')
-rwxr-xr-xPICA_client.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/PICA_client.c b/PICA_client.c
index 6d428e4..50751d4 100755
--- a/PICA_client.c
+++ b/PICA_client.c
@@ -1827,6 +1827,39 @@ if (sending)
return PICA_send_filecontrol(chan, senderctl, receiverctl);
}
+int PICA_cancel_file(struct PICA_chaninfo *chan, int sending)
+{
+int senderctl = PICA_PROTO_FILECONTROL_VOID;
+int receiverctl = PICA_PROTO_FILECONTROL_VOID;
+
+if (sending)
+ {
+ if (chan->sendfilestate != PICA_CHANSENDFILESTATE_SENDING
+ && chan->sendfilestate != PICA_CHANSENDFILESTATE_PAUSED)
+ return PICA_ERRINVARG;
+
+ fclose(chan->sendfile_stream);
+ chan->sendfile_stream = NULL;
+ chan->sendfilestate = PICA_CHANSENDFILESTATE_IDLE;
+
+ senderctl = PICA_PROTO_FILECONTROL_CANCEL;
+ }
+ else
+ {
+ if (chan->recvfilestate != PICA_CHANRECVFILESTATE_RECEIVING
+ && chan->recvfilestate != PICA_CHANRECVFILESTATE_PAUSED)
+ return PICA_ERRINVARG;
+
+ fclose(chan->recvfile_stream);
+ chan->recvfile_stream = NULL;
+ chan->recvfilestate = PICA_CHANRECVFILESTATE_IDLE;
+
+ receiverctl = PICA_PROTO_FILECONTROL_CANCEL;
+ }
+
+return PICA_send_filecontrol(chan, senderctl, receiverctl);
+}
+
int PICA_send_filecontrol(struct PICA_chaninfo *chan, int senderctl, int receiverctl)
{
struct PICA_proto_msg *mp;