Only in /home/vdbergh/SRC/shout-python-0.2patchmaker/: build
diff -u /home/vdbergh/shout-python-0.2/example.py /home/vdbergh/SRC/shout-python-0.2patchmaker/example.py
--- /home/vdbergh/shout-python-0.2/example.py	2005-02-14 20:20:15.000000000 +0100
+++ /home/vdbergh/SRC/shout-python-0.2patchmaker/example.py	2008-08-16 15:50:07.000000000 +0200
@@ -14,6 +14,7 @@
 # s.user = 'source'
 s.password = 'hackme'
 s.mount = "/pyshout"
+s.nonblocking=True
 # s.format = 'vorbis' | 'mp3'
 # s.protocol = 'http' | 'xaudiocast' | 'icy'
 # s.name = ''
@@ -25,7 +26,13 @@
 #   shout.SHOUT_AI_CHANNELS, shout.SHOUT_AI_QUALITY)
 
 s.open()
-
+while True:
+    status=s.get_connected()
+    if status==shout.SHOUTERR_CONNECTED:
+        break
+    print "Waiting to be connected. Sleeping."
+    time.sleep(1)
+    
 total = 0
 st = time.time()
 for fa in sys.argv[1:]:
diff -u /home/vdbergh/shout-python-0.2/shout.c /home/vdbergh/SRC/shout-python-0.2patchmaker/shout.c
--- /home/vdbergh/shout-python-0.2/shout.c	2005-02-14 21:04:19.000000000 +0100
+++ /home/vdbergh/SRC/shout-python-0.2patchmaker/shout.c	2008-08-16 09:49:17.000000000 +0200
@@ -57,6 +57,7 @@
 
 static PyObject* pshoutobj_open(ShoutObject* self);
 static PyObject* pshoutobj_close(ShoutObject* self);
+static PyObject* pshoutobj_get_connected(ShoutObject* self);
 static PyObject* pshoutobj_send(ShoutObject* self, PyObject* args);
 static PyObject* pshoutobj_sync(ShoutObject* self);
 static PyObject* pshoutobj_delay(ShoutObject* self);
@@ -81,6 +82,7 @@
   "\"host\", \"port\", \"password\" and \"mount\" must be specified).\n\n"
   "Methods:\n"
   "            open() - connect to server\n"
+  "   get_connected() - monitor connection status in nonblocking mode\n"
   "           close() - disconnect from server\n"
   "        send(data) - send audio data to server\n"
   "            sync() - sleep until server needs more data. This is equal to\n"
@@ -185,6 +187,8 @@
     "Connect to server." },
   { "close", (PyCFunction)pshoutobj_close, METH_NOARGS,
     "Close connection to server." },
+  { "get_connected", (PyCFunction)pshoutobj_get_connected, METH_NOARGS,
+    "Check for connection progress." },
   { "send", (PyCFunction)pshoutobj_send, METH_VARARGS,
     "Send audio data to server." },
   { "sync", (PyCFunction)pshoutobj_sync, METH_NOARGS,
@@ -363,9 +367,12 @@
 }
 
 static PyObject* pshoutobj_open(ShoutObject* self) {
-  if (shout_open(self->conn) != SHOUTERR_SUCCESS) {
+  int ret;
+  ret=shout_open(self->conn);
+  if (!((ret == SHOUTERR_SUCCESS)||
+        ((ret==SHOUTERR_BUSY) && shout_get_nonblocking(self->conn)))) {
     PyErr_SetString(ShoutError, shout_get_error(self->conn));
-
+    
     return NULL;
   }
 
@@ -404,6 +411,10 @@
   return Py_BuildValue("i", 1);
 }
 
+static PyObject* pshoutobj_get_connected(ShoutObject* self) {
+  return Py_BuildValue("i", shout_get_connected(self->conn));
+}
+
 static PyObject* pshoutobj_delay(ShoutObject* self) {
   return Py_BuildValue("i", shout_delay(self->conn));
 }
