--- 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);
}