X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=innduct.git;a=blobdiff_plain;f=conn.c;h=36f554f1a6e422ca34e3de52540bea7157750dc4;hp=fa8316da46b47ae3e5f4a11cddfc533422382cd7;hb=7f2f7562ac7c2fd27bfe2cf9f9edb87a6ce13c7f;hpb=f84b85b4ad95d19420d6e1d1ca774a0378910906 diff --git a/conn.c b/conn.c index fa8316d..36f554f 100644 --- a/conn.c +++ b/conn.c @@ -100,7 +100,7 @@ void vconnfail(Conn *conn, const char *fmt, va_list al) { LIST_REMOVE(conns,conn); - char *m= xvasprintf(fmt,al); + char *m= mvasprintf(fmt,al); warn("C%d (now %d) connection failed " "(requeueing " RCI_TRIPLE_FMT_BASE "): %s", conn->fd, conns.count, RCI_TRIPLE_VALS_BASE(requeue, /*nothing*/), m); @@ -327,7 +327,7 @@ static void *connchild_event(oop_source *lp, int fd, oop_event e, void *u) { loop->on_fd(loop, conn->fd, OOP_EXCEPTION, conn_exception, conn); conn->rd= oop_rd_new_fd(loop,conn->fd, 0, 0); /* sets nonblocking, too */ if (!conn->fd) crash("oop_rd_new_fd conn failed (fd=%d)",conn->fd); - int r= oop_rd_read(conn->rd, &peer_rd_style, NNTP_STRLEN, + int r= oop_rd_read(conn->rd, &peer_rd_style, NNTP_MAXLEN_COMMAND+1, &peer_rd_ok, conn, &peer_rd_err, conn); if (r) syscrash("oop_rd_read for peer (fd=%d)",conn->fd); @@ -370,13 +370,15 @@ void connect_start(void) { if (!connecting_child) { FILE *cn_from, *cn_to; - char buf[NNTP_STRLEN+100]; + char buf[NNTP_MAXLEN_COMMAND+100]; int exitstatus= CONNCHILD_ESTATUS_NOSTREAM; xclose(socks[0], "(in child) parent's connection fdpass socket",0); alarm(connection_setup_timeout); - if (NNTPconnect((char*)remote_host, port, &cn_from, &cn_to, buf) < 0) { + buf[sizeof(buf)-1] = 0; + if (NNTPconnect(remote_host, port, &cn_from, &cn_to, + buf, sizeof(buf)-1) < 0) { int l= strlen(buf); int stripped=0; while (l>0) {