X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=rnetclient.c;h=4e3f4696a28c0a26051f9d1f244f2f0f7660e371;hb=f998dba022f231d1cae5d90a69bdc03a8de7e25d;hp=b5a8052a2966aa950b842b73de10bd3499590b44;hpb=6587900951afaa59075fcced40ba22fded88f1fe;p=cascardo%2Flibreceita.git diff --git a/rnetclient.c b/rnetclient.c index b5a8052..4e3f469 100644 --- a/rnetclient.c +++ b/rnetclient.c @@ -27,6 +27,9 @@ #include #include #include +#include "decfile.h" +#include "rnet_message.h" +#include "rnet_encode.h" static void * get_creds(char *certfile) { @@ -165,6 +168,12 @@ static int handshake(int c) return 0; } +static void usage(void) +{ + fprintf(stderr, "rnetclient [filename]\n"); + exit(1); +} + int main(int argc, char **argv) { int c; @@ -172,8 +181,22 @@ int main(int argc, char **argv) char buffer[2048]; char *out; size_t olen; + struct rnet_decfile *decfile; + struct rnet_message *message = NULL; gnutls_session_t session; + + if (argc < 2) { + usage(); + } + + decfile = rnet_decfile_open(argv[1]); + if (!decfile) { + fprintf(stderr, "could not parse %s: %s\n", argv[1], strerror(errno)); + exit(1); + } + gnutls_global_init(); + session_new(&session); r = connect_rnet(&c); if (r) { @@ -189,15 +212,19 @@ int main(int argc, char **argv) if ((r = gnutls_handshake(session)) < 0) fprintf(stderr, "error in handshake: %s\n", gnutls_strerror(r)); - else - fprintf(stderr, "handshake ok\n"); - r = read(0, buffer, sizeof(buffer)); - deflateRecord(buffer, r, &out, &olen); + + rnet_encode(decfile, &message); + deflateRecord(message->buffer, message->len, &out, &olen); gnutls_record_send(session, out, olen); free(out); + while ((r = gnutls_record_recv(session, buffer, sizeof(buffer))) > 0) write(1, buffer, r); close(c); + + rnet_decfile_close(decfile); + gnutls_global_deinit(); + return 0; }