src/sock_gnutls.c
changeset 14 3a70e5901f17
parent 12 4147fae232d9
child 27 e6639132bead
equal deleted inserted replaced
13:ca16f3a8f3b7 14:3a70e5901f17
    21     else if (ret == 0)
    21     else if (ret == 0)
    22         return SET_ERROR(err, ERR_READ_EOF);
    22         return SET_ERROR(err, ERR_READ_EOF);
    23 
    23 
    24 
    24 
    25     // eagain?
    25     // eagain?
    26     if (ret == 0) {
    26     if (ret < 0) {
    27         *len = 0;
    27         *len = 0;
    28 
    28 
    29     } else {
    29     } else {
    30         // updated length
    30         // updated length
    31         *len = ret;
    31         *len = ret;
    51     else if (ret == 0)
    51     else if (ret == 0)
    52         return SET_ERROR(err, ERR_READ_EOF);
    52         return SET_ERROR(err, ERR_READ_EOF);
    53 
    53 
    54 
    54 
    55     // eagain?
    55     // eagain?
    56     if (ret == 0) {
    56     if (ret < 0) {
    57         *len = 0;
    57         *len = 0;
    58 
    58 
    59     } else {
    59     } else {
    60         // updated length
    60         // updated length
    61         *len = ret;
    61         *len = ret;
   148 
   148 
   149     // done
   149     // done
   150     return SUCCESS;
   150     return SUCCESS;
   151 }
   151 }
   152 
   152 
       
   153 // XXX: log func
       
   154 void _log (int level, const char *msg)
       
   155 {
       
   156     printf("gnutls: %s\n", msg);
       
   157 }
       
   158 
   153 err_t sock_gnutls_global_init (struct error_info *err)
   159 err_t sock_gnutls_global_init (struct error_info *err)
   154 {
   160 {
   155     // global init
   161     // global init
   156     if ((ERROR_EXTRA(err) = gnutls_global_init()) < 0)
   162     if ((ERROR_EXTRA(err) = gnutls_global_init()) < 0)
   157         return SET_ERROR(err, ERR_GNUTLS_GLOBAL_INIT);
   163         return SET_ERROR(err, ERR_GNUTLS_GLOBAL_INIT);
   158 
   164 
   159     // init _sock_gnutls_ctx
   165     // init _sock_gnutls_ctx
   160     if (sock_gnutls_client_ctx_anon(&_sock_gnutls_client_ctx, err))
   166     if (sock_gnutls_client_ctx_anon(&_sock_gnutls_client_ctx, err))
   161         return ERROR_CODE(err);
   167         return ERROR_CODE(err);
   162 
   168 
       
   169     // XXX: debug
       
   170 //    gnutls_global_set_log_function(&_log);
       
   171 //    gnutls_global_set_log_level(11);
       
   172 
   163     // done
   173     // done
   164     return SUCCESS;
   174     return SUCCESS;
   165 }
   175 }
   166 
   176 
   167 
   177 
   168 err_t sock_gnutls_connect (struct sock_stream **sock_ptr, const char *host, const char *service, struct error_info *err)
   178 err_t sock_ssl_connect (struct sock_stream **sock_ptr, const char *host, const char *service, struct error_info *err)
   169 {
   179 {
   170     struct sock_gnutls *sock = NULL;
   180     struct sock_gnutls *sock = NULL;
   171     struct sock_gnutls_client_ctx *ctx = &_sock_gnutls_client_ctx;
   181     struct sock_gnutls_client_ctx *ctx = &_sock_gnutls_client_ctx;
   172 
   182 
   173     // alloc
   183     // alloc