[Date Prev] [Date Index] [Date Next] [Thread Prev] [Thread Index] [Thread Next]

Re: Conserver Problems: Slow Start & SSL Errors

Bryan Stansell bryan@conserver.com
Sat, 3 Sep 2005 08:04:11 -0700 (PDT)


thanks for the logfile.  it was the same as what i had crafted and i
couldn't get it to fail, so i figured that must be more os-specific.  i
got onto a linux box and, wham, it crashed.

i've attached a patch for (what i can see now) is an obvious problem
(worked before the STRING type was changed around - but was bad form
nonetheless).

anyway, apply the patch to 8.1.11 and let me know if you continue to see
problems.  you shouldn't.

Bryan

On Thu, Sep 01, 2005 at 05:32:32AM -0600, Ryan Kirkpatrick wrote:
> Such a log file is attached, it is from an unused (currently) port on my
> console server. It does not matter which port it is associated with, as
> all ports are showing this behavior. When it is the log file for 'port30',
> the following is what occurs when I try to connect (i.e. console -A
> port30):
diff -cr conserver-8.1.11/conserver/client.c conserver-8.1.11-new/conserver/client.c
*** conserver-8.1.11/conserver/client.c	Mon Oct 25 00:18:18 2004
--- conserver-8.1.11-new/conserver/client.c	Sat Sep  3 07:59:26 2005
***************
*** 250,274 ****
  		    /* this is a mark and the previous line is also
  		     * a mark, so make (or continue) that range
  		     */
! 		    if (0 == lines[ln - 1].mark_end->allocated) {
  			/* this is a new range - shuffle pointers
  			 *
  			 * remember that we are moving backward
  			 */
! 			*(lines[ln - 1].mark_end) = *(lines[ln - 1].line);
! 			InitString(lines[ln - 1].line);
! 		    }
! 		    /* if unallocated, cheat and shuffle pointers */
! 		    if (0 == lines[ln - 1].line->allocated) {
! 			*(lines[ln - 1].line) = *(lines[ln].line);
! 			InitString(lines[ln].line);
! 		    } else {
  			BuildString((char *)0, lines[ln - 1].line);
- 			BuildStringN(lines[ln].line->string,
- 				     lines[ln].line->used - 1,
- 				     lines[ln - 1].line);
- 			BuildString((char *)0, lines[ln].line);
  		    }
  		    ln--;
  		}
  		lines[ln].is_mark = is_mark;
--- 250,270 ----
  		    /* this is a mark and the previous line is also
  		     * a mark, so make (or continue) that range
  		     */
! 		    if (0 == lines[ln - 1].mark_end->used) {
  			/* this is a new range - shuffle pointers
  			 *
  			 * remember that we are moving backward
  			 */
! 			BuildStringN(lines[ln - 1].line->string,
! 				     lines[ln - 1].line->used - 1,
! 				     lines[ln - 1].mark_end);
  			BuildString((char *)0, lines[ln - 1].line);
  		    }
+ 		    BuildString((char *)0, lines[ln - 1].line);
+ 		    BuildStringN(lines[ln].line->string,
+ 			    lines[ln].line->used - 1,
+ 			    lines[ln - 1].line);
+ 		    BuildString((char *)0, lines[ln].line);
  		    ln--;
  		}
  		lines[ln].is_mark = is_mark;