[vz-dev] vz absturz bei defekter SML Message (patch)

Thorben Thuermer r00t at constancy.org
Mon Apr 8 12:23:00 CEST 2013


On Mon, 08 Apr 2013 11:51:37 +0200
Peter Evertz <leo2 at pec.homeip.net> wrote:
> Ich habe einen kleinen Fehler im vzlogger gefunden: Manchmal sind die 
> SML Messages kaputt und sml_transport_read liefert 0.

das gleiche htte ich schonmal in der C-version gefixt...
http://volkszaehler.org/pipermail/volkszaehler-dev/2012-October/002044.html
damals war mir die C++-version noch weitgehend unbekannt,
und ich hatte das deswegen leider nicht portiert.

beachte, dass bytes nicht nur > 0, sondern >16 sein muss, wegen der
verwendung von "bytes - 16" weiter unten.

am besten schickst du einen pull-request auf github, dann kann justin das
mergen ohne einen texteditor benutzen zu muessen ;)
(und am besten sowohl fuer das repostitory von volkszaehler als auch das von
 mysmartgrid. bis endlich mal geklaert ist welches das einzig wahre ist ;) )
ansonsten kann ich das auch erledigen.

- Thorben

> --- a/src/protocols/MeterSML.cpp
> +++ b/src/protocols/MeterSML.cpp
> @@ -152,6 +152,7 @@ ssize_t MeterSML::read(std::vector<Reading> &rds, 
> size_t n)
> 
>          /* wait until a we receive a new datagram from the meter 
> (blocking read)
>          bytes = sml_transport_read(_fd, buffer, SML_BUFFER_LEN);
> +       if(bytes == 0 ) return 0;
> 
>          /* parse SML file & stripping escape sequences */
>          file = sml_file_parse(buffer + 8, bytes - 16);


More information about the volkszaehler-dev mailing list