private SendResult pushPacketCommon(OutgoingPacket packet)
	{
	    if (PhysicalConnection.notConnected(status))
	    {
	        return SendResult.SendResult_NotOK;
	    }

	    int iWrittenBytes = 0;

	    // Use the protocol the convert the packet into bytes
	    Protocol protocol = listenerOption.getProtocol();
	    Result iResult = protocol.serializeOutgoingPacket(packet, outBuffer, iWrittenBytes);

	    if (iResult != Result.Success)
	    {
	    	server.getServerStats().addToCumul(ServerStats.Measures.BandwidthRejection, iWrittenBytes);
	        return iResult == Result.eInsufficientBuffer ? 
	        		SendResult.SendResult_Retry : SendResult.SendResult_NotOK;
	    }

	    server.getServerStats().addToCumul(ServerStats.Measures.BandwidthOutstanding, iWrittenBytes);
	    Service service = server.getDispatcher().getCurrentService();
	    if (service != null)
	    {
	    	server.getServerStats().addToDistribution(
	    			ServerStats.Measures.BandwidthOutboundVolPerRequest, service.getName(), iWrittenBytes);
	    }

	    if (!writeInProgress)
	    {
	        return writeBytes() ? SendResult.SendResult_OK : SendResult.SendResult_NotOK;
	    }

	    return SendResult.SendResult_OK;
	}