X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=rnetclient.c;h=3b9ce1eac3b6e61d601c2c4476584fd865dd2460;hb=26951e1d5160db32441fe6fbac6fb05bb2666f8a;hp=137b271d1b8cc3f5aeeb313c4e830064499cfd69;hpb=bde4c96fb962e4f8f252bb6f21be8426deafbbb5;p=cascardo%2Frnetclient.git diff --git a/rnetclient.c b/rnetclient.c index 137b271..3b9ce1e 100644 --- a/rnetclient.c +++ b/rnetclient.c @@ -154,9 +154,9 @@ static int deflateRecord(char *buffer, size_t len, char **out, size_t *olen, int deflateEnd(&zstrm); return -1; } - zstrm.next_in = buffer; + zstrm.next_in = (z_const Bytef *) buffer; zstrm.avail_in = len; - zstrm.next_out = *out + 6; + zstrm.next_out = (Bytef *) *out + 6; zstrm.avail_out = len * 2 + 30; while ((r = deflate(&zstrm, Z_FINISH)) != Z_STREAM_END && zstrm.avail_out > 0); @@ -185,15 +185,15 @@ static int inflateRecord(char *buffer, size_t len, char **out, size_t *olen) zstrm.opaque = Z_NULL; if ((r = inflateInit(&zstrm)) != Z_OK) return -1; - *olen = chars2len(buffer+3); + *olen = chars2len((unsigned char *) buffer+3); *out = malloc(*olen); if (!out) { inflateEnd(&zstrm); return -1; } - zstrm.next_in = buffer + 6; + zstrm.next_in = (z_const Bytef *) buffer + 6; zstrm.avail_in = len - 6; - zstrm.next_out = *out; + zstrm.next_out = (Bytef *) *out; zstrm.avail_out = *olen; while ((r = inflate(&zstrm, Z_FINISH)) != Z_STREAM_END && zstrm.avail_out > 0); @@ -213,10 +213,8 @@ static int connect_rnet(int *c) struct addrinfo *addresses; struct addrinfo *addr; struct addrinfo hint; - struct sockaddr_in saddr; int r; int fd = *c = -1; - int i; memset(&hint, 0, sizeof(hint)); hint.ai_family = AF_UNSPEC; hint.ai_socktype = SOCK_STREAM; @@ -291,7 +289,7 @@ static int rnet_send(gnutls_session_t session, char *buffer, size_t len, int hea This chunk size worked at the first try, uploading a ~100KiB file, so let's stick with it. */ - const int maxc = 64472; + const unsigned int maxc = 64472; if (header && len > maxc) return -1; @@ -314,19 +312,18 @@ static int rnet_send(gnutls_session_t session, char *buffer, size_t len, int hea static int rnet_recv(gnutls_session_t session, struct rnet_message **message) { - char *out; - size_t olen; - int r; + char *out = NULL; + size_t olen = 0; char *buffer; size_t len; rnet_message_expand(message, 6); buffer = (*message)->buffer; - r = gnutls_record_recv(session, buffer, 6); + gnutls_record_recv(session, buffer, 6); if (buffer[0] == 0x01) { - len = chars2len(buffer+1); + len = chars2len((unsigned char *) buffer+1); rnet_message_expand(message, len); buffer = (*message)->buffer + 6; - r = gnutls_record_recv(session, buffer, len); + gnutls_record_recv(session, buffer, len); inflateRecord(buffer - 6, len + 6, &out, &olen); rnet_message_del(*message); *message = NULL; @@ -335,10 +332,10 @@ static int rnet_recv(gnutls_session_t session, struct rnet_message **message) (*message)->len = olen; free(out); } else { - len = chars2len(buffer+1); + len = chars2len((unsigned char *) buffer+1); rnet_message_expand(message, len - 1); buffer = (*message)->buffer + 6; - r = gnutls_record_recv(session, buffer, len - 1); + gnutls_record_recv(session, buffer, len - 1); (*message)->len = len + 4; rnet_message_strip(*message, 4); } @@ -350,7 +347,8 @@ static void save_rec_file(char *cpf, char *buffer, int len, const struct rnetcli int fd; char cwd[PATH_MAX]; char *path, *fname, *tmp; - size_t fname_len, r; + size_t fname_len; + ssize_t r; /* If the user provided the output directory where she wishes to save the receipt, then we use it. Otherwise, we save the file in the current working directory (CWD). */ @@ -406,7 +404,7 @@ static void save_rec_file(char *cpf, char *buffer, int len, const struct rnetcli } do { r = write(fd, buffer, len); - } while (r != len && errno == EAGAIN); + } while (r < 0 && errno == EAGAIN); if (r != len) fprintf(stderr, "Could not write to receipt file: %s", strerror(errno)); else