/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to plugins.d/mandos-client.c

  • Committer: Teddy Hogeborn
  • Date: 2009-09-17 01:21:27 UTC
  • Revision ID: teddy@fukt.bsnet.se-20090917012127-4kwzquwuvudwucuv
* debian/control (Standards-Version): Updated to "2.8.3".

* mandos-client.conf.xml (OPTIONS/timeout): Add that a successful
                                            client request will also
                                            reset the timeout.
* mandos.xml (CHECKING): - '' -

Show diffs side-by-side

added added

removed removed

Lines of Context:
142
142
                      .dh_bits = 1024, .priority = "SECURE256"
143
143
                      ":!CTYPE-X.509:+CTYPE-OPENPGP" };
144
144
 
145
 
sig_atomic_t quit_now = 0;
146
 
int signal_received = 0;
147
 
 
148
145
/*
149
146
 * Make additional room in "buffer" for at least BUFFER_SIZE more
150
147
 * bytes. "buffer_capacity" is how much is currently allocated,
479
476
  /* GnuTLS session creation */
480
477
  do {
481
478
    ret = gnutls_init(session, GNUTLS_SERVER);
482
 
    if(quit_now){
483
 
      return -1;
484
 
    }
485
479
  } while(ret == GNUTLS_E_INTERRUPTED or ret == GNUTLS_E_AGAIN);
486
480
  if(ret != GNUTLS_E_SUCCESS){
487
481
    fprintf(stderr, "Error in GnuTLS session initialization: %s\n",
492
486
    const char *err;
493
487
    do {
494
488
      ret = gnutls_priority_set_direct(*session, mc.priority, &err);
495
 
      if(quit_now){
496
 
        gnutls_deinit(*session);
497
 
        return -1;
498
 
      }
499
489
    } while(ret == GNUTLS_E_INTERRUPTED or ret == GNUTLS_E_AGAIN);
500
490
    if(ret != GNUTLS_E_SUCCESS){
501
491
      fprintf(stderr, "Syntax error at: %s\n", err);
509
499
  do {
510
500
    ret = gnutls_credentials_set(*session, GNUTLS_CRD_CERTIFICATE,
511
501
                                 mc.cred);
512
 
    if(quit_now){
513
 
      gnutls_deinit(*session);
514
 
      return -1;
515
 
    }
516
502
  } while(ret == GNUTLS_E_INTERRUPTED or ret == GNUTLS_E_AGAIN);
517
503
  if(ret != GNUTLS_E_SUCCESS){
518
504
    fprintf(stderr, "Error setting GnuTLS credentials: %s\n",
533
519
static void empty_log(__attribute__((unused)) AvahiLogLevel level,
534
520
                      __attribute__((unused)) const char *txt){}
535
521
 
 
522
sig_atomic_t quit_now = 0;
 
523
int signal_received = 0;
 
524
 
536
525
/* Called when a Mandos server is found */
537
526
static int start_mandos_communication(const char *ip, uint16_t port,
538
527
                                      AvahiIfIndex if_index,
586
575
  }
587
576
  
588
577
  if(quit_now){
589
 
    retval = -1;
590
578
    goto mandos_end;
591
579
  }
592
580
  
632
620
  }
633
621
  
634
622
  if(quit_now){
635
 
    retval = -1;
636
623
    goto mandos_end;
637
624
  }
638
625
  
669
656
  }
670
657
  
671
658
  if(quit_now){
672
 
    retval = -1;
673
659
    goto mandos_end;
674
660
  }
675
661
  
685
671
  }
686
672
  
687
673
  if(quit_now){
688
 
    retval = -1;
689
674
    goto mandos_end;
690
675
  }
691
676
  
713
698
    }
714
699
  
715
700
    if(quit_now){
716
 
      retval = -1;
717
701
      goto mandos_end;
718
702
    }
719
703
  }
723
707
  }
724
708
  
725
709
  if(quit_now){
726
 
    retval = -1;
727
710
    goto mandos_end;
728
711
  }
729
712
  
730
713
  gnutls_transport_set_ptr(session, (gnutls_transport_ptr_t) tcp_sd);
731
714
  
732
715
  if(quit_now){
733
 
    retval = -1;
734
716
    goto mandos_end;
735
717
  }
736
718
  
737
719
  do {
738
720
    ret = gnutls_handshake(session);
739
721
    if(quit_now){
740
 
      retval = -1;
741
722
      goto mandos_end;
742
723
    }
743
724
  } while(ret == GNUTLS_E_AGAIN or ret == GNUTLS_E_INTERRUPTED);
761
742
  while(true){
762
743
    
763
744
    if(quit_now){
764
 
      retval = -1;
765
745
      goto mandos_end;
766
746
    }
767
747
    
774
754
    }
775
755
    
776
756
    if(quit_now){
777
 
      retval = -1;
778
757
      goto mandos_end;
779
758
    }
780
759
    
793
772
          ret = gnutls_handshake(session);
794
773
          
795
774
          if(quit_now){
796
 
            retval = -1;
797
775
            goto mandos_end;
798
776
          }
799
777
        } while(ret == GNUTLS_E_AGAIN or ret == GNUTLS_E_INTERRUPTED);
821
799
  }
822
800
  
823
801
  if(quit_now){
824
 
    retval = -1;
825
 
    goto mandos_end;
826
 
  }
827
 
  
828
 
  do {
829
 
    ret = gnutls_bye(session, GNUTLS_SHUT_RDWR);
830
 
    if(quit_now){
831
 
      retval = -1;
832
 
      goto mandos_end;
833
 
    }
834
 
  } while(ret == GNUTLS_E_AGAIN or ret == GNUTLS_E_INTERRUPTED);
 
802
    goto mandos_end;
 
803
  }
 
804
  
 
805
  gnutls_bye(session, GNUTLS_SHUT_RDWR);
 
806
  
 
807
  if(quit_now){
 
808
    goto mandos_end;
 
809
  }
835
810
  
836
811
  if(buffer_length > 0){
837
812
    ssize_t decrypted_buffer_size;
843
818
      written = 0;
844
819
      while(written < (size_t) decrypted_buffer_size){
845
820
        if(quit_now){
846
 
          retval = -1;
847
821
          goto mandos_end;
848
822
        }
849
823