fix sock_gnutls_read/write EAGAIN
authorTero Marttila <terom@fixme.fi>
Sat, 28 Feb 2009 19:58:49 +0200
changeset 14 3a70e5901f17
parent 13 ca16f3a8f3b7
child 15 9bbeace56269
fix sock_gnutls_read/write EAGAIN
src/nexus.c
src/sock_gnutls.c
--- a/src/nexus.c	Sat Feb 28 19:08:51 2009 +0200
+++ b/src/nexus.c	Sat Feb 28 19:58:49 2009 +0200
@@ -12,8 +12,8 @@
 #include "sock.h"
 #include "line_proto.h"
 
-#define CONNECT_HOST "localhost"
-#define CONNECT_SERV "5002"
+#define CONNECT_HOST "irc.fixme.fi"
+#define CONNECT_SERV "6697"
 #define LINE_LENGTH 512
 
 void on_line (const char *line, void *arg) {
@@ -35,7 +35,7 @@
         errx(1, "sock_init: %s", error_msg(&_err));
 
     // over-simplified connect
-    if (sock_tcp_connect(&sock, CONNECT_HOST, CONNECT_SERV, &_err))
+    if (sock_ssl_connect(&sock, CONNECT_HOST, CONNECT_SERV, &_err))
         errx(1, "sock_gnutls_connect: %s", error_msg(&_err));
 
     // line protocol, with safety margin for buffer
--- a/src/sock_gnutls.c	Sat Feb 28 19:08:51 2009 +0200
+++ b/src/sock_gnutls.c	Sat Feb 28 19:58:49 2009 +0200
@@ -23,7 +23,7 @@
 
 
     // eagain?
-    if (ret == 0) {
+    if (ret < 0) {
         *len = 0;
 
     } else {
@@ -53,7 +53,7 @@
 
 
     // eagain?
-    if (ret == 0) {
+    if (ret < 0) {
         *len = 0;
 
     } else {
@@ -150,6 +150,12 @@
     return SUCCESS;
 }
 
+// XXX: log func
+void _log (int level, const char *msg)
+{
+    printf("gnutls: %s\n", msg);
+}
+
 err_t sock_gnutls_global_init (struct error_info *err)
 {
     // global init
@@ -160,12 +166,16 @@
     if (sock_gnutls_client_ctx_anon(&_sock_gnutls_client_ctx, err))
         return ERROR_CODE(err);
 
+    // XXX: debug
+//    gnutls_global_set_log_function(&_log);
+//    gnutls_global_set_log_level(11);
+
     // done
     return SUCCESS;
 }
 
 
-err_t sock_gnutls_connect (struct sock_stream **sock_ptr, const char *host, const char *service, struct error_info *err)
+err_t sock_ssl_connect (struct sock_stream **sock_ptr, const char *host, const char *service, struct error_info *err)
 {
     struct sock_gnutls *sock = NULL;
     struct sock_gnutls_client_ctx *ctx = &_sock_gnutls_client_ctx;