diff --git a/configure b/configure
index 0dc72584d9981a6d68ac7e8144aeebe4ba8bb64b..5f68becb8e7a49fe1497a7a96f7b1eb4d7ad914d 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.ac Revision: 227580 .
+# From configure.ac Revision: 232164 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.61 for asterisk 1.6.
 #
@@ -1076,6 +1076,8 @@ CONFIG_GMIME
 EDITLINE_LIB
 PBX_H323
 PBX_IXJUSER
+PBX_MSG_NOSIGNAL
+PBX_SO_NOSIGPIPE
 CONFIG_SDL
 CONFIG_GTK
 PKGCONFIG
@@ -43333,6 +43335,160 @@ fi
 
 
 
+# Used in res/res_pktccops
+
+    if test "x${PBX_MSG_NOSIGNAL}" != "x1"; then
+	{ echo "$as_me:$LINENO: checking for MSG_NOSIGNAL in sys/socket.h" >&5
+echo $ECHO_N "checking for MSG_NOSIGNAL in sys/socket.h... $ECHO_C" >&6; }
+	saved_cppflags="${CPPFLAGS}"
+	if test "x${MSG_NOSIGNAL_DIR}" != "x"; then
+	    MSG_NOSIGNAL_INCLUDE="-I${MSG_NOSIGNAL_DIR}/include"
+	fi
+	CPPFLAGS="${CPPFLAGS} ${MSG_NOSIGNAL_INCLUDE}"
+
+	cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/socket.h>
+int
+main ()
+{
+#if defined(MSG_NOSIGNAL)
+				int foo = 0;
+			        #else
+			        int foo = bar;
+			        #endif
+				0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+     { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+		PBX_MSG_NOSIGNAL=1
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MSG_NOSIGNAL 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MSG_NOSIGNAL_VERSION
+_ACEOF
+
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	   { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+	CPPFLAGS="${saved_cppflags}"
+    fi
+
+
+
+    if test "x${PBX_SO_NOSIGPIPE}" != "x1"; then
+	{ echo "$as_me:$LINENO: checking for SO_NOSIGPIPE in sys/socket.h" >&5
+echo $ECHO_N "checking for SO_NOSIGPIPE in sys/socket.h... $ECHO_C" >&6; }
+	saved_cppflags="${CPPFLAGS}"
+	if test "x${SO_NOSIGPIPE_DIR}" != "x"; then
+	    SO_NOSIGPIPE_INCLUDE="-I${SO_NOSIGPIPE_DIR}/include"
+	fi
+	CPPFLAGS="${CPPFLAGS} ${SO_NOSIGPIPE_INCLUDE}"
+
+	cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/socket.h>
+int
+main ()
+{
+#if defined(SO_NOSIGPIPE)
+				int foo = 0;
+			        #else
+			        int foo = bar;
+			        #endif
+				0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+     { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+		PBX_SO_NOSIGPIPE=1
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SO_NOSIGPIPE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SO_NOSIGPIPE_VERSION
+_ACEOF
+
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	   { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+	CPPFLAGS="${saved_cppflags}"
+    fi
+
+
+
 
     if test "x${PBX_SDL}" != "x1" -a "${USE_SDL}" != "no"; then
 	PBX_SDL=0
@@ -47636,6 +47792,8 @@ CONFIG_GMIME!$CONFIG_GMIME$ac_delim
 EDITLINE_LIB!$EDITLINE_LIB$ac_delim
 PBX_H323!$PBX_H323$ac_delim
 PBX_IXJUSER!$PBX_IXJUSER$ac_delim
+PBX_MSG_NOSIGNAL!$PBX_MSG_NOSIGNAL$ac_delim
+PBX_SO_NOSIGPIPE!$PBX_SO_NOSIGPIPE$ac_delim
 CONFIG_SDL!$CONFIG_SDL$ac_delim
 CONFIG_GTK!$CONFIG_GTK$ac_delim
 PKGCONFIG!$PKGCONFIG$ac_delim
@@ -47658,7 +47816,7 @@ PBX_SYSLOG!$PBX_SYSLOG$ac_delim
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 89; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 91; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/configure.ac b/configure.ac
index 9b502b5e1ed5a83599312793498896685d355299..56795e675a7b707d4568b1a4280fd2726de420da 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1706,6 +1706,10 @@ AC_CHECK_HEADER([linux/ixjuser.h], [PBX_IXJUSER=1], [PBX_IXJUSER=0], [
 				   ])
 AC_SUBST(PBX_IXJUSER)
 
+# Used in res/res_pktccops
+AST_C_DEFINE_CHECK([MSG_NOSIGNAL], [MSG_NOSIGNAL], [sys/socket.h])
+AST_C_DEFINE_CHECK([SO_NOSIGPIPE], [SO_NOSIGPIPE], [sys/socket.h])
+
 AST_EXT_TOOL_CHECK([SDL], [sdl-config])
 AST_EXT_LIB_CHECK([SDL_IMAGE], [SDL_image], [IMG_Load], [SDL_image.h], [${SDL_LIB}], [${SDL_INCLUDE}])
 AST_EXT_LIB_CHECK([FFMPEG], [avcodec], [sws_getContext], [ffmpeg/avcodec.h], [-lpthread -lz -lm])
diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in
index 706db3ce2a0a0f0a34255494f55a61608e914fbe..b1bc218f0963e192e43dc6ed0079717fd379b0c7 100644
--- a/include/asterisk/autoconfig.h.in
+++ b/include/asterisk/autoconfig.h.in
@@ -534,6 +534,12 @@
 /* Define to 1 if you have a working `mmap' system call. */
 #undef HAVE_MMAP
 
+/* Define if your system has the MSG_NOSIGNAL headers. */
+#undef HAVE_MSG_NOSIGNAL
+
+/* Define MSG_NOSIGNAL headers version */
+#undef HAVE_MSG_NOSIGNAL_VERSION
+
 /* Define to 1 if you have the `munmap' function. */
 #undef HAVE_MUNMAP
 
@@ -810,6 +816,12 @@
 /* Define to 1 if your system has soxmix application. */
 #undef HAVE_SOXMIX
 
+/* Define if your system has the SO_NOSIGPIPE headers. */
+#undef HAVE_SO_NOSIGPIPE
+
+/* Define SO_NOSIGPIPE headers version */
+#undef HAVE_SO_NOSIGPIPE_VERSION
+
 /* Define if your system has the SPANDSP headers. */
 #undef HAVE_SPANDSP
 
diff --git a/res/res_pktccops.c b/res/res_pktccops.c
index 60e5c4efd9f358cb0efbf94e4367d4cf34f48927..cdd464ab82f8cab24518f2beab54285a5ebffdad 100644
--- a/res/res_pktccops.c
+++ b/res/res_pktccops.c
@@ -378,7 +378,7 @@ static int cops_getmsg (int sfd, struct copsmsg *recmsg)
 static int cops_sendmsg (int sfd, struct copsmsg * sendmsg)
 {
 	char *buf;
-	int bufpos;
+	int bufpos, res;
 	struct pktcobj *pobject;
 	
 	if (sfd < 0) {
@@ -425,11 +425,17 @@ static int cops_sendmsg (int sfd, struct copsmsg * sendmsg)
 	}
 	
 	errno = 0;
-	if (send(sfd, buf, sendmsg->length, MSG_NOSIGNAL | MSG_DONTWAIT ) == -1) {
+#ifdef HAVE_MSG_NOSIGNAL
+#define	SENDFLAGS	MSG_NOSIGNAL | MSG_DONTWAIT
+#else
+#define	SENDFLAGS	MSG_DONTWAIT
+#endif
+	if (send(sfd, buf, sendmsg->length, SENDFLAGS) == -1) {
 		ast_log(LOG_WARNING, "COPS: Send failed errno=%i\n", errno);
 		free(buf);
 		return -2;
 	}
+#undef SENDFLAGS
 	free(buf);
 	return 0;
 }
@@ -636,6 +642,9 @@ static int cops_connect(char *host, char *port)
 	struct addrinfo hints;
 	struct addrinfo *rp;
 	struct addrinfo *result;
+#ifdef HAVE_SO_NOSIGPIPE
+	int trueval = 1;
+#endif
 
 	memset(&hints, 0, sizeof(struct addrinfo));
 
@@ -657,6 +666,9 @@ static int cops_connect(char *host, char *port)
 		}
 		flags = fcntl(sfd, F_GETFL);
 		fcntl(sfd, F_SETFL, flags | O_NONBLOCK);
+#ifdef HAVE_SO_NOSIGPIPE
+		setsockopt(sfd, SO_SOCKET, SO_NOSIGPIPE, &trueval, sizeof(trueval));
+#endif
 		connect(sfd, rp->ai_addr, rp->ai_addrlen);
 		if (sfd == -1) {
 			ast_log(LOG_WARNING, "Failed connect\n");