title: socket connection getting closed abruptly with code 141
body: <p>What im trying to do is connect to a remote server , read contents from a file on the local machine  and send it over to the server. Then capture the server response and save it. I put the GET command in a text file and am trying get the results of the same. Here is some part of the code.  Im doing this using sockets and C.</p>
  
  <pre><code>if ( inet_pton(AF_INET,ip, &amp;(nc_args-&gt;destaddr.sin_addr.s_addr)) &lt;= 0 )
      printf("\n\t\t inet_pton error");
  
  
  if (connect(sockfd, (struct sockaddr *) &amp;nc_args-&gt;destaddr, sizeof(&amp;nc_args-&gt;destaddr)) &lt; 0)
  {
      printf("\n\t\t Connection error");
      exit(1);
  }
  puts("\n\t\t Connection successful to ...");
  
  // file parameter is taken from command line and passéd to this function
  
  fp = fopen(file,"rb");
  if ( fp == NULL)
  {
      printf("\n\t\t File not found");
      exit(3);
  }
  
  else
  {
      printf("\n\t\t Found file %s\n", file);
  
      fseek(fp, 0, SEEK_END);
      file_size = ftell(fp);
      rewind(fp);
  
      //allocate memory to the buffer dynamically
  
      buffer = (char*) malloc (sizeof(char)*file_size);
      if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}
      for (i=0 ; i&lt;sizeof(buffer); i++)
      {
          printf("\n\t\t %s", buffer);
      }
      printf("\n\t\t File contains %ld bytes!\n", file_size);
      printf("\n\t\t Sending the file now");
  }
  
  
  while (1)
  {
      bytes_read = fread(buffer,1, file_size, fp);
       printf("\n\t\t The bytes read is %zd", bytes_read);
      if (bytes_read == 0) // We're done reading from the file
        {
            printf("\n\t\t The bytes read is %zd", bytes_read);
            break;
        }
      if (bytes_read &lt; 0)
      {
          printf("\n\t\t ERROR reading from file");
      }
  
      void *p = buffer;
  
      while (bytes_read &gt; 0)
      {
          ssize_t bytes_written = send(sockfd, buffer, bytes_read,0);
          if (bytes_written &lt;= 0)
          {
             printf("\n\t\t ERROR writing to socket\n");
          }
          bytes_read -= bytes_written;
          p += bytes_written;
          printf("\n\t\t Bytes %zd written", bytes_written);
      }
  }
  
  printf("\n\n\t\t Sending complete.");
  </code></pre>
  
  <p>What is happening here is that i get the message "connection successful", then it displays "sending the file now" and then the program quits unexpectedly. if i do echo $? i get 141 as the exit code. I am trying to connect from my server to a different server at work and get the results. These two can communicate correctly, and i can run the GET command from command line without issues. Its just not working from the code. Can someone let me know what the issue could be ?</p>