Merge branch 'master' of ssh://git.citadel.org/appl/gitroot/citadel
authorWilfried Goesgens <dothebart@citadel.org>
Thu, 14 Jun 2012 22:06:26 +0000 (00:06 +0200)
committerWilfried Goesgens <dothebart@citadel.org>
Thu, 14 Jun 2012 22:06:26 +0000 (00:06 +0200)
citadel/file_ops.c
webcit/tcp_sockets.c

index 75670266b73d9a5aec9382d4ab9f18de5840b43c..a3e8d749859590c8ea035e51a59f9ab010ea71b0 100644 (file)
@@ -610,8 +610,13 @@ void cmd_read(char *cmdbuf)
        }
 
        rc = fseek(CC->download_fp, start_pos, 0);
-       if (rc != start_pos) {
+       if (rc < 0) {
                cprintf("%d your file is smaller then %ld.\n", ERROR + ILLEGAL_VALUE, start_pos);
+               syslog(LOG_ALERT, "your file %s is smaller then %ld. [%s]\n", 
+                      CC->upl_path, 
+                      start_pos,
+                      strerror(errno));
+
                return;
        }
        bytes = fread(buf, 1, bytes, CC->download_fp);
index e45231f56a3dd21eba074192ca3facc0d4012ae8..e163c9b57f4cc7d8a7bdf4a11a239f22db38c90f 100644 (file)
@@ -396,13 +396,14 @@ int serv_read_binary(StrBuf *Ret, size_t total_len, StrBuf *Buf)
        wcsession *WCC = WC;
        size_t bytes_read = 0;
        size_t this_block = 0;
-       int rc;
+       int rc = 6;
+       int ServerRc = 6;
 
        if (Ret == NULL) {
                return -1;
        }
 
-       while (bytes_read < total_len) {
+       while ((bytes_read < total_len) && (ServerRc == 6)) {
 
                if (WCC->serv_sock==-1) {
                        FlushStrBuf(Ret); 
@@ -410,7 +411,8 @@ int serv_read_binary(StrBuf *Ret, size_t total_len, StrBuf *Buf)
                }
 
                serv_printf("READ "SIZE_T_FMT"|"SIZE_T_FMT, bytes_read, total_len-bytes_read);
-               if ( (rc = StrBuf_ServGetln(Buf) > 0) && (GetServerStatus(Buf, NULL) == 6) ) 
+               if ( (rc = StrBuf_ServGetln(Buf) > 0) &&
+                    (ServerRc = GetServerStatus(Buf, NULL), ServerRc == 6) ) 
                {
                        if (rc < 0)
                                return rc;