import socket, traceback, sys

_realrealsocket = socket._realsocket
_realclosedsocket = socket._closedsocket

_stream = sys.stderr
#_stream = open('socket.log')

def _socket(family, type, proto):
    _sock = _realrealsocket(family, type, proto)
    stack = traceback.format_stack()
    print >>_stream, "OPEN:", repr(_sock), stack
    return _sock

def _close():
    stack = traceback.format_stack()
    print >>_stream, "CLOSE:", stack
    return _realclosedsocket()

socket._realsocket = _socket
socket._closedsocket = _close
    
