view tests/sigpipe.c @ 1261:465bd3c7d932

[xemacs-hg @ 2003-02-06 06:35:47 by ben] various bug fixes mule/cyril-util.el: Fix compile warning. loadup.el, make-docfile.el, update-elc-2.el, update-elc.el: Set stack-trace-on-error, load-always-display-messages so we get better debug results. update-elc-2.el: Fix typo in name of lisp/mule, leading to compile failure. simple.el: Omit M-S-home/end from motion keys. update-elc.el: Overhaul: -- allow list of "early-compile" files to be specified, not hardcoded -- fix autoload checking to include all .el files, not just dumped ones -- be smarter about regenerating autoloads, so we don't need to use loadup-el if not necessary -- use standard methods for loading/not loading auto-autoloads.el (maybe fixes "Already loaded" error?) -- rename misleading NOBYTECOMPILE flag file. window-xemacs.el: Fix bug in default param. window-xemacs.el: Fix compile warnings. lwlib-Xm.c: Fix compile warning. lispref/mule.texi: Lots of Mule rewriting. internals/internals.texi: Major fixup. Correct for new names of Bytebpos, Ichar, etc. and lots of Mule rewriting. config.inc.samp: Various fixups. Makefile.in.in: NOBYTECOMPILE -> BYTECOMPILE_CHANGE. esd.c: Warning fixes. fns.c: Eliminate bogus require-prints-loading-message; use already existent load-always-display-messages instead. Make sure `load' knows we are coming from `require'. lread.c: Turn on `load-warn-when-source-newer' by default. Change loading message to indicate when we are `require'ing. Eliminate purify_flag hacks to display more messages; instead, loadup and friends specify this explicitly with `load-always-display-messages'. Add spaces when batch to clearly indicate recursive loading. Fassoc() does not GC so no need to gcpro. gui-x.c, gui-x.h, menubar-x.c: Fix up crashes when selecting menubar items due to lack of GCPROing of callbacks in lwlib structures. eval.c, lisp.h, print.c: Don't canonicalize to selected-frame when noninteractive, or backtraces get all screwed up as some values are printed through the stream console and some aren't. Export canonicalize_printcharfun() and use in Fbacktrace().
author ben
date Thu, 06 Feb 2003 06:36:17 +0000
parents 3f6adebda25c
children 679041362cd4
line wrap: on
line source

/* code is all from loser.c and loser.el by Mly

Copyright (C) 2002 Richard Mlynarik <mly@pobox.com>

This is part of XEmacs

Compile this file.  Run it in the background giving it a command line
argument PORT which is a positive integer 1024 < PORT < 32768 (avoid the
numbers assigned in /etc/services).

Then start up a fresh (you're going to crash) XEmacs.  Execute the following

(defun lose (port)
  (interactive "nUrk: ")
  (require 'comint)
  (while t
    (condition-case e
        (let* ((name "*lose*")
	       (b (get-buffer-create name)))
          (switch-to-buffer b)
          (comint-mode)
          (comint-exec b name (cons "127.0.0.1" port) nil '())
          (process-send-string (get-buffer-process b) "\377\373\001")
          (process-send-string (get-buffer-process b) "\377\373\001"))
      (error (message "URK: %s" e)) (sit-for 1))))

Then M-x lose RET PORT RET and you lose big (in XEmacs 21.1, anyway).
Note: the error messages are proper functioning.  What should eventually
happen after a number of SIGPIPEs is that you get a SIGSEGV and life is
bad and XEmacs is dead.
*/

#include <arpa/inet.h>

int
main (int argc, char **argv)
{
  struct sockaddr_in junk;
  int s;

  memset (&junk, 0, sizeof (junk));

  junk.sin_family = AF_INET;
  junk.sin_addr.s_addr = htonl (INADDR_ANY); /* un*x sucks */
  junk.sin_port = htons (atoi (argv[1])); /* un*x blows */

  s = socket (PF_INET, SOCK_STREAM, 0);

  bind (s, (struct sockaddr *)&junk, sizeof (junk));

  listen (s, 1);
  
  for (;;)
  {
    int loser = accept (s, NULL, 0);
    close (loser);
  }
}