]> mj.ucw.cz Git - eval.git/blobdiff - submit/connect.c
Logfile of submit and check renamed to `check-log' to prevent collisions.
[eval.git] / submit / connect.c
index d0c83ffe47dac808d3a1a2c17d6e10c1223acd7c..7f60f6df4a2ffff93f5055fc8d9f324fd869208e 100644 (file)
@@ -156,20 +156,36 @@ int main(int argc UNUSED, char **argv UNUSED)
   for (;;)
     {
       byte buf[1024];
   for (;;)
     {
       byte buf[1024];
-      if (!fgets(buf, sizeof(buf), stdin))
-       break;
-      int len = strlen(buf);
-      err = gnutls_record_send(s, buf, len); TLS_CHECK(gnutls_record_send);
-      err = gnutls_record_recv(s, buf, len); TLS_CHECK(gnutls_record_recv);
-      if (!err)
+      do
        {
        {
-         log(L_INFO, "Connection closed");
-         break;
+         if (!fgets(buf, sizeof(buf), stdin))
+           goto done;
+         int len = strlen(buf);
+         err = gnutls_record_send(s, buf, len); TLS_CHECK(gnutls_record_send);
        }
        }
-      fwrite(buf, 1, err, stdout);
+      while (buf[0] != '\n');
+      int last = 0;
+      for (;;)
+       {
+         err = gnutls_record_recv(s, buf, sizeof(buf)); TLS_CHECK(gnutls_record_recv);
+         if (!err)
+           {
+             log(L_INFO, "Connection closed");
+             break;
+           }
+         fwrite(buf, 1, err, stdout);
+         for (int i=0; i<err; i++)
+           {
+             if (buf[i] == '\n' && last == '\n')
+               goto next;
+             last = buf[i];
+           }
+       }
+next:
       fflush(stdout);
     }
 
       fflush(stdout);
     }
 
+done:
   gnutls_bye(s, GNUTLS_SHUT_RDWR);
   close(sk);
   gnutls_deinit(s);
   gnutls_bye(s, GNUTLS_SHUT_RDWR);
   close(sk);
   gnutls_deinit(s);