diff --git a/src/ChangeLog b/src/ChangeLog
index b41e1b57244d5cfac20368a3ec653461794d405a..bc8c7a903cb2064cffaea57f3fbfa6b69ceb9bae 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,29 @@
+1999-08-23  David Byers  <davby@ida.liu.se>
+
+	* startup.el: Set the process coding system of the network stream
+	to iso-8859-1 to avoid stupidities like Gnu Emacs sending its
+	internal representation of swedish characters to the server (and
+	lying about the length of the string in question.)
+
+	* compatibility.el (set-process-coding-system): New compatibility
+	function.
+
+1999-08-19  David Byers  <davby@ida.liu.se>
+
+	* commands2.el (kom-change-conf-type): Fixed bug in call to
+	mapconcat.
+
+1999-08-18  David Byers  <davby@ida.liu.se>
+
+	* prefetch.el (lyskom-prefetch-cancel-prefetch-map): New function.
+	(lyskom-skip-finished-in-queue): Handle CANCELED elements
+	(lyskom-prefetch-one-item): Handle CANCELED elements
+
+	* reading.el (lyskom-enter-map-in-to-do-list): Don't bug out if we 
+	get a map for a conference we're not a member of. This can happen
+	when there are RPC calls pending and we do something to the
+	membership list (a refetch, leave a conference, etc.)
+
 1999-08-22  David Byers  <davby@ida.liu.se>
 
 	* edit-text.el (lyskom-edit-send-check-recipients): Check for
diff --git a/src/TODO b/src/TODO
index 8895411960b4a8fcd365e3f4a954d41aef8e0c4b..3d38cc0ec48ebbcbba788b7e7302fad10713fb9b 100644
--- a/src/TODO
+++ b/src/TODO
@@ -7,6 +7,10 @@ Att g
             listan, gl�m inte att ta bort det fr�n listan!
 
 
+N�r man har k�rt prefetchen f�r man en skum k� i lyskom-prefetch-stack 
+som inte inneh�ller n�got annat �n element som �r k�er vars sista
+element �r FINISHED. Ibland verkar k�erna bli cirkul�ra.
+
 Man borde anv�nda next-command-event med v�nner i silent-read och
 j-or-n-p.
 
@@ -564,20 +568,6 @@ kommit.  Det verkade l
 mig igen.
 
 
-"Vill du bli medlem? (j eller n) 
-Mark set
- [6 times]
-error in process filter: Wrong type argument: number-or-marker-p, nil
-[20 times]"
-
-Jag tror jag hittat ett s�tt att provocera fram det felmeddelandet (om
-det har n�gon praktisk nytta vet jag inte...)
-
-Uttr�d ur fritt forum eller n�got annat h�gtrafikm�te.
-G m�tet
-svara j p� att bli medlem
-a uttr�d ur m�tet INNAN det hunnit cachas hos klienten. Modem eller
-att k�ra fr�n en annan kontinent underl�ttar nog h�r ;-)
 
 
 
diff --git a/src/commands1.el b/src/commands1.el
index eb58f6481dd044f5f8abbc277dc07b0ef59c5106..bc14cafe06657bf62ee3ea4c2075188683b88610 100644
--- a/src/commands1.el
+++ b/src/commands1.el
@@ -568,6 +568,7 @@ of the person."
     (cond ((null pers) (lyskom-insert-string 'error-fetching-person))
 	  ((null conf) (lyskom-insert-string 'error-fetching-conf))
           (passivate 
+           (lyskom-prefetch-cancel-prefetch-map (conf-stat->conf-no conf))
            (lyskom-format-insert 'unsubscribe-to conf)
            (set-membership-type->passive (membership->type mship) t)
            (setq reply (blocking-do 'set-membership-type
@@ -589,6 +590,9 @@ of the person."
 	     (read-list-delete-read-info (conf-stat->conf-no conf)
 					 lyskom-to-do-list)))
 	  (t
+           (when self
+             (lyskom-prefetch-cancel-prefetch-map (conf-stat->conf-no conf)))
+
 	   (if self
 	       (lyskom-format-insert 'unsubscribe-to conf)
 	     (lyskom-format-insert 'exclude-from pers conf))
diff --git a/src/commands2.el b/src/commands2.el
index 4543b0fcfb80e2cf6bca7d083faefe7413ce3501..fa8fd567deb4ef64786b90cc91f469d9ce2c681c 100644
--- a/src/commands2.el
+++ b/src/commands2.el
@@ -1816,7 +1816,8 @@ Return-value: 'no-session if there is no suitable session to switch to
                             (and ori (lyskom-get-string 'no-comments))
                             (and pro (lyskom-get-string 'closed))
                             (and ano (lyskom-get-string 'allow-anon))
-                            (and ope (lyskom-get-string 'allow-secret))))))
+                            (and ope (lyskom-get-string 'allow-secret))))
+                ", "))
     (let* ((open (lyskom-j-or-n-p (lyskom-get-string 'anyone-member) t))
 	   (secret (if (not open)
 		       (lyskom-j-or-n-p (lyskom-get-string 'secret-conf) t)))
diff --git a/src/compatibility.el b/src/compatibility.el
index 03a0a43174e6a126c62c16f532bcee2bcfa6a1b6..955642cb598e0cd51d06aae1171f888a5cd18bb2 100644
--- a/src/compatibility.el
+++ b/src/compatibility.el
@@ -279,6 +279,9 @@ string to search in."
   (make-local-variable 'enable-multibyte-characters)
   (setq enable-multibyte-characters arg))
 
+(lyskom-provide-function set-process-coding-system (proc &optional encoding decoding)
+  )
+
 ;;; ======================================================================
 ;;; Event stuff
 
diff --git a/src/prefetch.el b/src/prefetch.el
index b7f9a1169f89c4f479cd4b21c34730a6309ff951..c714c2a3589858956a864c9a9e425aa7b7da1892 100644
--- a/src/prefetch.el
+++ b/src/prefetch.el
@@ -83,6 +83,7 @@ lyskom-queue.
 		       For every membership-part we fetch the conf-stats
 		       before continuing with the next part.
 \('MEMBERSHIPISREAD\) -  Just sets the lyskom-membership-is-read variable to t.
+\('CANCELED . rest\)   Whatever it was, it has been canceled.
 
 
 See further documentation in the source code."
@@ -138,6 +139,27 @@ This is used to prevent the prefetch code to reenter itself.")
   (setq lyskom-membership-is-read 0))
 
 
+;;; =================================================================
+;;; Functions to cancel some prefetches
+
+(defun lyskom-prefetch-cancel-prefetch-map (conf-no &optional queue)
+;;;  (let ((prefetch-list (if queue
+;;;                           (lyskom-queue->all-entries queue)
+;;;                         (lyskom-stack->all-entries lyskom-prefetch-stack))))
+;;;    (lyskom-traverse el prefetch-list
+;;;      (cond
+;;;       ((lyskom-queue-p el)
+;;;        (lyskom-prefetch-cancel-prefetch-map conf-no el))
+;;;       ((not (consp el)) nil)
+;;;       ((or (and (eq (car el) 'MAP) 
+;;;                 (eq (conf-stat->conf-no (elt el 1)) conf-no))
+;;;            (and (eq (car el) 'CONFSTATFORMAP)
+;;;                 (eq (elt el 1) conf-no)))
+;;;        (setcar el 'CANCELED))
+;;;       )))
+)
+
+
 ;;;; ================================================================
 ;;; +++ lyskom-reset-prefetch  to be called on client reset.
 ;;;                            must restart everything.
@@ -378,6 +400,8 @@ process is started. Used to keep prefetch going."
     (while (not done)
       (setq element (lyskom-queue->first queue))
       (if (or (eq element 'DONE)
+              (and (consp element) 
+                   (eq (car element) 'CANCELED))
 	      (and (lyskom-queue-p element)
 		   (eq (lyskom-queue->first element) 'FINISHED)))
 	  (lyskom-queue-delete-first queue)
@@ -397,6 +421,8 @@ Return t if an element was prefetched, otherwise return nil."
     (while (not done)
       (setq element (lyskom-stack->top lyskom-prefetch-stack))
       (if (or (eq element 'DONE)
+              (and (consp element)
+                   (eq (car element) 'CANCELED))
 	      (and (lyskom-queue-p element)
 		   (eq (lyskom-queue->first element) 'FINISHED)))
 	  (lyskom-stack-pop lyskom-prefetch-stack)
@@ -409,6 +435,8 @@ Return t if an element was prefetched, otherwise return nil."
 	(cond
 	 ((eq element 'DONE) nil)
 	 ((eq element 'FINISHED) nil)
+         ((and (consp element)
+               (eq (car element) 'CANCELED)) nil)
 
 	 ;; A queue ==> check it out first.
 	 ((lyskom-queue-p element)
diff --git a/src/reading.el b/src/reading.el
index 4ddd4e6b8d56b21b5837134c51c216ec9f648982..f950271be60fcda70240c4f5b4c1d6d2c8981078 100644
--- a/src/reading.el
+++ b/src/reading.el
@@ -43,9 +43,9 @@
   "Takes a MAP and enters all its listed text-nos in the conference CONF-STAT.
 This works by modifying the lyskom-to-do-list which in some cases
 also means modifying the lyskom-reading-list. The zero text-nos are skipped."
-  (let ((list (lyskom-list-unread map membership)))
-    (if (null list)
-	nil
+  (let ((list (lyskom-list-unread map membership))
+        (mship (lyskom-try-get-membership (conf-stat->conf-no conf-stat))))
+    (when (and list mship)
       (read-list-enter-read-info
        (lyskom-create-read-info 
 	'CONF conf-stat
diff --git a/src/startup.el b/src/startup.el
index 2c5f7a30721c40cdfef0bb9326785ad4830f6041..d6c734df88f5d5cc8260bcb34ef402790f92eace 100644
--- a/src/startup.el
+++ b/src/startup.el
@@ -160,6 +160,7 @@ See lyskom-mode for details."
                        (setq proc (open-network-stream name buffer
                                                        proxy-host
                                                        proxy-port))
+                       (set-process-coding-system proc 'no-conversion 'iso-8859-1)
 
 		       ;; Install our filter.
 		       ;; Do this before we send the CONNECT command to
@@ -188,7 +189,8 @@ CONNECT %s:%d HTTP/1.0\r\n\
 		       ;; Now the proxy has connected to the kom server
 		       )
                       (t (setq proc (open-network-stream name buffer
-                                                         host port)))))
+                                                         host port))
+                         (set-process-coding-system proc 'no-conversion 'iso-8859-1))))
 	      (switch-to-buffer buffer)
 	      (lyskom-mode)		;Clearing lyskom-default...
 	      (setq lyskom-buffer buffer)