int main(int argc, char **argv)
{
int c;
- int r;
+ int r = 0;
struct rnet_decfile *decfile;
struct rnet_message *message = NULL;
struct rnetclient_args rnet_args;
if (r) {
fprintf(stderr, "error connecting to server: %s\n",
r == EAI_SYSTEM ? strerror(errno) : gai_strerror(r));
- exit(1);
+ r = 1;
+ goto out_connect;
}
gnutls_transport_set_ptr(session, (gnutls_transport_ptr_t)(intptr_t) c);
r = handshake(c);
if (r < 0) {
- exit(1);
+ r = 1;
+ goto out_handshake;
}
- if ((r = gnutls_handshake(session)) < 0)
+ if ((r = gnutls_handshake(session)) < 0) {
fprintf(stderr, "error in handshake: %s\n",
gnutls_strerror(r));
+ r = 1;
+ goto out_handshake;
+ }
r = rnet_encode(decfile, &message);
if (r < 0) {
fprintf(stderr, "error encoding message, file not supported?\n");
+ r = 1;
goto out;
}
r = rnet_recv(session, &message);
if (r || !message || message->len == 0) {
fprintf(stderr, "error when receiving response\n");
+ r = 1;
goto out;
}
switch (message->buffer[0]) {
r = rnet_recv(session, &message);
if (r || !message || message->len == 0) {
fprintf(stderr, "error when receiving response\n");
+ r = 1;
goto out;
}
switch (message->buffer[0]) {
out:
gnutls_bye(session, GNUTLS_SHUT_RDWR);
+out_handshake:
close(c);
- rnet_decfile_close(decfile);
+out_connect:
gnutls_global_deinit();
+ rnet_decfile_close(decfile);
- return 0;
+ return r;
}