MQTTs with Ethernet_Generic.h (ESP32)

I have the problem connect ESP32 Ethernet using Ethernet_Gerneric.h library I Can't Ethernet.h because I want to host a webserver on my ESP32 and EthernetServer class in Ethnert.h doesn't have enough to host my Webserver ?

my code

/* Key exchanges using a PSK */
#include <SPI.h>
#include <WiFi.h>
//#include <Ethernet.h>
#include <Ethernet_Generic.h>
#include <PubSubClient.h>

#include <ESP_SSLClient.h>

const char* mqtt_server = "test.mosquitto.org";
const int mqtt_port = 8883;
const char* mqtt_user = "mqtt_iot";
const char* mqtt_password = "Aa04£8+XP]#q";
char mqtt_client_id[20]= "hi";
const char* topic = "smart/home/routing";
const char* reconnected = "mqtt/sensor/routing";

EthernetClient basic_client;

ESP_SSLClient ssl_client;

PubSubClient client(ssl_client);
bool go = true;
void setup() {
Serial.begin(115200);
delay(1000);
pinMode(13,OUTPUT);
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEF };
char wifimac[17];
String wifistring = WiFi.macAddress();
for (int i = 0; i < 17; i++)
wifimac[i] = wifistring[i];
char *pos = wifimac;
for (size_t count = 0; count < 6; count++) {
sscanf(pos, "%2hhx", &mac[count]);
pos += 3;
}
Serial.println("Begin Ethernet");
for(int i=0;i<6;i++){
Serial.print(" 0x");
Serial.print(mac[i],HEX);
}
Serial.println();

Ethernet.init(5); // MKR ETH Shield

if (Ethernet.begin(mac)) { // Dynamic IP setup
Serial.println("DHCP OK!");
}else{
Serial.println("Failed to configure Ethernet using DHCP");
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :(");
while (true) {
delay(1); // do nothing, no point running without Ethernet hardware
}
}
if (Ethernet.linkStatus() == LinkOFF) {
Serial.println("Ethernet cable is not connected.");
while(true){
delay(1);
}
}
Serial.println("Ethernet cable is connected.");
IPAddress ip(192,168,2,2);
IPAddress dns(192,168,1,1);
IPAddress gw(192,168,2,1);
IPAddress sn(255,255,255,0);
Ethernet.begin(mac, ip, dns, gw, sn);
Serial.println("STATIC OK!");

}
delay(500);
// Serial.print("MAC : ");
// Serial.println(Ethernet.macAdress());
Serial.print("Local IP : ");
Serial.println(Ethernet.localIP());
Serial.print("Subnet Mask : ");
Serial.println(Ethernet.subnetMask());
Serial.print("Gateway IP : ");
Serial.println(Ethernet.gatewayIP());
Serial.print("DNS Server : ");
Serial.println(Ethernet.dnsServerIP());
Serial.println("Ethernet Successfully Initialized");

ssl_client.setInsecure();
ssl_client.setBufferSizes(1024 /* rx /, 512 / tx */);
ssl_client.setDebugLevel(2);
//ssl_client.setCACert(rootCA);
ssl_client.setClient(&basic_client);

//espClient.setPreSharedKey(pskIdent, psKey);
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);

}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived on topic: ");
Serial.print(topic);
Serial.print(". Message: ");
String messageTemp;

for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
messageTemp += (char)payload[i];
}
Serial.println();

if(messageTemp == "1"){
digitalWrite(13,HIGH);
}
else if(messageTemp == "0"){
digitalWrite(13,LOW);
}
}
void reconnect() {
while (!client.connected()) {
if (client.connect(mqtt_client_id)) {
//client.subscribe("your_topic");
Serial.println("Connected to MQTT broker");
client.publish(reconnected,"Reconnected");
client.subscribe(topic);
} else {
int rc = client.state();
Serial.print("Failed to connect to MQTT broker, rc=");
Serial.print(rc);
Serial.println(" Trying again in 5 seconds");
delay(5000);
}
}
}

void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
}

error when connecting to MQTTs Server
'

ERROR.mUpdateEngine: Error writing to basic client.

WARN.mRunUntil: Terminating with write error.

ERROR.mConnectSSL: Failed to initlalize the SSL layer.

ERROR.mConnectSSL: Unknown error code.

Failed to connect to MQTT broker, rc=-2 Trying again in 5 seconds
'

Solution Edit Ethernet_Generic library have file name "EthernetClient_Impl.h"
line 135: internetClient::write(...)
add "if(Ethernet.socketSend(_sockindex,buf,size)) return size;"
below if(_sockindex >= MAX_SOCK_NUM) return 0;"