diff mcabber/socket.c @ 21:7eeda3a06b21

[/trunk] Changeset 36 by mikael * Translations, cleanups.
author mikael
date Sun, 27 Mar 2005 18:52:11 +0000
parents 0c2d2b79c4b5
children
line wrap: on
line diff
--- a/mcabber/socket.c	Thu Mar 24 22:02:21 2005 +0000
+++ b/mcabber/socket.c	Sun Mar 27 18:52:11 2005 +0000
@@ -8,6 +8,8 @@
 #include "socket.h"
 #include <signal.h>
 
+#include "screen.h" // FIXME to be removed
+
 /* Desc: create socket connection
  * 
  * In  : servername, port
@@ -60,7 +62,7 @@
 {
   int i = 1;
   int tambuffer = 128;
-  char mtag[16];
+  char mtag[16];    // For tag name
 
   char *buffer = malloc(tambuffer);
   char *retval = malloc(tambuffer + 1);
@@ -70,7 +72,13 @@
 
   while (1) {
     char *p1;
-    recv(sock, buffer, tambuffer, 0);
+    int n = recv(sock, buffer, tambuffer, 0);
+    if (n == -1) {
+      // Error
+      free(buffer);
+      retval[0] = 0;
+      return retval;
+    }
 
     if (i == 1) {
       char *p2;
@@ -82,6 +90,9 @@
       *p2++ = '>'; *p2++ = 0;
       //fprintf(stderr, "TAG=\"%s\"\n", mtag);
     } else {
+      scr_LogPrint("Realloc %d [%d]", i-1, n);
+      if (!n)
+        break;
       retval = realloc(retval, (tambuffer * i) + 1);
       strncat(retval, buffer, tambuffer + 1);
     }